added handling for tag ref in Java

This commit is contained in:
Marko Klopcic 2013-03-16 10:53:48 +01:00
commit 4e2c1e3ac3
5 changed files with 71 additions and 9 deletions

View file

@ -269,12 +269,16 @@ int func07(int a)
* *
* \protectedsection * \protectedsection
* *
* \anchor someAnchor
* Text after anchor.
* \protocol someProtocol header.h "Header name" * \protocol someProtocol header.h "Header name"
* *
* \public * \public
* *
* \publicsection * \publicsection
* *
* \ref someAnchor Anchor description
*
* \ref someAnchor * \ref someAnchor
* *
* \related toSomething * \related toSomething

View file

@ -111,6 +111,10 @@ public class doxygen_translate_all_tags_runme {
" @param a the first param\n"); " @param a the first param\n");
wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func08(int)", wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func08(int)",
"<a id=\"#someAnchor\"></a>\n" +
"Text after anchor.\n" +
"<i>Anchor description</i>\n" +
"<i>someAnchor</i>\n" +
" Remarks: Some remark text \n" + " Remarks: Some remark text \n" +
" Remarks: Another remarks section \n" + " Remarks: Another remarks section \n" +
" @return Whatever \n" + " @return Whatever \n" +

View file

@ -692,10 +692,12 @@ int DoxygenParser::addCommandUnique(const std::string &theCommand,
"No key followed " + theCommand + " command. Not added"); "No key followed " + theCommand + " command. Not added");
return 0; return 0;
} }
std::string text = getNextWord(); DoxygenEntityList aNewList;
aNewList.push_back(DoxygenEntity("plainstd::string", name)); TokenListCIt endOfLine = getOneLine(tokList);
if (!text.empty()) if (endOfLine != m_tokenListIt) {
aNewList.push_back(DoxygenEntity("plainstd::string", text)); aNewList = parse(endOfLine, tokList);
}
aNewList.push_front(DoxygenEntity("plainstd::string", name));
doxyList.push_back(DoxygenEntity(theCommand, aNewList)); doxyList.push_back(DoxygenEntity(theCommand, aNewList));
} }
// \subpage <name> ["(text)"] // \subpage <name> ["(text)"]

View file

@ -88,6 +88,7 @@ void JavaDocConverter::fillStaticTables()
tagHandlers["::"] = make_pair(&JavaDocConverter::handleTagChar, ""); tagHandlers["::"] = make_pair(&JavaDocConverter::handleTagChar, "");
// these commands are stripped out // these commands are stripped out
tagHandlers["attention"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["attention"] = make_pair(&JavaDocConverter::handleParagraph, "");
tagHandlers["anchor"] = make_pair(&JavaDocConverter::handleTagAnchor, "");
tagHandlers["brief"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["brief"] = make_pair(&JavaDocConverter::handleParagraph, "");
tagHandlers["bug"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["bug"] = make_pair(&JavaDocConverter::handleParagraph, "");
tagHandlers["date"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["date"] = make_pair(&JavaDocConverter::handleParagraph, "");
@ -112,6 +113,7 @@ void JavaDocConverter::fillStaticTables()
tagHandlers["package"] = make_pair(&JavaDocConverter::handleTagSame, ""); tagHandlers["package"] = make_pair(&JavaDocConverter::handleTagSame, "");
tagHandlers["param"] = make_pair(&JavaDocConverter::handleTagParam, ""); tagHandlers["param"] = make_pair(&JavaDocConverter::handleTagParam, "");
tagHandlers["tparam"] = make_pair(&JavaDocConverter::handleTagParam, ""); tagHandlers["tparam"] = make_pair(&JavaDocConverter::handleTagParam, "");
tagHandlers["ref"] = make_pair(&JavaDocConverter::handleTagRef, "");
tagHandlers["result"] = make_pair(&JavaDocConverter::handleTagSame, "return"); tagHandlers["result"] = make_pair(&JavaDocConverter::handleTagSame, "return");
tagHandlers["return"] = make_pair(&JavaDocConverter::handleTagSame, ""); tagHandlers["return"] = make_pair(&JavaDocConverter::handleTagSame, "");
tagHandlers["returns"] = make_pair(&JavaDocConverter::handleTagSame, tagHandlers["returns"] = make_pair(&JavaDocConverter::handleTagSame,
@ -402,6 +404,15 @@ void JavaDocConverter::translateEntity(DoxygenEntity &tag,
} }
} }
void JavaDocConverter::handleTagAnchor(DoxygenEntity& tag,
std::string& translatedComment,
std::string &)
{
translatedComment += "<a id=\"#" + translateSubtree(tag) + "\"></a>";
}
void JavaDocConverter::handleTagHtml(DoxygenEntity& tag, void JavaDocConverter::handleTagHtml(DoxygenEntity& tag,
std::string& translatedComment, std::string& translatedComment,
std::string &arg) std::string &arg)
@ -573,6 +584,7 @@ void JavaDocConverter::handleTagPar(DoxygenEntity& tag,
translatedComment += "</p>"; translatedComment += "</p>";
} }
void JavaDocConverter::handleTagParam(DoxygenEntity& tag, void JavaDocConverter::handleTagParam(DoxygenEntity& tag,
std::string& translatedComment, std::string& translatedComment,
std::string&) std::string&)
@ -590,6 +602,35 @@ void JavaDocConverter::handleTagParam(DoxygenEntity& tag,
handleParagraph(tag, translatedComment, dummy); handleParagraph(tag, translatedComment, dummy);
} }
void JavaDocConverter::handleTagRef(DoxygenEntity& tag,
std::string& translatedComment,
std::string&)
{
std::string dummy;
// translatedComment += "1111";
if (!tag.entityList.size())
return;
// translatedComment += "2222";
//if (!paramExists(tag.entityList.begin()->data))
// return;
// we don't translate to link, since \page is not supported in Java, but we
// make text in italic, so that reader at least knows what to look at.
// translatedComment += "<i>";
// tag.entityList.pop_front();
// translatedComment += translateSubtree(tag);
// translatedComment += "</i>";
string anchor = tag.entityList.begin()->data;
tag.entityList.pop_front();
string anchorText = translateSubtree(tag);
if (anchorText.find_first_not_of(" \t") == string::npos) {
anchorText = anchor;
}
translatedComment += "<a href=\"#" + anchor + "\">" + anchorText + "</a>";
}
string JavaDocConverter::convertLink(string linkObject) string JavaDocConverter::convertLink(string linkObject)
{ {
if (GetFlag(currentNode, "feature:doxygen:nolinktranslate")) if (GetFlag(currentNode, "feature:doxygen:nolinktranslate"))

View file

@ -61,6 +61,11 @@ protected:
*/ */
void handleTagVerbatim(DoxygenEntity& tag, std::string& translatedComment, std::string &arg); void handleTagVerbatim(DoxygenEntity& tag, std::string& translatedComment, std::string &arg);
/** Creates anchor link. */
void handleTagAnchor(DoxygenEntity& tag,
std::string& translatedComment,
std::string &arg);
/* /*
* Wrap the command data with the html tag * Wrap the command data with the html tag
* arg - html tag, with no braces * arg - html tag, with no braces
@ -125,6 +130,12 @@ protected:
* Insert \@param command, if it is really a function param * Insert \@param command, if it is really a function param
*/ */
void handleTagParam(DoxygenEntity &tag, std::string &translatedComment, std::string &arg); void handleTagParam(DoxygenEntity &tag, std::string &translatedComment, std::string &arg);
/*
* Writes text of \ref tag in italic. Does not produce link, because javadoc
* does not support page and section tags.
*/
void handleTagRef(DoxygenEntity& tag, std::string& translatedComment,
std::string&);
/* /*
* Insert {@link...} command, and handle all the <link-object>s correctly * Insert {@link...} command, and handle all the <link-object>s correctly
* (like converting types of params, etc) * (like converting types of params, etc)