Issue #212 - Further fix to set MixedContent in some cases.
In certain circumstances a leading space has to be preverved to allow it to be used to create a text space node to insert before this element to preserve the view in a browser. And added a note asking why is ParseTag called with a hardcoded IgnoreWhitespace when some effort above has set the mode variable to MixedContent in certain cases, but need to think about this 2nd change. Also added some MSVC Debug output when this leading text is used to insert such a created text node before the element just to be reminded of this special event.
This commit is contained in:
parent
a278b04a19
commit
326f2414fd
14
src/parser.c
14
src/parser.c
|
@ -516,6 +516,10 @@ static void TrimInitialSpace( TidyDocImpl* doc, Node *element, Node *text )
|
||||||
node->end = element->start;
|
node->end = element->start;
|
||||||
lexer->lexbuf[node->start] = ' ';
|
lexer->lexbuf[node->start] = ' ';
|
||||||
TY_(InsertNodeBeforeElement)(element ,node);
|
TY_(InsertNodeBeforeElement)(element ,node);
|
||||||
|
#if !defined(NDEBUG) && defined(_MSC_VER)
|
||||||
|
SPRTF("TrimInitialSpace: Created text node, inserted before <%s>\n",
|
||||||
|
(element->element ? element->element : "unknown"));
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -906,6 +910,13 @@ void TY_(ParseBlock)( TidyDocImpl* doc, Node *element, GetTokenMode mode)
|
||||||
{
|
{
|
||||||
mode = IgnoreWhitespace;
|
mode = IgnoreWhitespace;
|
||||||
}
|
}
|
||||||
|
else if (mode == IgnoreWhitespace)
|
||||||
|
{
|
||||||
|
/* Issue #212 - Further fix in case ParseBlock() is called with 'IgnoreWhitespace'
|
||||||
|
when such a leading space may need to be inserted before this element to
|
||||||
|
preverve the browser view */
|
||||||
|
mode = MixedContent;
|
||||||
|
}
|
||||||
|
|
||||||
while ((node = TY_(GetToken)(doc, mode /*MixedContent*/)) != NULL)
|
while ((node = TY_(GetToken)(doc, mode /*MixedContent*/)) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -1355,6 +1366,9 @@ void TY_(ParseBlock)( TidyDocImpl* doc, Node *element, GetTokenMode mode)
|
||||||
if (node->implicit)
|
if (node->implicit)
|
||||||
TY_(ReportError)(doc, element, node, INSERTING_TAG );
|
TY_(ReportError)(doc, element, node, INSERTING_TAG );
|
||||||
|
|
||||||
|
/* Issue #212 - WHY is this hard coded to 'IgnoreWhitespace' while an
|
||||||
|
effort has been made above to set a 'MixedContent' mode in some cases?
|
||||||
|
WHY IS THE 'mode' VARIABLE NOT USED HERE???? */
|
||||||
ParseTag( doc, node, IgnoreWhitespace /*MixedContent*/ );
|
ParseTag( doc, node, IgnoreWhitespace /*MixedContent*/ );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue