From ea9475eb75f041729d4e41c609019464226c8c26 Mon Sep 17 00:00:00 2001 From: ankraft <an.kraft@gmail.com> Date: Sun, 30 Mar 2025 13:43:08 +0200 Subject: [PATCH] Corrected printing of footnotes. Also, no more linebreaks at (pseudo)terminal width. This broke pipe table outputs --- toMkdocs/gridTableFilter.py | 1 - toMkdocs/markdownTools.py | 53 ++++++++++++++++++++++++++++++++++++- 2 files changed, 52 insertions(+), 2 deletions(-) diff --git a/toMkdocs/gridTableFilter.py b/toMkdocs/gridTableFilter.py index c630ae1..027c69f 100644 --- a/toMkdocs/gridTableFilter.py +++ b/toMkdocs/gridTableFilter.py @@ -12,7 +12,6 @@ """ import argparse, sys -from rich import print from markdownTools import analyseMarkdown, setLoggers def main() -> None: diff --git a/toMkdocs/markdownTools.py b/toMkdocs/markdownTools.py index 6c9dc41..67fafa5 100644 --- a/toMkdocs/markdownTools.py +++ b/toMkdocs/markdownTools.py @@ -214,6 +214,13 @@ class Footnote: self.line = line """ The line of the footnote. """ + + def __str__(self) -> str: + return self.line.text + + + def __repr__(self) -> str: + return self.__str__() class Document: """ Represents the document object. """ @@ -386,7 +393,7 @@ class Document: def __str__(self) -> str: """ Return the document as a string. """ - return '\n'.join([ str(c) for c in self.clauses ]) + return '\n'.join([ str(c) for c in self.clauses + self.footnotes ]) def __repr__(self) -> str: @@ -545,3 +552,47 @@ def analyseMarkdown(filename:Optional[str]=None, inLines:Optional[list[str]]=Non return Document(outClauses, footnotes) +def main() -> None: + """Hauptfunktion zur Verarbeitung von Markdown-Dateien über die Kommandozeile.""" + import argparse + + parser = argparse.ArgumentParser(description='Markdown-Dateien verarbeiten, um Gittertabellen zu konvertieren und andere Formatierungen zu handhaben') + parser.add_argument('eingabe', help='Eingabe-Markdown-Datei') + parser.add_argument('-v', '--verbose', action='store_true', help='Ausführliche Ausgabe aktivieren') + parser.add_argument('-vv', '--sehr-verbose', action='store_true', help='Sehr ausführliche Ausgabe aktivieren') + parser.add_argument('-i', '--ignoriere-titel', nargs='+', default=[], help='Liste der zu ignorierenden Titel') + parser.add_argument('-s', '--teilungs-ebene', type=int, default=1, help='Ebene, auf der das Dokument geteilt werden soll (Standard: 1)') + parser.add_argument('-f', '--ignoriere-erste', action='store_true', help='Inhalt bis zur ersten Überschrift ignorieren') + + args = parser.parse_args() + + # Verbositätsebenen setzen + global verbose, veryVerbose + verbose = args.verbose + veryVerbose = args.sehr_verbose + + # Markdown-Datei verarbeiten + doc = analyseMarkdown(args.eingabe) + + # Dokument teilen und verarbeiten + doc.splitMarkdownDocument( + ignoreTitles=args.ignoriere_titel, + splitLevel=args.teilungs_ebene, + ignoreUntilFirstHeading=args.ignoriere_erste + ) + + # Dokumentenelemente aktualisieren + doc.insertFootnotes() + doc.updateLinks() + doc.updateNotes() + + # Verarbeitetes Dokument ausgeben + for clause in doc.clauses: + print(f"\n{'#' * clause.level} {clause.title}") + for line in clause.lines: + print(line.text, end='') + +if __name__ == '__main__': + main() + + -- GitLab