From 9e96fb4541cc3d7b8050ad8c43faf46209af1158 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 7 May 2020 17:32:21 +0200 Subject: [PATCH] documentation/doxygen: support colspan/rowspan in tables. New in 1.8.18. --- documentation/doxygen.py | 7 ++++- .../contents_blocks/doxygen1818.html | 31 +++++++++++++++++++ .../test_doxygen/contents_blocks/input.dox | 20 ++++++++++++ documentation/test_doxygen/test_contents.py | 5 +++ 4 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 documentation/test_doxygen/contents_blocks/doxygen1818.html diff --git a/documentation/doxygen.py b/documentation/doxygen.py index d355b51a..1b32c6d2 100755 --- a/documentation/doxygen.py +++ b/documentation/doxygen.py @@ -719,7 +719,12 @@ def parse_desc_internal(state: State, element: ET.Element, immediate_parent: ET. assert entry.tag == 'entry' is_header = entry.attrib['thead'] == 'yes' is_header_row = is_header_row and is_header - row_data += '<{0}>{1}'.format('th' if is_header else 'td', parse_desc(state, entry)) + rowspan = ' rowspan="{}"'.format(entry.attrib['rowspan']) if 'rowspan' in entry.attrib else '' + colspan = ' colspan="{}"'.format(entry.attrib['colspan']) if 'colspan' in entry.attrib else '' + row_data += '<{0}{2}{3}>{1}'.format( + 'th' if is_header else 'td', + parse_desc(state, entry), + rowspan, colspan) # Table head is opened upon encountering first header row # and closed upon encountering first body row (in case it was diff --git a/documentation/test_doxygen/contents_blocks/doxygen1818.html b/documentation/test_doxygen/contents_blocks/doxygen1818.html new file mode 100644 index 00000000..10ee48d9 --- /dev/null +++ b/documentation/test_doxygen/contents_blocks/doxygen1818.html @@ -0,0 +1,31 @@ + + + + + Doxygen 1.8.18 features | My Project + + + + + +
+
+
+
+
+

+ Doxygen 1.8.18 features +

+

Tested separately because the CI has only 1.8.17 right now.

Tablewith
colspanand
rowspan
+
+
+
+
+ + diff --git a/documentation/test_doxygen/contents_blocks/input.dox b/documentation/test_doxygen/contents_blocks/input.dox index 0f9c9356..7b2aaf20 100644 --- a/documentation/test_doxygen/contents_blocks/input.dox +++ b/documentation/test_doxygen/contents_blocks/input.dox @@ -135,3 +135,23 @@ This gets hidden because internal docs are not enabled by default. @todo Diffferent TODO */ + +/** @page doxygen1818 Doxygen 1.8.18 features + +Tested separately because the CI has only 1.8.17 right now. + + + + + + + + + + + +
Table + with +
colspanand
rowspan
+ +*/ diff --git a/documentation/test_doxygen/test_contents.py b/documentation/test_doxygen/test_contents.py index 8be7dd0e..d88ed673 100644 --- a/documentation/test_doxygen/test_contents.py +++ b/documentation/test_doxygen/test_contents.py @@ -56,6 +56,11 @@ class Blocks(IntegrationTestCase): # Multiple xrefitems should be merged into one self.assertEqual(*self.actual_expected_contents('File_8h.html')) + @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.18"), "new features in 1.8.18") + def test_1818(self): + self.run_doxygen(wildcard='*.xml') + self.assertEqual(*self.actual_expected_contents('doxygen1818.html')) + @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.14"), "https://github.com/doxygen/doxygen/pull/6587 fucking broke this") def test_xrefitem1814(self): -- 2.30.2