Translate Doxygen code blocks to Sphinx code blocks.
This ensures they are formatted correctly and syntax highlighted (currently always as C++ code).
This commit is contained in:
parent
0f21adf3f9
commit
d678891e43
5 changed files with 65 additions and 4 deletions
|
|
@ -50,7 +50,10 @@ commentVerifier.check(doxygen_basic_translate.function4.__doc__,
|
||||||
|
|
||||||
Warning: This may not work as expected
|
Warning: This may not work as expected
|
||||||
|
|
||||||
int main() { while(true); }
|
.. code-block:: c++
|
||||||
|
|
||||||
|
|
||||||
|
int main() { while(true); }
|
||||||
|
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,11 @@ r"""
|
||||||
|
|
||||||
'citationword'
|
'citationword'
|
||||||
|
|
||||||
some test code
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
some test code
|
||||||
|
|
||||||
""")
|
""")
|
||||||
|
|
||||||
commentVerifier.check(doxygen_translate_all_tags.func02.__doc__,
|
commentVerifier.check(doxygen_translate_all_tags.func02.__doc__,
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,11 @@ r"""
|
||||||
|
|
||||||
'citationword'
|
'citationword'
|
||||||
|
|
||||||
some test code
|
|
||||||
|
.. code-block:: c++
|
||||||
|
|
||||||
|
some test code
|
||||||
|
|
||||||
|
|
||||||
Conditional comment: SOMECONDITION
|
Conditional comment: SOMECONDITION
|
||||||
Some conditional comment
|
Some conditional comment
|
||||||
|
|
|
||||||
|
|
@ -153,7 +153,7 @@ void PyDocConverter::fillStaticTables()
|
||||||
tagHandlers["authors"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["authors"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
tagHandlers["brief"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["brief"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
tagHandlers["bug"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["bug"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
tagHandlers["code"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["code"] = make_handler(&PyDocConverter::handleCode);
|
||||||
tagHandlers["copyright"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["copyright"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
tagHandlers["date"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["date"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
tagHandlers["deprecated"] = make_handler(&PyDocConverter::handleParagraph);
|
tagHandlers["deprecated"] = make_handler(&PyDocConverter::handleParagraph);
|
||||||
|
|
@ -441,6 +441,51 @@ void PyDocConverter::handleMath(DoxygenEntity &tag,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PyDocConverter::handleCode(DoxygenEntity &tag,
|
||||||
|
std::string &translatedComment,
|
||||||
|
const std::string &arg)
|
||||||
|
{
|
||||||
|
IndentGuard indent(translatedComment, m_indent);
|
||||||
|
|
||||||
|
trimWhitespace(translatedComment);
|
||||||
|
translatedComment += '\n';
|
||||||
|
|
||||||
|
// Use the current indent for the code-block line itself.
|
||||||
|
string codeIndent = indent.getFirstLineIndent();
|
||||||
|
translatedComment += codeIndent;
|
||||||
|
|
||||||
|
// Go out on a limb and assume that examples in the C or C++ sources use C++.
|
||||||
|
// In the worst case, we'll highlight C code using C++ syntax which is not a
|
||||||
|
// big deal (TODO: handle Doxygen code command language argument).
|
||||||
|
translatedComment += ".. code-block:: c++\n\n";
|
||||||
|
|
||||||
|
// For now on, use extra indent level for all the subsequent lines.
|
||||||
|
codeIndent += m_indent;
|
||||||
|
|
||||||
|
std::string code;
|
||||||
|
handleTagVerbatim(tag, code, arg);
|
||||||
|
|
||||||
|
translatedComment += codeIndent;
|
||||||
|
for (size_t n = 0; n < code.length(); n++) {
|
||||||
|
if (code[n] == '\n') {
|
||||||
|
// Don't leave trailing white space, this results in PEP8 validation
|
||||||
|
// errors in Python code (which are performed by our own unit tests).
|
||||||
|
trimWhitespace(translatedComment);
|
||||||
|
translatedComment += '\n';
|
||||||
|
|
||||||
|
// Ensure that we indent all the lines by the code indent.
|
||||||
|
translatedComment += codeIndent;
|
||||||
|
} else {
|
||||||
|
// Just copy everything else.
|
||||||
|
translatedComment += code[n];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
trimWhitespace(translatedComment);
|
||||||
|
if (*translatedComment.rbegin() != '\n')
|
||||||
|
translatedComment += '\n';
|
||||||
|
}
|
||||||
|
|
||||||
void PyDocConverter::handlePlainString(DoxygenEntity& tag,
|
void PyDocConverter::handlePlainString(DoxygenEntity& tag,
|
||||||
std::string& translatedComment,
|
std::string& translatedComment,
|
||||||
const std::string&)
|
const std::string&)
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,11 @@ protected:
|
||||||
*/
|
*/
|
||||||
void handleMath(DoxygenEntity &tag, std::string &translatedComment, const std::string &arg);
|
void handleMath(DoxygenEntity &tag, std::string &translatedComment, const std::string &arg);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Handle a code snippet.
|
||||||
|
*/
|
||||||
|
void handleCode(DoxygenEntity &tag, std::string &translatedComment, const std::string &arg);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Print only data part of code
|
* Print only data part of code
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue