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