diff --git a/doc.zih.tu-dresden.de/util/check-TOC-equals-page-headings.py b/doc.zih.tu-dresden.de/util/check-TOC-equals-page-headings.py new file mode 100644 index 0000000000000000000000000000000000000000..97df2403e430c2163cfc00c86fa1592c681925f1 --- /dev/null +++ b/doc.zih.tu-dresden.de/util/check-TOC-equals-page-headings.py @@ -0,0 +1,44 @@ +""" +Check for consistency between TOC and page headings. +Provide as an command line argument the path to the mkdocs.yml file. + +Author: Taras Lazariv +""" + +import os +import sys +import yaml +import pandas as pd + +def list_and_read_files(path): + "List files in a directory recursively and read the first line of each file" + files = [] + firstline = [] + for root, _, filenames in os.walk(path): + for filename in filenames: + if filename.endswith('.md'): + files.append(os.path.join(root.split('/')[-1], filename)) + firstline.append(open(os.path.join(root, filename)).readline().strip().replace('# ','')) + df = pd.DataFrame({'file': files, 'firstline': firstline}) + return df + +def main(): + "Main function" + path = os.getcwd() + df = list_and_read_files(path) + + nav_section = dict() + + with open(sys.argv[1], 'r') as file: + for line in file: + line = line.rstrip() + if line.endswith('.md'): + nav_section.update(yaml.safe_load(line)[0]) + + nav_df = pd.DataFrame(nav_section.items(), columns=['title', 'file']) + with pd.option_context('display.max_rows', None): # more options can be specified also + complete_nav_df = pd.merge(df, nav_df, on='file', how='outer') + print(complete_nav_df.loc[~(complete_nav_df['firstline'] == complete_nav_df['title'])]) + +if __name__ == '__main__': + main() \ No newline at end of file