xref: /petsc/doc/update_htmlmap_links.py (revision 3e2964d38d55b06155af5142e4db00339138e00c)
15becb6a3SPatrick Sananimport shutil
25becb6a3SPatrick Sananimport re
35becb6a3SPatrick Sananimport os
45becb6a3SPatrick Sanan
59cd31cfbSBarry Smithdef update_htmlmap_links(builder,htmlmap_filename):
6862e4a30SBarry Smith    """ Update manualpage links in an htmlmap file for use with Sphinx HTML builders html and dirhtml
75becb6a3SPatrick Sanan
8862e4a30SBarry Smith        This converts file names in the htmlmap file (ending with .md) to the locations of the
9862e4a30SBarry Smith        file that Sphinx generates.
105becb6a3SPatrick Sanan    """
115becb6a3SPatrick Sanan
125becb6a3SPatrick Sanan    if builder.name == "dirhtml":
135becb6a3SPatrick Sanan        postfix = "/"
145becb6a3SPatrick Sanan    elif builder.name == "html":
155becb6a3SPatrick Sanan        postfix = ".html"
165becb6a3SPatrick Sanan    else:
175becb6a3SPatrick Sanan        raise Exception("Unsupported builder named %s" % builder.name)
185becb6a3SPatrick Sanan
199cd31cfbSBarry Smith    with open(htmlmap_filename+'_modified', "w") as htmlmap_file_modified, open(htmlmap_filename, "r") as htmlmap_file:
20*42c192b0SJose E. Roman        pattern = re.compile(r".*\+\+\+\+man\+(.*)$")  # Match URL in group
215becb6a3SPatrick Sanan        for line in htmlmap_file.readlines():
225becb6a3SPatrick Sanan            match = re.match(pattern, line)
235becb6a3SPatrick Sanan            if match:
245becb6a3SPatrick Sanan                url = match.group(1)
255becb6a3SPatrick Sanan                if url.startswith("manualpages"):
265becb6a3SPatrick Sanan                    line = os.path.splitext(line)[0] + postfix + "\n"
279cd31cfbSBarry Smith            htmlmap_file_modified.write(line)
289cd31cfbSBarry Smith    os.rename(htmlmap_filename + '_modified',htmlmap_filename)
29