diff --git a/toMkdocs/gridTableFilter.py b/toMkdocs/gridTableFilter.py index c630ae1c466941e93781a4bf5ef33c874c375600..027c69f8e2695740c14877d62ef757b2a474eea3 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 6c9dc412bf6b9b9f2df992fc2e6dce5f991a5400..67fafa5b0b6aa8a34082f7c207c5867c58b754db 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() + +