xref: /petsc/doc/update_htmlmap_links.py (revision 862e4a309d45a165aaa4da0d704ba733429d833a)
15becb6a3SPatrick Sananimport shutil
25becb6a3SPatrick Sananimport re
35becb6a3SPatrick Sananimport os
45becb6a3SPatrick Sanan
55becb6a3SPatrick Sananfrom build_classic_docs import HTMLMAP_DEFAULT_LOCATION
65becb6a3SPatrick Sanan
75becb6a3SPatrick Sanan
85becb6a3SPatrick Sanandef update_htmlmap_links(builder,
95becb6a3SPatrick Sanan                         htmlmap_filename=HTMLMAP_DEFAULT_LOCATION,
105becb6a3SPatrick Sanan                         htmlmap_modified_filename=HTMLMAP_DEFAULT_LOCATION + "_modified"):
11*862e4a30SBarry Smith    """ Update manualpage links in an htmlmap file for use with Sphinx HTML builders html and dirhtml
125becb6a3SPatrick Sanan
13*862e4a30SBarry Smith        This converts file names in the htmlmap file (ending with .md) to the locations of the
14*862e4a30SBarry Smith        file that Sphinx generates.
155becb6a3SPatrick Sanan    """
165becb6a3SPatrick Sanan
175becb6a3SPatrick Sanan    if builder.name == "dirhtml":
185becb6a3SPatrick Sanan        postfix = "/"
195becb6a3SPatrick Sanan    elif builder.name == "html":
205becb6a3SPatrick Sanan        postfix = ".html"
215becb6a3SPatrick Sanan    else:
225becb6a3SPatrick Sanan        raise Exception("Unsupported builder named %s" % builder.name)
235becb6a3SPatrick Sanan
245becb6a3SPatrick Sanan    with open(htmlmap_modified_filename, "w") as htmlmap_modified_file, open(htmlmap_filename, "r") as htmlmap_file:
255becb6a3SPatrick Sanan        pattern = re.compile(".*\+\+\+\+man\+(.*)$")  # Match URL in group
265becb6a3SPatrick Sanan        for line in htmlmap_file.readlines():
275becb6a3SPatrick Sanan            match = re.match(pattern, line)
285becb6a3SPatrick Sanan            if match:
295becb6a3SPatrick Sanan                url = match.group(1)
305becb6a3SPatrick Sanan                if url.startswith("manualpages"):
315becb6a3SPatrick Sanan                    line = os.path.splitext(line)[0] + postfix + "\n"
325becb6a3SPatrick Sanan            htmlmap_modified_file.write(line)
33