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

@ -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" );
}