diff --git a/Examples/test-suite/doxygen_translate_all_tags.i b/Examples/test-suite/doxygen_translate_all_tags.i index 0bc50f3a8..9fc25416f 100644 --- a/Examples/test-suite/doxygen_translate_all_tags.i +++ b/Examples/test-suite/doxygen_translate_all_tags.i @@ -269,12 +269,16 @@ int func07(int a) * * \protectedsection * + * \anchor someAnchor + * Text after anchor. * \protocol someProtocol header.h "Header name" * * \public * * \publicsection * + * \ref someAnchor Anchor description + * * \ref someAnchor * * \related toSomething diff --git a/Examples/test-suite/java/doxygen_translate_all_tags_runme.java b/Examples/test-suite/java/doxygen_translate_all_tags_runme.java index 5374d97c4..50c36b6f7 100644 --- a/Examples/test-suite/java/doxygen_translate_all_tags_runme.java +++ b/Examples/test-suite/java/doxygen_translate_all_tags_runme.java @@ -111,11 +111,15 @@ public class doxygen_translate_all_tags_runme { " @param a the first param\n"); wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func08(int)", - " Remarks: Some remark text \n" + - " Remarks: Another remarks section \n" + - " @return Whatever \n" + - " @return it \n" + - " @return may return \n"); + "\n" + + "Text after anchor.\n" + + "Anchor description\n" + + "someAnchor\n" + + " Remarks: Some remark text \n" + + " Remarks: Another remarks section \n" + + " @return Whatever \n" + + " @return it \n" + + " @return may return \n"); wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func09(int)", " This will only appear in RTF \n" + diff --git a/Source/DoxygenTranslator/src/DoxygenParser.cpp b/Source/DoxygenTranslator/src/DoxygenParser.cpp index 995e0c7ab..08dae5a86 100644 --- a/Source/DoxygenTranslator/src/DoxygenParser.cpp +++ b/Source/DoxygenTranslator/src/DoxygenParser.cpp @@ -692,10 +692,12 @@ int DoxygenParser::addCommandUnique(const std::string &theCommand, "No key followed " + theCommand + " command. Not added"); return 0; } - std::string text = getNextWord(); - aNewList.push_back(DoxygenEntity("plainstd::string", name)); - if (!text.empty()) - aNewList.push_back(DoxygenEntity("plainstd::string", text)); + DoxygenEntityList aNewList; + TokenListCIt endOfLine = getOneLine(tokList); + if (endOfLine != m_tokenListIt) { + aNewList = parse(endOfLine, tokList); + } + aNewList.push_front(DoxygenEntity("plainstd::string", name)); doxyList.push_back(DoxygenEntity(theCommand, aNewList)); } // \subpage ["(text)"] diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.cpp b/Source/DoxygenTranslator/src/JavaDocConverter.cpp index f14fefafd..f9d27c84c 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.cpp +++ b/Source/DoxygenTranslator/src/JavaDocConverter.cpp @@ -88,6 +88,7 @@ void JavaDocConverter::fillStaticTables() tagHandlers["::"] = make_pair(&JavaDocConverter::handleTagChar, ""); // these commands are stripped out tagHandlers["attention"] = make_pair(&JavaDocConverter::handleParagraph, ""); + tagHandlers["anchor"] = make_pair(&JavaDocConverter::handleTagAnchor, ""); tagHandlers["brief"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["bug"] = make_pair(&JavaDocConverter::handleParagraph, ""); tagHandlers["date"] = make_pair(&JavaDocConverter::handleParagraph, ""); @@ -112,6 +113,7 @@ void JavaDocConverter::fillStaticTables() tagHandlers["package"] = make_pair(&JavaDocConverter::handleTagSame, ""); tagHandlers["param"] = make_pair(&JavaDocConverter::handleTagParam, ""); tagHandlers["tparam"] = make_pair(&JavaDocConverter::handleTagParam, ""); + tagHandlers["ref"] = make_pair(&JavaDocConverter::handleTagRef, ""); tagHandlers["result"] = make_pair(&JavaDocConverter::handleTagSame, "return"); tagHandlers["return"] = 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 += ""; +} + + void JavaDocConverter::handleTagHtml(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) @@ -573,6 +584,7 @@ void JavaDocConverter::handleTagPar(DoxygenEntity& tag, translatedComment += "

"; } + void JavaDocConverter::handleTagParam(DoxygenEntity& tag, std::string& translatedComment, std::string&) @@ -590,6 +602,35 @@ void JavaDocConverter::handleTagParam(DoxygenEntity& tag, 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 += ""; + // tag.entityList.pop_front(); + // translatedComment += translateSubtree(tag); + // translatedComment += ""; + 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 += "" + anchorText + ""; +} + + string JavaDocConverter::convertLink(string linkObject) { if (GetFlag(currentNode, "feature:doxygen:nolinktranslate")) diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.h b/Source/DoxygenTranslator/src/JavaDocConverter.h index abb6f2233..b0355e9c2 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.h +++ b/Source/DoxygenTranslator/src/JavaDocConverter.h @@ -61,6 +61,11 @@ protected: */ 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 * arg - html tag, with no braces @@ -125,6 +130,12 @@ protected: * Insert \@param command, if it is really a function param */ 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 s correctly * (like converting types of params, etc)