Skip to content
Snippets Groups Projects
Commit 44629598 authored by Andreas Kraft's avatar Andreas Kraft Committed by Miguel Angel Reina Ortega
Browse files

Optionally (default: true) remove hanging paragraphs from clauses with sub-clauses

parent 53875876
No related branches found
No related tags found
No related merge requests found
......@@ -275,12 +275,13 @@ def splitMarkdownDocument(clauses:list[Clause],
return outClauses
def prepareForMkdocs(clauses:list[Clause]) -> list[Clause]:
def prepareForMkdocs(clauses:list[Clause], includeHangingParagraphs:bool = False) -> list[Clause]:
""" Prepare the clauses for MkDocs. This includes removing the heading
from the clauses and marking the clauses that are only for navigation.
Args:
clauses: The list of clauses.
includeHangingParagraphs: Include hanging paragraphs in the output.
Returns:
The list of clauses.
......@@ -298,6 +299,17 @@ def prepareForMkdocs(clauses:list[Clause]) -> list[Clause]:
while clause.linesCount > 0 and clause.lines[0].text.strip() == '':
clause.lines.pop(0)
# Detect and handle hanging paragraphs. This is extra text in a clause, which
# has sub-clauses. This text is not allowed in oneM2M specifications.
for i, clause in enumerate(clauses):
if clause.level > 0 and clause.linesCount > 0:
# Check if there is a sub-clause in the next clause
if i + 1 < len(clauses) and clauses[i+1].level > clause.level:
# This is a hanging paragraph. Remove the text from the current clause.
print(f'[yellow]Hanging paragraph in clause "{clause.title}" {"(removed)" if not includeHangingParagraphs else "(kept)"}')
if not includeHangingParagraphs:
clauses[i].lines = []
# Repair wrong markdown for indented lines.
# Add 2 spaces to existing 2-space indentions
for clause in clauses:
......@@ -495,7 +507,7 @@ def processDocument(args:argparse.Namespace) -> None:
args.include_title)
clauses = updateLinks(clauses)
clauses = updateNotes(clauses)
clauses = prepareForMkdocs(clauses)
clauses = prepareForMkdocs(clauses, args.include_hanging_paragraphs)
# Write the clauses to files
writeClauses(clauses, document, args.title)
......@@ -511,6 +523,7 @@ if __name__ == '__main__':
parser.add_argument('--verbose', '-v', action = 'store_true', help = 'verbose output during processing')
parser.add_argument('--very-verbose', '-vv', action = 'store_true', help = 'very verbose output during processing')
parser.add_argument('--ignore-clause', '-ic', metavar = 'clause', nargs = '+', default = [ 'Contents', 'History' ], help = 'ignore headers in the markdown document')
parser.add_argument('--include-hanging-paragraphs', '-ihp', action = 'store_true', default = False, help = 'include hanging paragraphs (text in clauses with sub-clauses) in the output files')
parser.add_argument('--include-title', '-it', action = 'store_true', help = 'include the content before the first heading in the output files as "0.md"')
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')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment