diff options
author | Marko Klopcic <markok3.14@gmail.com> | 2013-01-28 20:07:36 +0100 |
---|---|---|
committer | Marko Klopcic <markok3.14@gmail.com> | 2013-01-28 20:07:36 +0100 |
commit | 2df4449e3b233f5fd605bf188d8cf28803208b49 (patch) | |
tree | 6fbb36f768de5ba7c03e5b72aeeaef0d0d78a781 | |
parent | 9a1bb671c10288b49677fdbc0f4b3e1afbe92006 (diff) | |
download | swig-2df4449e3b233f5fd605bf188d8cf28803208b49.tar.gz |
commands \f? (LateX formulas) are no longer ignored - formulas are copied literally to Java comments
5 files changed, 33 insertions, 44 deletions
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 6bb56c437..37d60ff81 100644 --- a/Examples/test-suite/java/doxygen_translate_all_tags_runme.java +++ b/Examples/test-suite/java/doxygen_translate_all_tags_runme.java @@ -59,9 +59,9 @@ public class doxygen_translate_all_tags_runme { wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func04(int)", " @exception SuperError \n" + - " \sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + - " \sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + - " \sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + + " \\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + + " \\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + + " \\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n" + " This will only appear in hmtl \n"); wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func05(int)", diff --git a/Source/DoxygenTranslator/src/DoxygenCommands.h b/Source/DoxygenTranslator/src/DoxygenCommands.h index 694e57b41..7fa1dbb54 100644 --- a/Source/DoxygenTranslator/src/DoxygenCommands.h +++ b/Source/DoxygenTranslator/src/DoxygenCommands.h @@ -6,8 +6,14 @@ const char *CMD_HTML_ONLY = "htmlonly"; // doxy commands are not processed inside this block const char *CMD_VERBATIM = "verbatim"; +const char *CMD_LATEX_1 = "f$"; +const char *CMD_LATEX_2 = "f{"; +const char *CMD_LATEX_3 = "f["; const char *CMD_END_HTML_ONLY = "endhtmlonly"; const char *CMD_END_VERBATIM = "endverbatim"; +const char *CMD_END_LATEX_1 = "f$"; +const char *CMD_END_LATEX_2 = "f}"; +const char *CMD_END_LATEX_3 = "f]"; const char *sectionIndicators[] = { "attention", "author", "authors", "brief", "bug", "cond", "date", diff --git a/Source/DoxygenTranslator/src/DoxygenParser.cpp b/Source/DoxygenTranslator/src/DoxygenParser.cpp index eda17a7e9..59b47e46f 100644 --- a/Source/DoxygenTranslator/src/DoxygenParser.cpp +++ b/Source/DoxygenTranslator/src/DoxygenParser.cpp @@ -234,44 +234,6 @@ std::string DoxygenParser::getNextWord() { return ""; } -/* TODO remove this m. -std::string DoxygenParser::getNextWordInComment() { - - while (m_tokenListIt != m_tokenList.end() && (m_tokenListIt->m_tokenType == PLAINSTRING || m_tokenListIt->m_tokenType == END_LINE)) { - // handle quoted strings as words - if (m_tokenListIt->m_tokenString[0] == '"' - && m_tokenListIt->m_tokenString[m_tokenListIt->m_tokenString.size() - 1] != '"') { - - string word = m_tokenListIt->m_tokenString + " "; - while (true) { - string nextWord = getNextWord(); - if (nextWord.empty()) {// maybe report unterminated string error - return word; - } - word += nextWord; - if (word[word.size() - 1] == '"') { // strip quotes - return word.substr(1, word.size() - 2); - } - word += " "; - } - } - - string tokenStr = trim(m_tokenListIt->m_tokenString); - m_tokenListIt++; - if (!tokenStr.empty()) { - return tokenStr; - } - } * else if (nextToken.m_tokenType == END_LINE) { - // this handles cases when command is the last item in line, for example: - // * This method returns line number \c - // * relative to paragraph. - m_tokenListIt++; - return getNextWord(); - } * - - return ""; -} */ - DoxygenParser::TokenListCIt DoxygenParser::getOneLine(const TokenList &tokList) { @@ -315,7 +277,6 @@ std::string DoxygenParser::getStringTilEndCommand(const std::string & theCommand string description; while (m_tokenListIt != tokList.end()) { - //TODO: it won't output doxygen commands, need a way to fix it if (m_tokenListIt->m_tokenType == PLAINSTRING) { description += m_tokenListIt->m_tokenString; } else if (m_tokenListIt->m_tokenType == END_LINE) { @@ -1137,7 +1098,8 @@ size_t DoxygenParser::processVerbatimText(size_t pos, const std::string &line) size_t endOfWordPos = line.find_first_not_of("abcdefghijklmnopqrstuvwxyz$[]{}", pos); string cmd = line.substr(pos, endOfWordPos - pos); - if (cmd == CMD_END_HTML_ONLY || cmd == CMD_END_VERBATIM) { + if (cmd == CMD_END_HTML_ONLY || cmd == CMD_END_VERBATIM || + cmd == CMD_END_LATEX_1 || cmd == CMD_END_LATEX_2 || cmd == CMD_END_LATEX_3) { m_isVerbatimText = false; addDoxyCommand(m_tokenList, cmd); } else { @@ -1196,7 +1158,8 @@ size_t DoxygenParser::processNormalComment(size_t pos, const std::string &line) size_t endOfWordPos = line.find_first_not_of("abcdefghijklmnopqrstuvwxyz$[]{}", pos); string cmd = line.substr(pos , endOfWordPos - pos); addDoxyCommand(m_tokenList, cmd); - if (cmd == CMD_HTML_ONLY || cmd == CMD_VERBATIM) { + if (cmd == CMD_HTML_ONLY || cmd == CMD_VERBATIM || + cmd == CMD_LATEX_1 || cmd == CMD_LATEX_2 || cmd == CMD_LATEX_3) { m_isVerbatimText = true; } else { // skip any possible spaces after command, because some commands have parameters, diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.cpp b/Source/DoxygenTranslator/src/JavaDocConverter.cpp index cc329e706..a815eb56b 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.cpp +++ b/Source/DoxygenTranslator/src/JavaDocConverter.cpp @@ -147,6 +147,12 @@ void JavaDocConverter::fillStaticTables() { tagHandlers["remarks"] = make_pair(&JavaDocConverter::handleTagMessage, "Remarks: "); tagHandlers["todo"] = make_pair(&JavaDocConverter::handleTagMessage, "TODO: "); tagHandlers["verbatim"] = make_pair(&JavaDocConverter::handleTagExtended, "literal"); + + // \f commands output literal Latex formula, which is still better than nothing. + tagHandlers["f$"] = make_pair(&JavaDocConverter::handleTagVerbatim, ""); + tagHandlers["f["] = make_pair(&JavaDocConverter::handleTagVerbatim, ""); + tagHandlers["f{"] = make_pair(&JavaDocConverter::handleTagVerbatim, ""); + tagHandlers["warning"] = make_pair(&JavaDocConverter::handleTagMessage, "Warning: "); // this command just prints it's contents // (it is internal command of swig's parser, contains plain text) @@ -413,6 +419,14 @@ void JavaDocConverter::handlePlainString(DoxygenEntity& tag, std::string& transl } +void JavaDocConverter::handleTagVerbatim(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) { + translatedComment += arg + " "; + for (DoxygenEntityListCIt it = tag.entityList.begin(); it != tag.entityList.end(); it++) { + translatedComment += it->data; + } +} + + void JavaDocConverter::handleTagExtended(DoxygenEntity& tag, std::string& translatedComment, std::string &arg) { std::string dummy; translatedComment += "{@" + arg + " "; diff --git a/Source/DoxygenTranslator/src/JavaDocConverter.h b/Source/DoxygenTranslator/src/JavaDocConverter.h index c2e1251fc..abb6f2233 100644 --- a/Source/DoxygenTranslator/src/JavaDocConverter.h +++ b/Source/DoxygenTranslator/src/JavaDocConverter.h @@ -55,6 +55,12 @@ protected: */ typedef void (JavaDocConverter::*tagHandler)(DoxygenEntity &tag, std::string &translatedComment, std::string &arg); + + /** + * Copies verbatim args of the tag to output, used for commands like \f$, ... + */ + void handleTagVerbatim(DoxygenEntity& tag, std::string& translatedComment, std::string &arg); + /* * Wrap the command data with the html tag * arg - html tag, with no braces |