17553d27dSPatrick Sanan""" Helper to make links in HTML pages relative to a root """ 27553d27dSPatrick Sanan 37553d27dSPatrick Sananimport os 47553d27dSPatrick Sananimport fileinput 57553d27dSPatrick Sanan 6*1540e0edSPatrick Sananfrom ext.html5_petsc import PETSC_DOC_OUT_ROOT_PLACEHOLDER 7*1540e0edSPatrick Sananfrom build_classic_docs import classic_docs_subdirs 8*1540e0edSPatrick Sanan 9*1540e0edSPatrick Sanan 10*1540e0edSPatrick Sanandef make_links_relative(root, placeholder=PETSC_DOC_OUT_ROOT_PLACEHOLDER): 11*1540e0edSPatrick Sanan """ For .html files in root, replace placeholder with a relative path back up to root 12*1540e0edSPatrick Sanan 13*1540e0edSPatrick Sanan Exclude a specific set of subdirectories. 14*1540e0edSPatrick Sanan """ 15*1540e0edSPatrick Sanan excludes = ["_static", "_sources", "_images"] 16*1540e0edSPatrick Sanan excludes.extend(classic_docs_subdirs()) 177553d27dSPatrick Sanan root_level = root.count(os.path.sep) 187553d27dSPatrick Sanan for dirpath, dirnames, filenames in os.walk(root, topdown=True): 197553d27dSPatrick Sanan dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes] 207553d27dSPatrick Sanan level = dirpath.count(os.path.sep) - root_level 211f43888bSPatrick Sanan relpath = os.path.sep.join([".."] * level) 227553d27dSPatrick Sanan for filename in filenames: 237553d27dSPatrick Sanan if filename.endswith(".html"): 247553d27dSPatrick Sanan filename_from_root = os.path.join(dirpath, filename) 257553d27dSPatrick Sanan with fileinput.FileInput(filename_from_root, inplace=True) as file: 267553d27dSPatrick Sanan for line in file: 277553d27dSPatrick Sanan print(line.replace(placeholder, relpath), end='') # prints to file 28