/* push a copy of an inline node onto stack but don't push if implicit or OBJECT or APPLET (implicit tags are ones generated from the istack) One issue arises with pushing inlines when the tag is already pushed. For instance: <p><em>text <p><em>more text Shouldn't be mapped to <p><em>text</em></p> <p><em><em>more text</em></em> */ void PushInline( TidyDocImpl* doc, Node *node ) { Lexer* lexer = doc->lexer; IStack *istack; if (node->implicit) return; if ( !IsNodePushable(node) ) return; if ( !nodeIsFONT(node) && IsPushed(doc, node) ) return; /* make sure there is enough space for the stack */ if (lexer->istacksize + 1 > lexer->istacklength) { if (lexer->istacklength == 0) lexer->istacklength = 6; /* this is perhaps excessive */ lexer->istacklength = lexer->istacklength * 2; lexer->istack = (IStack *)MemRealloc(lexer->istack, sizeof(IStack)*(lexer->istacklength)); } istack = &(lexer->istack[lexer->istacksize]); istack->tag = node->tag; istack->element = tmbstrdup(node->element); istack->attributes = DupAttrs( doc, node->attributes ); ++(lexer->istacksize); }
Bool TIDY_CALL tidyNodeIsFONT( TidyNode tnod ) { return nodeIsFONT( tidyNodeToImpl(tnod) ); }