chiark / gitweb /
doxygen: make it possible to hide m.css options from Doxygen.
authorVladimír Vondruš <mosra@centrum.cz>
Sun, 17 Jun 2018 10:53:06 +0000 (12:53 +0200)
committerVladimír Vondruš <mosra@centrum.cz>
Sun, 17 Jun 2018 11:17:46 +0000 (13:17 +0200)
Makes the output finally bearable.

46 files changed:
doc/doxygen.rst
doxygen/dox2html5.py
doxygen/test/compound_deprecated/Doxyfile
doxygen/test/compound_detailed/Doxyfile
doxygen/test/compound_filename_case/Doxyfile
doxygen/test/compound_ignored/Doxyfile
doxygen/test/compound_listing/Doxyfile
doxygen/test/compound_modules/Doxyfile
doxygen/test/compound_namespace_members_in_file_scope/Doxyfile
doxygen/test/compound_warnings/Doxyfile
doxygen/test/contents_anchor_in_both_group_and_namespace/Doxyfile
doxygen/test/contents_autobrief_heading/Doxyfile
doxygen/test/contents_autobrief_hr/Doxyfile
doxygen/test/contents_autobrief_multiline/Doxyfile
doxygen/test/contents_blocks/Doxyfile
doxygen/test/contents_code/Doxyfile
doxygen/test/contents_code_language/Doxyfile
doxygen/test/contents_custom/Doxyfile
doxygen/test/contents_image/Doxyfile
doxygen/test/contents_math/Doxyfile
doxygen/test/contents_math_cached/Doxyfile
doxygen/test/contents_section_in_function/Doxyfile
doxygen/test/contents_section_underscore_one/Doxyfile
doxygen/test/contents_tagfile/Doxyfile
doxygen/test/contents_typography/Doxyfile
doxygen/test/cpp_derived/Doxyfile
doxygen/test/cpp_enum_class/Doxyfile
doxygen/test/cpp_template_alias/Doxyfile
doxygen/test/doxyfile/Doxyfile
doxygen/test/doxyfile_upgrade_custom_variables/.gitignore [new file with mode: 0644]
doxygen/test/doxyfile_upgrade_custom_variables/Doxyfile [new file with mode: 0644]
doxygen/test/example/Doxyfile
doxygen/test/layout/Doxyfile
doxygen/test/layout_navbar_single_column/Doxyfile
doxygen/test/layout_search_binary/Doxyfile
doxygen/test/page_brief/Doxyfile
doxygen/test/page_empty_index/Doxyfile
doxygen/test/page_empty_title/Doxyfile
doxygen/test/page_footernavigation/Doxyfile
doxygen/test/page_in_navbar/Doxyfile
doxygen/test/page_order/Doxyfile
doxygen/test/page_subpage_of_index/Doxyfile
doxygen/test/page_toc/Doxyfile
doxygen/test/search/Doxyfile
doxygen/test/search_long_suffix_length/Doxyfile
doxygen/test/test_doxyfile.py

index f910c5bd5a61836420f8d18952b0ca1aa94c9049..93acdba1a4a378d7731b1c10a9e5977bead42e65 100644 (file)
@@ -347,6 +347,19 @@ Variable                            Description
 Note that namespace, directory and page lists are always fully expanded as
 these are not expected to be excessively large.
 
+.. block-success:: Hiding extra options from Doxygen
+
+    Doxygen complains on unknown options, so it's possible to add them
+    prefixed with ``##!``. Line continuations are supported too, using ``##!``
+    ensures that the options also survive Doxyfile upgrades using
+    ``doxygen -u`` (which is not the case when the options would be specified
+    directly):
+
+    .. code:: ini
+
+        ##! M_LINKS_NAVBAR1 = pages \
+        ##!                   modules
+
 `Theme selection`_
 ------------------
 
index 7d06c56f39bd44ff1df9608b97b2045e9ffd1fde..8efd03e0ba5688e5ee77f4a07e6d9735cce6b8e8 100755 (executable)
@@ -2724,9 +2724,9 @@ def parse_doxyfile(state: State, doxyfile, config = None):
     logging.debug("Parsing configuration from {}".format(doxyfile))
 
     comment_re = re.compile(r"""^\s*(#.*)?$""")
-    variable_re = re.compile(r"""^\s*(?P<key>[A-Z0-9_@]+)\s*=\s*(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
-    variable_continuation_re = re.compile(r"""^\s*(?P<key>[A-Z_]+)\s*\+=\s*(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
-    continuation_re = re.compile(r"""^\s*(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
+    variable_re = re.compile(r"""^\s*(##!\s*)?(?P<key>[A-Z0-9_@]+)\s*=\s*(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
+    variable_continuation_re = re.compile(r"""^\s*(##!\s*)?(?P<key>[A-Z_]+)\s*\+=\s*(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
+    continuation_re = re.compile(r"""^\s*(##!\s*)?(?P<quote>['"]?)(?P<value>.*)(?P=quote)\s*(?P<backslash>\\?)$""")
 
     default_config = {
         'PROJECT_NAME': ['My Project'],
@@ -2786,13 +2786,9 @@ list using <span class="m-label m-dim">&darr;</span> and
         for line in f:
             line = line.strip()
 
-            # Ignore comments and empty lines. Comment also stops line
-            # continuation
-            if comment_re.match(line):
-                continued_line = None
-                continue
-
-            # Line continuation from before, append the line contents to it
+            # Line continuation from before, append the line contents to it.
+            # Needs to be before variable so variable-looking continuations
+            # are not parsed as variables.
             if continued_line:
                 var = continuation_re.match(line)
                 value, backslash = parse_value(var)
@@ -2828,6 +2824,13 @@ list using <span class="m-label m-dim">&darr;</span> and
                 # only because coverage.py can't handle continue
                 continue # pragma: no cover
 
+            # Ignore comments and empty lines. Comment also stops line
+            # continuation. Has to be last because variables can be inside
+            # comments.
+            if comment_re.match(line):
+                continued_line = None
+                continue
+
             logging.warning("{}: unmatchable line {}".format(doxyfile, line)) # pragma: no cover
 
     # Some values are set to empty in the default-generated Doxyfile but they
index 253fe335c3054a07957ab9abba5b778341f91565..796610f62dfb8cb56560baa331c73fef64b60f1f 100644 (file)
@@ -7,9 +7,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 97f2af0d468f957dca7bcbf25b7e27e62c941974..162364c74d57df81173b892cb7ebc21901c67fc8 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 698cbd7fbf753ee3dd3f177dd55f8b1a82d5f21f..6022a7a66fa44e2bf24a4fa51bcf3197b331781d 100644 (file)
@@ -6,11 +6,11 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
 CASE_SENSE_NAMES        = NO
index c90f097acd1f0ce2a47c94f8ac7f0b9b76e777a6..519b0031e7dcb5ff829ad59e63c04edf35e3935a 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 2d8ac5a07975f154ec1c3262287d5f526fa4fd7d..fd4fcb03a316b39cc6f0346c38018dd0db4d93b8 100644 (file)
@@ -8,11 +8,11 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_FILE_TREE_EXPAND_LEVELS = 2
-M_CLASS_TREE_EXPAND_LEVELS = 5
-M_EXPAND_INNER_TYPES    = YES
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_SEARCH_DISABLED       = YES
+##! M_FILE_TREE_EXPAND_LEVELS = 2
+##! M_CLASS_TREE_EXPAND_LEVELS = 5
+##! M_EXPAND_INNER_TYPES = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_SEARCH_DISABLED   = YES
 # Keeping navbar enabled so we can test for highlighted items
index 1c8867f5a35a34ab7ff93ce374b8b73ff9ac9930..f0d7cb56921a94fdce83329f6ab9e6de370994c1 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         = modules
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     = modules
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index a89bef49a3f2f254232bf084cd39b0825920ae05..cd500a2281c7f8ad39f71075160725a994c9e737 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 XML_NAMESPACE_MEMBERS_IN_FILE_SCOPE = YES
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 118631ca033fd061c7dd79ce7f611fc49f599665..8d9fcf9acc96d64469bb661c76418985f7cec617 100644 (file)
@@ -9,9 +9,9 @@ PREDEFINED              = DOXYGEN_GENERATING_OUTPUT
 # Enable to get rid of the MAGNUM_EXPORT macro in the output
 # MACRO_EXPANSION         = YES
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 5945b1eeeda0b2b9e6b2fd12379605db25532e43..1edb6422bccca433ec118d2da64660519310356d 100644 (file)
@@ -5,10 +5,10 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
index a514ba2d997e42772bb267b68a17e11f18f536a9..c46c83dbae5d62a5da25b4a7d8f4bf45e87202e8 100644 (file)
@@ -5,12 +5,12 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
 # So the ==== is treated as brief. Ugh.
 JAVADOC_AUTOBRIEF       = YES
index 1919187635ffee6a3f0464e8bd6d1e11231ee6de..d1754a25d0935f4747dce7cc4bc7a868f4780435 100644 (file)
@@ -5,12 +5,12 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
 # So the comment on top is treated as a brief
 JAVADOC_AUTOBRIEF       = YES
index 460cc7c5aa2d48f045f565375ee37b2a8ffe2a45..ea2cd72808498656c43aafd8aab1359ad015c04f 100644 (file)
@@ -5,12 +5,12 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
 # So the two lines on top are treated as brief. Wtf.
 JAVADOC_AUTOBRIEF       = YES
index d2fcc288e4771d448f562df6b988bba801b287e4..b020f242b6657b21745d25e9c0a88a6df4b918dc 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 898e7d00c4d9c4acaa9f78128b14bf827926379c..f402b59ac24a014b92adeb47ab072f5ce10ce894 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 898e7d00c4d9c4acaa9f78128b14bf827926379c..f402b59ac24a014b92adeb47ab072f5ce10ce894 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index ecc3d464871fe6e35f26fde7f79cda8cc7f68336..a2cb09dc16148bf318cf2a15f21ffa248f5622cd 100644 (file)
@@ -6,13 +6,13 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_MATH_CACHE_FILE       =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_MATH_CACHE_FILE   =
+##! M_SEARCH_DISABLED   = YES
 
 ALIASES = \
     "m_div{1}=@xmlonly<mcss:div xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:class=\"\1\">@endxmlonly" \
index b6f89acf31e5b02a97f1f42cad0568f377af7398..abfef1b7c398cb4df29109ebfa7544dd56c153ee 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 59c69bc403351959f240b516f1594353d6df345e..a36ea8d12d5bfdc571c5520a8a43daa929feef68 100644 (file)
@@ -5,10 +5,10 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
-M_MATH_CACHE_FILE       =
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
+##! M_MATH_CACHE_FILE   =
index 933dfe74c348960caf90bad21576433006d556a9..cbd4078577089677c1557ce1d2e19b22b4cd5f6f 100644 (file)
@@ -5,10 +5,10 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
-M_MATH_CACHE_FILE       = xml/math.cache
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
+##! M_MATH_CACHE_FILE   = xml/math.cache
index 471f68b7ccb8ff0dd17f0cdc14449ea9e193db49..49e476ec24dca650c3a4ee46e65724f1d09fdffe 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 1d4433075013e595255815277fd94dd9409cd725..fa4481d6c4f2ff43e775f21b4d3449a57d3b0da7 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index fe6d3cfb49da351cd5400a430a2826dc009fc34f..ee1cb763207b56b06b94499866e06ff1cdbdaad9 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 97f2af0d468f957dca7bcbf25b7e27e62c941974..162364c74d57df81173b892cb7ebc21901c67fc8 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 97f2af0d468f957dca7bcbf25b7e27e62c941974..162364c74d57df81173b892cb7ebc21901c67fc8 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index eb8f8d1e88a42a00adcf9d4667dfb772e361456a..8c9510eb52dd0daa67a16f578e4ebdd421a576e1 100644 (file)
@@ -18,3 +18,11 @@ HTML_EXTRA_STYLESHEET += b.css
 # Escaping
 M_PAGE_HEADER = 'this is "quotes" \'apostrophes\''
 M_PAGE_FINE_PRINT = "this is \"quotes\""
+
+# Commented with a hashbang
+##! M_LINKS_NAVBAR1 = pages \
+##!     modules
+
+# Commented with a hashbang and no space
+##!M_LINKS_NAVBAR2 = files \
+##!annotated
diff --git a/doxygen/test/doxyfile_upgrade_custom_variables/.gitignore b/doxygen/test/doxyfile_upgrade_custom_variables/.gitignore
new file mode 100644 (file)
index 0000000..b655f1a
--- /dev/null
@@ -0,0 +1,2 @@
+Doxyfile-upgrade
+Doxyfile-upgrade.bak
diff --git a/doxygen/test/doxyfile_upgrade_custom_variables/Doxyfile b/doxygen/test/doxyfile_upgrade_custom_variables/Doxyfile
new file mode 100644 (file)
index 0000000..0a664a1
--- /dev/null
@@ -0,0 +1,21 @@
+# This variable is unknown to Doxygen and so it doesn't survive an upgrade
+UNKNOWN_VARIABLE = 1
+
+# COMMENTED_OUT_VARIABLE is commented-out, so it also doesn't survive
+
+# This one will survive, but is not recognized by m.css
+## HASHED_COMMENTED_VARIABLE = 2
+
+# This one is recognized by m.css and will survive, both lines
+##! HASHED_BANG_COMMENTED_VARIABLE = 3 \
+##!   HASHED_BANG_COMMENTED_VARIABLE_CONT
+
+# This one should also survive
+##!HASHED_BANG_COMMENTED_VARIABLE_NOSPACE = 4
+
+# This is known to Doxygen. It puts heavy spacing there though.
+INPUT = 5
+
+# This is at the end of the file (doesn't precede any known variable), but also
+# should survive
+##! HASHED_BANG_COMMENTED_VARIABLE_END = 6
index 20c2486a783047fa29a20836608234b2b12f64c0..0c683e31903f0adf6b2c9bd9babcb485c80b4935 100644 (file)
@@ -9,9 +9,9 @@ ALIASES                 = \
     "m_footernavigation=@xmlonly<mcss:footernavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" />@endxmlonly" \
     "m_examplenavigation{2}=@xmlonly<mcss:examplenavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:page=\"\1\" mcss:prefix=\"\2\" />@endxmlonly"
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index 364fcdfe9f1674b1c93722818ee03266247adc48..0db4bb1df66e6838d210ff1c3eed1b145bc906eb 100644 (file)
@@ -3,12 +3,12 @@ XML_OUTPUT              =
 PROJECT_NAME = "A project"
 PROJECT_BRIEF = "is cool"
 
-M_THEME_COLOR = 00ffff
-M_FAVICON = favicon-light.png
-M_PAGE_HEADER = "<p><a href=\"{filename}\">A self link</a>.</p>"
-M_PAGE_FINE_PRINT = "<p><a href=\"http://doxygen.org\">Doxygen</a> version {doxygen_version}.</p>"
-M_LINKS_NAVBAR1 = "files pages namespaces" \
-                  "annotated namespaces pages"
-M_LINKS_NAVBAR2 = "pages pages annotated"
-M_SEARCH_EXTERNAL_URL = "https://google.com/search?q=site:mcss.mosra.cz+{}"
-M_SEARCH_HELP = "Some <em>help</em>."
+##! M_THEME_COLOR       = 00ffff
+##! M_FAVICON           = favicon-light.png
+##! M_PAGE_HEADER       = "<p><a href=\"{filename}\">A self link</a>.</p>"
+##! M_PAGE_FINE_PRINT   = "<p><a href=\"http://doxygen.org\">Doxygen</a> version {doxygen_version}.</p>"
+##! M_LINKS_NAVBAR1     = "files pages namespaces" \
+##!                       "annotated namespaces pages"
+##! M_LINKS_NAVBAR2     = "pages pages annotated"
+##! M_SEARCH_EXTERNAL_URL = "https://google.com/search?q=site:mcss.mosra.cz+{}"
+##! M_SEARCH_HELP       = "Some <em>help</em>."
index 589305b630bf0cbb7bd8854dd437473e49d74d01..d606ff02e483acdf2cdaea8e3518f1136902aeae 100644 (file)
@@ -1,11 +1,11 @@
 XML_OUTPUT              =
 
-M_LINKS_NAVBAR1         = pages \
-                          namespaces \
-                          annotated \
-                          files
-M_LINKS_NAVBAR2         =
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_SEARCH_DISABLED       = YES
+##! M_LINKS_NAVBAR1     = pages \
+##!                       namespaces \
+##!                       annotated \
+##!                       files
+##! M_LINKS_NAVBAR2     =
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_SEARCH_DISABLED   = YES
index 2adc63d67190c4f8b8faeaab0391fb1896458df9..49ceace484c2e226587975e56b8b22810a7bc9ba 100644 (file)
@@ -1,9 +1,9 @@
 XML_OUTPUT              =
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DOWNLOAD_BINARY = YES
-M_SEARCH_HELP           = "Halp."
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DOWNLOAD_BINARY = YES
+##! M_SEARCH_HELP       = "Halp."
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index c6dc3fbdb083df6fb458dc7496c4b15bf5fd5053..455fa33de52af0fbd3b2a2ad57f5983c55bcabaf 100644 (file)
@@ -6,12 +6,12 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
 
 ALIASES = \
     "m_footernavigation=@xmlonly<mcss:footernavigation xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" />@endxmlonly"
index fac82ea9bd2f4351367a6e1cd67a41f5e03c5054..eae6dcfdab7342a225742a5526cb16ad739ec356 100644 (file)
@@ -5,11 +5,11 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         = "page-in-navbar pages page-b" \
-                          "page-b"
-M_LINKS_NAVBAR2         = "page-b" \
-                          "page-in-navbar page-b files"
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     = "page-in-navbar pages page-b" \
+##!                       "page-b"
+##! M_LINKS_NAVBAR2     = "page-b" \
+##!                       "page-in-navbar page-b files"
+##! M_SEARCH_DISABLED   = YES
index c99c91e68352a2f262144866010a108b00c163db..e2601c1b50b5911bada6c33eae8b827de7613c1f 100644 (file)
@@ -6,9 +6,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index d1b0fce7bc98e5c47122d84ef122c6d216958ee6..7705c563dc01d6ab819dc46c31e212ea007cf590 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DISABLED       = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DISABLED   = YES
index a2da4c68fa1588f55bf9bc1f2fee6e09b6c72ea3..a87b24c90c6cc0a52a5c16502617114de1db51cb 100644 (file)
@@ -14,9 +14,9 @@ ALIASES                 = \
     "m_keyword{3}=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:keyword=\"\1\" mcss:title=\"\2\" mcss:suffix-length=\"\3\" />@endxmlonly" \
     "m_enum_values_as_keywords=@xmlonly<mcss:search xmlns:mcss=\"http://mcss.mosra.cz/doxygen/\" mcss:enum-values-as-keywords=\"true\" />@endxmlonly"
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DOWNLOAD_BINARY = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DOWNLOAD_BINARY = YES
index 44b01a4847a183c07d2bae31d871ba20421f83b6..2678b4a33f1007c00da6a06c02d8abffb7962b07 100644 (file)
@@ -5,9 +5,9 @@ GENERATE_LATEX          = NO
 GENERATE_XML            = YES
 XML_PROGRAMLISTING      = NO
 
-M_PAGE_FINE_PRINT       =
-M_THEME_COLOR           =
-M_FAVICON               =
-M_LINKS_NAVBAR1         =
-M_LINKS_NAVBAR2         =
-M_SEARCH_DOWNLOAD_BINARY = YES
+##! M_PAGE_FINE_PRINT   =
+##! M_THEME_COLOR       =
+##! M_FAVICON           =
+##! M_LINKS_NAVBAR1     =
+##! M_LINKS_NAVBAR2     =
+##! M_SEARCH_DOWNLOAD_BINARY = YES
index e058b0835c7cc616e901671c835df2b97fd55ed4..a86a03112967177320f8ba432840f514cf6fd947 100644 (file)
 #   DEALINGS IN THE SOFTWARE.
 #
 
+import os
+import shutil
+import subprocess
 import unittest
 
 from dox2html5 import parse_doxyfile, State
 
+from . import BaseTestCase
+
 class Doxyfile(unittest.TestCase):
     def __init__(self, *args, **kwargs):
         unittest.TestCase.__init__(self, *args, **kwargs)
@@ -44,8 +49,8 @@ class Doxyfile(unittest.TestCase):
             'M_EXPAND_INNER_TYPES': False,
             'M_FAVICON': 'favicon-dark.png',
             'M_FILE_TREE_EXPAND_LEVELS': 1,
-            'M_LINKS_NAVBAR1': ['pages', 'namespaces'],
-            'M_LINKS_NAVBAR2': ['annotated', 'files'],
+            'M_LINKS_NAVBAR1': ['pages', 'modules'],
+            'M_LINKS_NAVBAR2': ['files', 'annotated'], # different order
             'M_MATH_CACHE_FILE': 'm.math.cache',
             'M_PAGE_FINE_PRINT': 'this is "quotes"',
             'M_PAGE_HEADER': 'this is "quotes" \'apostrophes\'',
@@ -70,3 +75,25 @@ list using <span class="m-label m-dim">&darr;</span> and
         state = State()
         with self.assertRaises(NotImplementedError):
             parse_doxyfile(state, 'test/doxyfile/Doxyfile-subdirs')
+
+class Upgrade(BaseTestCase):
+    def __init__(self, *args, **kwargs):
+        super().__init__(__file__, 'upgrade_custom_variables', *args, **kwargs)
+
+    def test(self):
+        # Copy the Doxyfile to a new location because it gets overwritten
+        shutil.copyfile(os.path.join(self.path, 'Doxyfile'),
+                        os.path.join(self.path, 'Doxyfile-upgrade'))
+
+        subprocess.run(['doxygen', '-u', 'Doxyfile-upgrade'], cwd=self.path)
+        with open(os.path.join(self.path, 'Doxyfile-upgrade'), 'r') as f:
+            contents = f.read()
+
+        self.assertFalse('UNKNOWN_VARIABLE' in contents)
+        self.assertFalse('COMMENTED_OUT_VARIABLE' in contents)
+        self.assertTrue('## HASHED_COMMENTED_VARIABLE = 2' in contents)
+        self.assertTrue('##! HASHED_BANG_COMMENTED_VARIABLE = 3 \\' in contents)
+        self.assertTrue('##!   HASHED_BANG_COMMENTED_VARIABLE_CONT' in contents)
+        self.assertTrue('##!HASHED_BANG_COMMENTED_VARIABLE_NOSPACE = 4' in contents)
+        self.assertTrue('INPUT                  = 5' in contents)
+        self.assertTrue('##! HASHED_BANG_COMMENTED_VARIABLE_END = 6' in contents)