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