Ensure empty line before code and math blocks in doxygen pydoc

Sphinx requires an empty line before code and math blocks, whereas
doxygen does not.  This update ensures that a blank line is included
before generated code and math blocks in the pydoc output.  This is
done by post-processing the docstring line by line to check whether
any newlines need to be added.  This way, if the original doxygen
source already includes an empty line before a block, an additional
unnecessary empty line is not added.

Updating the expected test output for doxygen_basic_translate, which
now adds the necessary empty line before the code block.  Adding
further test cases to doxygen_translate_all_tags to explicitly verify
that a newline is added in the pydoc output before both code and math
blocks that appear within a paragraph.

Additionally, empty lines previously appearing at the beginning of the
generated docstrings are now removed.  This does not alter the
behavior of the tests.
This commit is contained in:
John McFarland 2019-06-04 16:55:54 -05:00
commit daad5d664d
6 changed files with 75 additions and 6 deletions

View file

@ -38,6 +38,10 @@
* \cite citationword
* \class someClass headerFile.h headerName
* \code some test code \endcode
*
* Code immediately following text. Pydoc translation must add an
* empty line before:
* \code more test code \endcode
*/
void func01(int a)
{
@ -121,6 +125,12 @@ void func03(int a)
* \sqrt{(x_2-x_1)^2+(y_2-y_1)^2}
* \f}
*
* Math immediately following text. Pydoc translation must add an
* empty line before:
* \f[
* \sqrt{(x_2-x_1)^2+(y_2-y_1)^2}
* \f]
*
* \file file.h
*
* \fn someFn

View file

@ -40,7 +40,10 @@ public class doxygen_translate_all_tags_runme {
" Not everything works right now...\n" +
" <code>codeword</code>\n\n\n\n\n\n" +
" <i>citationword</i>\n" +
" {@code some test code }\n");
" {@code some test code }\n\n" +
" Code immediately following text. Pydoc translation must add an\n" +
" empty line before:\n" +
" {@code more test code }");
wantedComments.put("doxygen_translate_all_tags.doxygen_translate_all_tags.func02(int)",
" Conditional comment: SOMECONDITION \n" +
@ -63,8 +66,11 @@ public class doxygen_translate_all_tags_runme {
" @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" +
" This will only appear in hmtl \n");
" \\sqrt{(x_2-x_1)^2+(y_2-y_1)^2} \n\n" +
"Math immediately following text. Pydoc translation must add an\n" +
"empty line before:\n\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)",
" If: ANOTHERCONDITION {\n" +

View file

@ -46,6 +46,7 @@ Title: Minuses:
* it\'s null
Warning: This may not work as expected
.. code-block:: c++
int main() { while(true); }

View file

@ -44,6 +44,7 @@ Title: Minuses:
* it\'s null
Warning: This may not work as expected
.. code-block:: c++
int main() { while(true); }

View file

@ -36,7 +36,14 @@ Not everything works right now...
.. code-block:: c++
some test code""")
some test code
Code immediately following text. Pydoc translation must add an
empty line before:
.. code-block:: c++
more test code""")
comment_verifier.check(inspect.getdoc(doxygen_translate_all_tags.func02),
r"""Conditional comment: SOMECONDITION
@ -97,6 +104,13 @@ r""":raises: SuperError
\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}
Math immediately following text. Pydoc translation must add an
empty line before:
.. math::
\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}