added tests for HTML tags, bugs in HTML tags fixed

This commit is contained in:
Marko Klopcic 2013-01-18 21:21:12 +01:00
commit 13d2dad679
6 changed files with 233 additions and 5 deletions

View file

@ -125,4 +125,90 @@ int function(int a, float b)
{
}
/**
* Test for html tags. See Doxygen doc for list of tags recognized by Doxygen.
*
* <a href = "http://acme.com/index.html">This is link</a>
* <b>bold</b>
* <BLOCKQUOTE>
* Quotation block.
* </BLOCKQUOTE>
* <br>
* <center>center</center>
* <code>this is code</code>
* <DD> Starts an item description.
* <DFN> Starts a piece of text displayed in a typewriter font.
* </DFN>
* <DIV> Starts a section with a specific style (HTML only)
* </DIV>
* <DL> Starts a description list.
* <DT> Starts an item title.</DT>
* </DL>
* <EM> Starts a piece of text displayed in an italic font.
* </EM>
* <FORM> 'Form' does not generate any output.
* </FORM>
* <HR>
* <H1> Starts an unnumbered section.
* </H1>
* <H2> Starts an unnumbered subsection.
* </H2>
* <H3> Starts an unnumbered subsubsection.
* </H3>
* <I> Starts a piece of text displayed in an italic font.
* <INPUT> Does not generate any output.
* </I>
* <IMG src="slika.png">
* <META> Does not generate any output.
* <MULTICOL> ignored by doxygen.
* </MULTICOL> ignored by doxygen.
*
* <OL> Starts a numbered item list.
* <LI> Starts a new list item.
* </LI>
* </OL> Ends a numbered item list.
*
* <P> Starts a new paragraph.
* </P>
* <PRE> Starts a preformatted fragment.
* </PRE>
* <SMALL> Starts a section of text displayed in a smaller font.
* </SMALL>
* <SPAN> Starts an inline text fragment with a specific style (HTML only)
* </SPAN>
* <STRONG> Starts a section of bold text.
* </STRONG>
* <SUB> Starts a piece of text displayed in subscript.
* </SUB>
* <SUP> Starts a piece of text displayed in superscript.
* </SUP>
*
* <table border = '1'>
* <caption>Animals</caption>
* <tr><th> cow </th><th> dog </th></tr>
* <tr><td> cow </td><td> dog </td></tr>
* <tr><td> cat </td><td> mouse </td></tr>
* <tr><td> horse </td><td> parrot </td></tr>
* </table>
*
* <TT> Starts a piece of text displayed in a typewriter font.
* </TT>
* <KBD> Starts a piece of text displayed in a typewriter font.
* </KBD>
*
* <UL> Starts an unnumbered item list.
* <LI> Starts a new list item 1.</LI>
* <LI> Starts a new list item 2.</LI>
* <LI> Starts a new list item 3.</LI>
* </UL> Ends an unnumbered item list.
*
* <VAR> Starts a piece of text displayed in an italic font.
* </VAR>
*/
int htmlFunction(int a, float b)
{
}
%}

View file

@ -146,6 +146,87 @@ public class doxygen_translate_runme {
" And here goes simple text \n" +
" \n" +
"");
wantedComments.put("doxygen_translate.doxygen_translate.htmlFunction(int, float)",
" Test for html tags. See Doxygen doc for list of tags recognized by Doxygen. \n" +
" \n" +
" <a href = \"http://acme.com/index.html\">This is link</a> \n" +
" <b>bold</b> \n" +
" <blockquote> \n" +
" Quotation block. \n" +
" </blockquote> \n" +
" <br> \n" +
" <center>center</center> \n" +
" <code>this is code</code> \n" +
" <dd> Starts an item description. \n" +
" <dfn> Starts a piece of text displayed in a typewriter font. \n" +
" </dfn> \n" +
" <div> Starts a section with a specific style (HTML only) \n" +
" </div> \n" +
" <dl> Starts a description list. \n" +
" <dt> Starts an item title.</dt> \n" +
" </dl> \n" +
" <em> Starts a piece of text displayed in an italic font. \n" +
" </em> \n" +
" <form> 'Form' does not generate any output. \n" +
" </form> \n" +
" <hr> \n" +
" <h1> Starts an unnumbered section. \n" +
" </h1> \n" +
" <h2> Starts an unnumbered subsection. \n" +
" </h2> \n" +
" <h3> Starts an unnumbered subsubsection. \n" +
" </h3> \n" +
" <i> Starts a piece of text displayed in an italic font. \n" +
" <input> Does not generate any output. \n" +
" </i> \n" +
" <img src=\"slika.png\"> \n" +
" <meta> Does not generate any output. \n" +
" <multicol> ignored by doxygen. \n" +
" </multicol> ignored by doxygen. \n" +
" \n" +
" <ol> Starts a numbered item list. \n" +
" <li> Starts a new list item. \n" +
" </li> \n" +
" </ol> Ends a numbered item list. \n" +
" \n" +
" <p> Starts a new paragraph. \n" +
" </p> \n" +
" <pre> Starts a preformatted fragment. \n" +
" </pre> \n" +
" <small> Starts a section of text displayed in a smaller font. \n" +
" </small> \n" +
" <span> Starts an inline text fragment with a specific style (HTML only) \n" +
" </span> \n" +
" <strong> Starts a section of bold text. \n" +
" </strong> \n" +
" <sub> Starts a piece of text displayed in subscript. \n" +
" </sub> \n" +
" <sup> Starts a piece of text displayed in superscript. \n" +
" </sup> \n" +
" \n" +
" <table border = '1'> \n" +
" <caption>Animals</caption> \n" +
" <tr><th> cow </th><th> dog </th></tr> \n" +
" <tr><td> cow </td><td> dog </td></tr> \n" +
" <tr><td> cat </td><td> mouse </td></tr> \n" +
" <tr><td> horse </td><td> parrot </td></tr> \n" +
" </table> \n" +
" \n" +
" <tt> Starts a piece of text displayed in a typewriter font. \n" +
" </tt> \n" +
" <kbd> Starts a piece of text displayed in a typewriter font. \n" +
" </kbd> \n" +
" \n" +
" <ul> Starts an unnumbered item list. \n" +
" <li> Starts a new list item 1.</li> \n" +
" <li> Starts a new list item 2.</li> \n" +
" <li> Starts a new list item 3.</li> \n" +
" </ul> Ends an unnumbered item list. \n" +
" \n" +
" <var> Starts a piece of text displayed in an italic font. \n" +
" </var> \n" +
"");
// and ask the parser to check comments for us
System.exit(parser.check(wantedComments));
}

View file

@ -85,7 +85,7 @@ const int commandUniquesSize = sizeof(commandUniques) / sizeof(*commandUniques);
// behavior must be repeated by SWIG. See Doxygen doc for the list of commands.
// '<' is prepended to distinguish HTML tags from Doxygen commands.
const char *commandHtml[] = {
"<a", "<b", "<blockquote", "<body", "<br", "<center", "<caption", "<code", "<dfn",
"<a", "<b", "<blockquote", "<body", "<br", "<center", "<caption", "<code", "<dd", "<dfn",
"<div", "<dl", "<dt", "<em", "<form", "<hr", "<h1", "<h2", "<h3", "<i", "<input", "<img",
"<li", "<meta", "<multicol", "<ol", "<p", "<pre", "<small", "<span", "<strong",
"<sub", "<sup", "<table", "<td", "<th", "<tr", "<tt", "<kbd", "<ul", "<var"

View file

@ -178,6 +178,21 @@ void DoxygenParser::skipWhitespaceTokens()
}
std::string DoxygenParser::getNextToken() {
if (m_tokenListIt == m_tokenList.end()) {
return "";
}
if (m_tokenListIt->m_tokenType == PLAINSTRING) {
return (m_tokenListIt++)->m_tokenString;
}
return "";
}
std::string DoxygenParser::getNextWord() {
/* if (m_tokenListIt == m_tokenList.end()) {
@ -582,7 +597,7 @@ int DoxygenParser::addCommandHtml(const std::string &theCommand,
if (noisy)
cout << "Parsing " << theCommand << endl;
std::string htmlTagArgs = getNextWord();
std::string htmlTagArgs = getNextToken();
doxyList.push_back(DoxygenEntity(theCommand, htmlTagArgs));
return 1;
}
@ -1201,7 +1216,7 @@ size_t DoxygenParser::processNormalComment(size_t pos, const std::string &line)
pos++;
}
size_t endHtmlPos = line.find_first_of("\t\n >", pos);
size_t endHtmlPos = line.find_first_of("\t >", pos);
// prepend '<' to distinguish HTML tags from doxygen commands
string cmd = line.substr(pos, endHtmlPos - pos);
@ -1223,6 +1238,7 @@ size_t DoxygenParser::processNormalComment(size_t pos, const std::string &line)
// add args of HTML command, like link URL, image URL, ...
m_tokenList.push_back(Token(PLAINSTRING,
line.substr(pos, endHtmlPos - pos)));
pos = endHtmlPos;
} else {
if (isEndHtmlTag) {
// it is a simple tag, so push empty string

View file

@ -140,6 +140,12 @@ private:
*/
std::string trim(const std::string &text);
/*
* Returns string of the next token if the next token is PLAINSTRING. Returns
* empty string otherwise.
*/
std::string getNextToken();
/*
* Returns the next word ON THE CURRENT LINE ONLY
* if a new line is encountered, returns a blank std::string.

View file

@ -152,8 +152,47 @@ void JavaDocConverter::fillStaticTables() {
tagHandlers["n"] = make_pair(&JavaDocConverter::handleNewLine, "");
// HTML tags
tagHandlers["<ul"] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<ul");
tagHandlers["<a" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<a" );
tagHandlers["<b" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<b" );
tagHandlers["<blockquote"] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<blockquote");
tagHandlers["<body" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<body" );
tagHandlers["<br" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<br" );
tagHandlers["<center" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<center" );
tagHandlers["<caption"] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<caption");
tagHandlers["<code" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<code" );
tagHandlers["<dd" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<dd" );
tagHandlers["<dfn" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<dfn" );
tagHandlers["<div" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<div" );
tagHandlers["<dl" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<dl" );
tagHandlers["<dt" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<dt" );
tagHandlers["<em" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<em" );
tagHandlers["<form" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<form" );
tagHandlers["<hr" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<hr" );
tagHandlers["<h1" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<h1" );
tagHandlers["<h2" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<h2" );
tagHandlers["<h3" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<h3" );
tagHandlers["<i" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<i" );
tagHandlers["<input" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<input" );
tagHandlers["<img" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<img" );
tagHandlers["<li" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<li" );
tagHandlers["<meta" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<meta" );
tagHandlers["<multicol"] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<multicol");
tagHandlers["<ol" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<ol" );
tagHandlers["<p" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<p" );
tagHandlers["<pre" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<pre" );
tagHandlers["<small" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<small" );
tagHandlers["<span" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<span" );
tagHandlers["<strong" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<strong" );
tagHandlers["<sub" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<sub" );
tagHandlers["<sup" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<sup" );
tagHandlers["<table" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<table" );
tagHandlers["<td" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<td" );
tagHandlers["<th" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<th" );
tagHandlers["<tr" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<tr" );
tagHandlers["<tt" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<tt" );
tagHandlers["<kbd" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<kbd" );
tagHandlers["<ul" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<ul" );
tagHandlers["<var" ] = make_pair(&JavaDocConverter::handleDoxyHtmlTag, "<var" );
}