From 48efad6a2bd3b8adb34846fbffe81adbbc2f8a07 Mon Sep 17 00:00:00 2001 From: Geoff McLane Date: Sun, 11 Oct 2020 17:51:06 +0200 Subject: [PATCH] Is. #839 - 2nd look - add new message for 'blank' title This is a compromise - 1. Keep insertion of a blank title tag, if none. 2. Add new warn if title tag is blank, in html5 modified: include/tidyenum.h modified: src/language_en.h modified: src/message.c modified: src/parser.c --- include/tidyenum.h | 3 ++- src/language_en.h | 1 + src/message.c | 2 ++ src/parser.c | 11 ++++++++++- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/include/tidyenum.h b/include/tidyenum.h index 3daee5b..76ae07d 100644 --- a/include/tidyenum.h +++ b/include/tidyenum.h @@ -282,7 +282,8 @@ extern "C" { FN(VENDOR_SPECIFIC_CHARS) \ FN(WHITE_IN_URI) \ FN(XML_DECLARATION_DETECTED) \ - FN(XML_ID_SYNTAX) + FN(XML_ID_SYNTAX) \ + FN(BLANK_TITLE_ELEMENT) /** These are report messages added by Tidy's accessibility module. diff --git a/src/language_en.h b/src/language_en.h index 8d0eb7a..f93324e 100644 --- a/src/language_en.h +++ b/src/language_en.h @@ -2055,6 +2055,7 @@ static languageDefinition language_en = { whichPluralForm_en, { { WHITE_IN_URI, 0, "%s discarding whitespace in URI reference" }, { XML_DECLARATION_DETECTED, 0, "An XML declaration was detected. Did you mean to use input-xml?" }, { XML_ID_SYNTAX, 0, "%s ID \"%s\" uses XML ID syntax" }, + { BLANK_TITLE_ELEMENT, 0, "blank 'title' element" }, /*************************************** diff --git a/src/message.c b/src/message.c index ee2e6c6..de0124b 100644 --- a/src/message.c +++ b/src/message.c @@ -372,6 +372,7 @@ static struct _dispatchTable { { WHITE_IN_URI, TidyWarning, formatAttributeReport }, { XML_DECLARATION_DETECTED, TidyWarning, formatStandard }, { XML_ID_SYNTAX, TidyWarning, formatAttributeReport }, + { BLANK_TITLE_ELEMENT, TidyWarning, formatStandard }, { APPLET_MISSING_ALT, TidyAccess, formatAccessReport }, { AREA_MISSING_ALT, TidyAccess, formatAccessReport }, @@ -819,6 +820,7 @@ TidyMessageImpl *formatStandard(TidyDocImpl* doc, Node *element, Node *node, uin case NESTED_QUOTATION: case SUSPECTED_MISSING_QUOTE: case XML_DECLARATION_DETECTED: + case BLANK_TITLE_ELEMENT: return TY_(tidyMessageCreateWithNode)(doc, rpt, code, level ); case ELEMENT_NOT_EMPTY: diff --git a/src/parser.c b/src/parser.c index 8569ed5..cda3200 100644 --- a/src/parser.c +++ b/src/parser.c @@ -4713,7 +4713,8 @@ void TY_(ParseDocument)(TidyDocImpl* doc) TY_(ParseHTML)(doc, html, IgnoreWhitespace); } - if (!TY_(FindTITLE)(doc)) + node = TY_(FindTITLE)(doc); + if (!node) { Node* head = TY_(FindHEAD)(doc); /* #72, avoid MISSING_TITLE_ELEMENT if show-body-only (but allow InsertNodeAtEnd to avoid new warning) */ @@ -4723,6 +4724,14 @@ void TY_(ParseDocument)(TidyDocImpl* doc) } TY_(InsertNodeAtEnd)(head, TY_(InferredTag)(doc, TidyTag_TITLE)); } + else if (!node->content && !showingBodyOnly(doc)) + { + /* Is #839 - warn node is blank in HTML5 */ + if (TY_(IsHTML5Mode)(doc)) + { + TY_(Report)(doc, node, NULL, BLANK_TITLE_ELEMENT); + } + } AttributeChecks(doc, &doc->root); ReplaceObsoleteElements(doc, &doc->root);