Skip to content
Snippets Groups Projects
Commit f2a6c36b authored by Andreas Kraft's avatar Andreas Kraft 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
Branches
No related tags found
No related merge requests found
......@@ -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()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment