diff --git a/docs/test1.html b/docs/test1.html index 73861ce..e276509 100644 --- a/docs/test1.html +++ b/docs/test1.html @@ -10,7 +10,7 @@ My awesome header

todo: add links

amazing content

-

amazing footer

+

amazing footer

\ No newline at end of file diff --git a/html-combiner.py b/html-combiner.py index 611b776..a9cf93c 100755 --- a/html-combiner.py +++ b/html-combiner.py @@ -5,50 +5,58 @@ PAGE_DIR = "./pages/" TEMPLATE_DIR = "./templates/" TARGET_DIR = "./docs/" -INCLUDE_DECORATOR = "&include(" -INCLUDE_DECORATOR_END = ")" +INCLUDE_MARKER = "&include(" +INCLUDE_MARKER_END = ")" def process_dir(path: str = "") -> None: items = os.listdir(PAGE_DIR + path) - for i in items: - i_path = path + i - if os.path.isdir(i_path): - process_dir(i_path + "/") + for name in items: + if os.path.isdir(path + name): + process_dir(path + name + "/") else: - process_file(i_path) + process_file(path + name) def process_file(filepath: str) -> str: - contents = read_file(PAGE_DIR, filepath) - while INCLUDE_DECORATOR in contents: - contents = replace_next_include(contents) + contents = read_file(PAGE_DIR + filepath) + while INCLUDE_MARKER in contents: + contents = apply_include(contents) with open(TARGET_DIR + filepath, "w") as f: f.write(contents) -def replace_next_include(contents: str) -> str: - index_start, index_end = get_include_indices(contents) - - include_name = contents[index_start + len(INCLUDE_DECORATOR):index_end] +def apply_include(contents: str) -> str: + included_file = get_included_name(contents) - new_contents = read_file(TEMPLATE_DIR, include_name) + new_contents = read_file(TEMPLATE_DIR + included_file) + return insert_contents(contents, new_contents) + + +def insert_contents(contents, new_contents): + index_start, index_end = get_marker_indices(contents) return contents[:index_start] + new_contents + contents[index_end+1:] -def get_include_indices(contents: str) -> tuple: - index_start = contents.find(INCLUDE_DECORATOR) - index_end = contents.find(INCLUDE_DECORATOR_END, index_start) +def get_included_name(contents): + marker_start, marker_end = get_marker_indices(contents) + name_start = marker_start + len(INCLUDE_MARKER) + name_end = marker_end - len(INCLUDE_MARKER_END) + return contents[name_start:name_end + 1] + + +def get_marker_indices(contents: str) -> tuple: + index_start = contents.find(INCLUDE_MARKER) + index_end = contents.find(INCLUDE_MARKER_END, index_start) return (index_start, index_end) -def read_file(folder: str, filepath: str): +def read_file(filepath: str): contents = "" - with open(folder + filepath, "r") as f: + with open(filepath, "r") as f: contents = f.read() return contents - if __name__ == "__main__": process_dir() \ No newline at end of file