From f2a6c36bcee398c552777a8faa6a27058f7ea699 Mon Sep 17 00:00:00 2001 From: ankraft <an.kraft@gmail.com> Date: Fri, 26 Apr 2024 12:01:38 +0200 Subject: [PATCH] Made adding the title to the navigation as an extra navigation level optional (default: false) --- toMkdocs/toMkdocs.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/toMkdocs/toMkdocs.py b/toMkdocs/toMkdocs.py index 4acaae0..aaace80 100644 --- a/toMkdocs/toMkdocs.py +++ b/toMkdocs/toMkdocs.py @@ -422,13 +422,14 @@ def updateNotes(clauses:list[Clause]) -> list[Clause]: return clauses -def writeClauses(outClauses:list[Clause], filename:str, navTitle:str) -> None: +def writeClauses(outClauses:list[Clause], filename:str, navTitle:str, addNavTitle:bool = False) -> None: """ Write the clauses to separate files and create a navigation file. Args: outClauses: The list of clauses. filename: The name of the original markdown file. navTitle: The title of the navigation entry. This is used to determine the directories. + addNavTitle: Add the title as an extra navigation level to the navigation file. """ print(f'[green]Writing clauses to files') @@ -446,10 +447,12 @@ def writeClauses(outClauses:list[Clause], filename:str, navTitle:str) -> None: # write nav.yml file print(f'[green]Writing "_nav.yml"') + indentation = ' ' if addNavTitle else '' # TODO make number of spaces configurable with open(f'{os.path.dirname(filename)}/_nav.yml', 'w') as file: if veryVerbose: print(f'[dim]Writing navigation file') - #file.write(f' - {navTitle}:\n') + if addNavTitle: + file.write(f'{indentation}- {navTitle}:\n') for i, f in enumerate(outClauses): # TODO generate also the navigation for the first non-header clause @@ -466,11 +469,11 @@ def writeClauses(outClauses:list[Clause], filename:str, navTitle:str) -> None: _title = f.title.replace("'", '"') nextClause = outClauses[i+1] if i+1 < len(outClauses) else None if nextClause is None or nextClause.level <= f.level: - file.write(f"{' '*f.level}- '{_title}': '{navTitle}/{f.clauseNumber}.md'\n") + file.write(f"{indentation}{' '*f.level}- '{_title}': '{navTitle}/{f.clauseNumber}.md'\n") else: - file.write(f"{' '*f.level}- '{_title}':\n") + file.write(f"{indentation}{' '*f.level}- '{_title}':\n") if len(f) > 0: - file.write(f"{' '*nextClause.level}- 'Introduction': '{navTitle}/{f.clauseNumber}.md'\n") + file.write(f"{indentation}{' '*nextClause.level}- 'Introduction': '{navTitle}/{f.clauseNumber}.md'\n") def copyMediaFiles(filename:str, navTitle:str, mediaDirectory:str = 'media') -> None: @@ -510,7 +513,7 @@ def processDocument(args:argparse.Namespace) -> None: clauses = prepareForMkdocs(clauses, args.include_hanging_paragraphs) # Write the clauses to files - writeClauses(clauses, document, args.title) + writeClauses(clauses, document, args.title, args.nav_add_title) # Copy the media files copyMediaFiles(document, args.title, args.media_directory) @@ -528,6 +531,8 @@ if __name__ == '__main__': parser.add_argument('--split-level', '-sl', metavar = 'level', type = int, default = 2, help = 'on which level to split clauses to separate files') parser.add_argument('--media-directory', '-md', metavar = 'media-directory', default = 'media', help = 'directory name where media files are stored') parser.add_argument('--title', '-t', metavar = 'title', required = True, help = 'mkdocs navigation tile') + parser.add_argument('--nav-add-title', '-nat', action = 'store_true', default = False, help = 'add the title as an extra navigation level to the navigation file') + parser.add_argument('document', type = str, help = 'a oneM2M markdown specification document to process') args = parser.parse_args() -- GitLab