Commit f2a6c36b authored by ankraft's avatar ankraft Committed by Miguel Angel Reina Ortega
Browse files

Made adding the title to the navigation as an extra navigation level optional (default: false)

parent 44629598
Loading
Loading
Loading
Loading
+11 −6
Original line number Diff line number Diff line
@@ -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()