1*7553d27dSPatrick Sanan#!/usr/bin/env python 2*7553d27dSPatrick Sanan""" Helper to make links in HTML pages relative to a root """ 3*7553d27dSPatrick Sanan 4*7553d27dSPatrick Sananimport os 5*7553d27dSPatrick Sananimport fileinput 6*7553d27dSPatrick Sanan 7*7553d27dSPatrick Sanandef make_links_relative(root, placeholder="PETSC_DOC_ROOT_PLACEHOLDER"): 8*7553d27dSPatrick Sanan """ For .html files in root, replace placeholder with a relative path back up to root """ 9*7553d27dSPatrick Sanan excludes = ["_static", "_sources", "_images", "docs", "src", "include"] 10*7553d27dSPatrick Sanan root_level = root.count(os.path.sep) 11*7553d27dSPatrick Sanan for dirpath, dirnames, filenames in os.walk(root, topdown=True): 12*7553d27dSPatrick Sanan dirnames[:] = [dirname for dirname in dirnames if dirname not in excludes] 13*7553d27dSPatrick Sanan level = dirpath.count(os.path.sep) - root_level 14*7553d27dSPatrick Sanan relpath = (".." + os.path.sep) * level 15*7553d27dSPatrick Sanan for filename in filenames: 16*7553d27dSPatrick Sanan if filename.endswith(".html"): 17*7553d27dSPatrick Sanan filename_from_root = os.path.join(dirpath, filename) 18*7553d27dSPatrick Sanan with fileinput.FileInput(filename_from_root, inplace=True) as file: 19*7553d27dSPatrick Sanan for line in file: 20*7553d27dSPatrick Sanan print(line.replace(placeholder, relpath), end='') # prints to file 21