diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2019-12-25 09:10:03 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2019-12-25 09:10:03 (GMT) |
commit | ceed76634417c6d9db398a4297b361af97f27594 (patch) | |
tree | c12d6f4b08a39fbb0e5310596f509e200ef7bea9 /src/docparser.cpp | |
parent | 6040558a607bfb7c22931d84637b430153e76188 (diff) | |
parent | 80f1f380f199f470ef9678a413d537feba68d87a (diff) | |
download | Doxygen-ceed76634417c6d9db398a4297b361af97f27594.zip Doxygen-ceed76634417c6d9db398a4297b361af97f27594.tar.gz Doxygen-ceed76634417c6d9db398a4297b361af97f27594.tar.bz2 |
Merge branch 'feature/bug_style_change' of https://github.com/albert-github/doxygen into albert-github-feature/bug_style_change
Diffstat (limited to 'src/docparser.cpp')
-rw-r--r-- | src/docparser.cpp | 134 |
1 files changed, 70 insertions, 64 deletions
diff --git a/src/docparser.cpp b/src/docparser.cpp index 44af4f0..a41fad6 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -882,10 +882,10 @@ static int handleStyleArgument(DocNode *parent,QList<DocNode> &children, * encountered. */ static void handleStyleEnter(DocNode *parent,QList<DocNode> &children, - DocStyleChange::Style s,const HtmlAttribList *attribs) + DocStyleChange::Style s,const QCString tagName,const HtmlAttribList *attribs) { DBG(("HandleStyleEnter\n")); - DocStyleChange *sc= new DocStyleChange(parent,g_nodeStack.count(),s,TRUE,attribs); + DocStyleChange *sc= new DocStyleChange(parent,g_nodeStack.count(),s,tagName,TRUE,attribs); children.append(sc); g_styleStack.push(sc); } @@ -899,6 +899,7 @@ static void handleStyleLeave(DocNode *parent,QList<DocNode> &children, DBG(("HandleStyleLeave\n")); if (g_styleStack.isEmpty() || // no style change g_styleStack.top()->style()!=s || // wrong style change + g_styleStack.top()->tagName()!=QCString(tagName).lower() || // wrong style change g_styleStack.top()->position()!=g_nodeStack.count() // wrong position ) { @@ -907,10 +908,15 @@ static void handleStyleLeave(DocNode *parent,QList<DocNode> &children, warn_doc_error(g_fileName,doctokenizerYYlineno,"found </%s> tag without matching <%s>", qPrint(tagName),qPrint(tagName)); } + else if (g_styleStack.top()->tagName()!=QCString(tagName).lower()) + { + warn_doc_error(g_fileName,doctokenizerYYlineno,"found </%s> tag while expecting </%s>", + qPrint(tagName),qPrint(g_styleStack.top()->tagName())); + } else if (g_styleStack.top()->style()!=s) { warn_doc_error(g_fileName,doctokenizerYYlineno,"found </%s> tag while expecting </%s>", - qPrint(tagName),qPrint(g_styleStack.top()->styleString())); + qPrint(tagName),qPrint(g_styleStack.top()->tagName())); } else { @@ -920,7 +926,7 @@ static void handleStyleLeave(DocNode *parent,QList<DocNode> &children, } else // end the section { - DocStyleChange *sc= new DocStyleChange(parent,g_nodeStack.count(),s,FALSE); + DocStyleChange *sc= new DocStyleChange(parent,g_nodeStack.count(),s,g_styleStack.top()->tagName(),FALSE); children.append(sc); g_styleStack.pop(); } @@ -937,7 +943,7 @@ static void handlePendingStyleCommands(DocNode *parent,QList<DocNode> &children) DocStyleChange *sc = g_styleStack.top(); while (sc && sc->position()>=g_nodeStack.count()) { // there are unclosed style modifiers in the paragraph - children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),FALSE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),sc->style(),sc->tagName(),FALSE)); g_initialStyleStack.push(sc); g_styleStack.pop(); sc = g_styleStack.top(); @@ -950,7 +956,7 @@ static void handleInitialStyleCommands(DocPara *parent,QList<DocNode> &children) DocStyleChange *sc; while ((sc=g_initialStyleStack.pop())) { - handleStyleEnter(parent,children,sc->style(),&sc->attribs()); + handleStyleEnter(parent,children,sc->style(),sc->tagName(),&sc->attribs()); } } @@ -1032,7 +1038,7 @@ static void handleUnclosedStyleCommands() handleUnclosedStyleCommands(); warn_doc_error(g_fileName,doctokenizerYYlineno, "end of comment block while expecting " - "command </%s>",qPrint(sc->styleString())); + "command </%s>",qPrint(sc->tagName())); } } @@ -1388,9 +1394,9 @@ reparsetoken: break; case CMD_EMPHASIS: { - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,tokenName,TRUE)); tok=handleStyleArgument(parent,children,tokenName); - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Italic,tokenName,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok==TK_NEWPARA) goto handlepara; else if (tok==TK_WORD || tok==TK_HTMLTAG) @@ -1402,9 +1408,9 @@ reparsetoken: break; case CMD_BOLD: { - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,TRUE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,tokenName,TRUE)); tok=handleStyleArgument(parent,children,tokenName); - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Bold,tokenName,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok==TK_NEWPARA) goto handlepara; else if (tok==TK_WORD || tok==TK_HTMLTAG) @@ -1416,9 +1422,9 @@ reparsetoken: break; case CMD_CODE: { - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,TRUE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,tokenName,TRUE)); tok=handleStyleArgument(parent,children,tokenName); - children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,FALSE)); + children.append(new DocStyleChange(parent,g_nodeStack.count(),DocStyleChange::Code,tokenName,FALSE)); if (tok!=TK_WORD) children.append(new DocWhiteSpace(parent," ")); if (tok==TK_NEWPARA) goto handlepara; else if (tok==TK_WORD || tok==TK_HTMLTAG) @@ -1539,7 +1545,7 @@ reparsetoken: case HTML_BOLD: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Bold,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Bold,tokenName,&g_token->attribs); } else { @@ -1549,7 +1555,7 @@ reparsetoken: case HTML_STRIKE: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Strike,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Strike,tokenName,&g_token->attribs); } else { @@ -1559,7 +1565,7 @@ reparsetoken: case HTML_DEL: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Del,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Del,tokenName,&g_token->attribs); } else { @@ -1569,7 +1575,7 @@ reparsetoken: case HTML_UNDERLINE: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Underline,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Underline,tokenName,&g_token->attribs); } else { @@ -1579,7 +1585,7 @@ reparsetoken: case HTML_INS: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Ins,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Ins,tokenName,&g_token->attribs); } else { @@ -1590,7 +1596,7 @@ reparsetoken: case XML_C: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Code,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Code,tokenName,&g_token->attribs); } else { @@ -1600,7 +1606,7 @@ reparsetoken: case HTML_EMPHASIS: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Italic,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Italic,tokenName,&g_token->attribs); } else { @@ -1610,7 +1616,7 @@ reparsetoken: case HTML_SUB: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Subscript,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Subscript,tokenName,&g_token->attribs); } else { @@ -1620,7 +1626,7 @@ reparsetoken: case HTML_SUP: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Superscript,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Superscript,tokenName,&g_token->attribs); } else { @@ -1630,7 +1636,7 @@ reparsetoken: case HTML_CENTER: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Center,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Center,tokenName,&g_token->attribs); } else { @@ -1640,7 +1646,7 @@ reparsetoken: case HTML_SMALL: if (!g_token->endTag) { - handleStyleEnter(parent,children,DocStyleChange::Small,&g_token->attribs); + handleStyleEnter(parent,children,DocStyleChange::Small,tokenName,&g_token->attribs); } else { @@ -5386,21 +5392,21 @@ int DocPara::handleCommand(const QCString &cmdName, const int tok) warn_doc_error(g_fileName,doctokenizerYYlineno,"Found unknown command '\\%s'",qPrint(cmdName)); break; case CMD_EMPHASIS: - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,cmdName,TRUE)); retval=handleStyleArgument(this,m_children,cmdName); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,cmdName,FALSE)); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," ")); break; case CMD_BOLD: - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,TRUE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,cmdName,TRUE)); retval=handleStyleArgument(this,m_children,cmdName); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,FALSE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Bold,cmdName,FALSE)); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," ")); break; case CMD_CODE: - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,TRUE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,cmdName,TRUE)); retval=handleStyleArgument(this,m_children,cmdName); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,FALSE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,cmdName,FALSE)); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," ")); break; case CMD_BSLASH: @@ -5928,19 +5934,19 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta } break; case HTML_BOLD: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Bold,tagName,&g_token->attribs); break; case HTML_STRIKE: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Strike,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Strike,tagName,&g_token->attribs); break; case HTML_DEL: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Del,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Del,tagName,&g_token->attribs); break; case HTML_UNDERLINE: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Underline,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Underline,tagName,&g_token->attribs); break; case HTML_INS: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Ins,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Ins,tagName,&g_token->attribs); break; case HTML_CODE: if (g_token->emptyTag) break; @@ -5953,33 +5959,33 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta } else // normal HTML markup { - handleStyleEnter(this,m_children,DocStyleChange::Code,&g_token->attribs); + handleStyleEnter(this,m_children,DocStyleChange::Code,tagName,&g_token->attribs); } break; case HTML_EMPHASIS: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Italic,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Italic,tagName,&g_token->attribs); break; case HTML_DIV: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Div,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Div,tagName,&g_token->attribs); break; case HTML_SPAN: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Span,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Span,tagName,&g_token->attribs); break; case HTML_SUB: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Subscript,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Subscript,tagName,&g_token->attribs); break; case HTML_SUP: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Superscript,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Superscript,tagName,&g_token->attribs); break; case HTML_CENTER: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Center,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Center,tagName,&g_token->attribs); break; case HTML_SMALL: - if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Small,&g_token->attribs); + if (!g_token->emptyTag) handleStyleEnter(this,m_children,DocStyleChange::Small,tagName,&g_token->attribs); break; case HTML_PRE: if (g_token->emptyTag) break; - handleStyleEnter(this,m_children,DocStyleChange::Preformatted,&g_token->attribs); + handleStyleEnter(this,m_children,DocStyleChange::Preformatted,tagName,&g_token->attribs); setInsidePreformatted(TRUE); doctokenizerYYsetInsidePre(TRUE); break; @@ -6086,7 +6092,7 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta } break; case XML_C: - handleStyleEnter(this,m_children,DocStyleChange::Code,&g_token->attribs); + handleStyleEnter(this,m_children,DocStyleChange::Code,tagName,&g_token->attribs); break; case XML_PARAM: case XML_TYPEPARAM: @@ -6122,9 +6128,9 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta if (findAttribute(tagHtmlAttribs,"name",¶mName)) { //printf("paramName=%s\n",paramName.data()); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,TRUE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,tagName,TRUE)); m_children.append(new DocWord(this,paramName)); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,FALSE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Italic,tagName,FALSE)); if (retval!=TK_WORD) m_children.append(new DocWhiteSpace(this," ")); } else @@ -6214,9 +6220,9 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta bool inSeeBlock = g_inSeeBlock; g_token->name = cref; g_inSeeBlock = TRUE; - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,TRUE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,tagName,TRUE)); handleLinkedWord(this,m_children,TRUE); - m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,FALSE)); + m_children.append(new DocStyleChange(this,g_nodeStack.count(),DocStyleChange::Code,tagName,FALSE)); g_inSeeBlock = inSeeBlock; } else @@ -6354,46 +6360,46 @@ int DocPara::handleHtmlEndTag(const QCString &tagName) // } // break; case HTML_BOLD: - handleStyleLeave(this,m_children,DocStyleChange::Bold,"b"); + handleStyleLeave(this,m_children,DocStyleChange::Bold,tagName); break; case HTML_STRIKE: - handleStyleLeave(this,m_children,DocStyleChange::Strike,"strike"); + handleStyleLeave(this,m_children,DocStyleChange::Strike,tagName); break; case HTML_DEL: - handleStyleLeave(this,m_children,DocStyleChange::Del,"del"); + handleStyleLeave(this,m_children,DocStyleChange::Del,tagName); break; case HTML_UNDERLINE: - handleStyleLeave(this,m_children,DocStyleChange::Underline,"u"); + handleStyleLeave(this,m_children,DocStyleChange::Underline,tagName); break; case HTML_INS: - handleStyleLeave(this,m_children,DocStyleChange::Ins,"ins"); + handleStyleLeave(this,m_children,DocStyleChange::Ins,tagName); break; case HTML_CODE: - handleStyleLeave(this,m_children,DocStyleChange::Code,"code"); + handleStyleLeave(this,m_children,DocStyleChange::Code,tagName); break; case HTML_EMPHASIS: - handleStyleLeave(this,m_children,DocStyleChange::Italic,"em"); + handleStyleLeave(this,m_children,DocStyleChange::Italic,tagName); break; case HTML_DIV: - handleStyleLeave(this,m_children,DocStyleChange::Div,"div"); + handleStyleLeave(this,m_children,DocStyleChange::Div,tagName); break; case HTML_SPAN: - handleStyleLeave(this,m_children,DocStyleChange::Span,"span"); + handleStyleLeave(this,m_children,DocStyleChange::Span,tagName); break; case HTML_SUB: - handleStyleLeave(this,m_children,DocStyleChange::Subscript,"sub"); + handleStyleLeave(this,m_children,DocStyleChange::Subscript,tagName); break; case HTML_SUP: - handleStyleLeave(this,m_children,DocStyleChange::Superscript,"sup"); + handleStyleLeave(this,m_children,DocStyleChange::Superscript,tagName); break; case HTML_CENTER: - handleStyleLeave(this,m_children,DocStyleChange::Center,"center"); + handleStyleLeave(this,m_children,DocStyleChange::Center,tagName); break; case HTML_SMALL: - handleStyleLeave(this,m_children,DocStyleChange::Small,"small"); + handleStyleLeave(this,m_children,DocStyleChange::Small,tagName); break; case HTML_PRE: - handleStyleLeave(this,m_children,DocStyleChange::Preformatted,"pre"); + handleStyleLeave(this,m_children,DocStyleChange::Preformatted,tagName); setInsidePreformatted(FALSE); doctokenizerYYsetInsidePre(FALSE); break; @@ -6475,7 +6481,7 @@ int DocPara::handleHtmlEndTag(const QCString &tagName) retval = RetVal_CloseXml; break; case XML_C: - handleStyleLeave(this,m_children,DocStyleChange::Code,"c"); + handleStyleLeave(this,m_children,DocStyleChange::Code,tagName); break; case XML_ITEM: case XML_LISTHEADER: |