Commit ea9475eb authored by ankraft's avatar ankraft
Browse files

Corrected printing of footnotes. Also, no more linebreaks at (pseudo)terminal...

Corrected printing of footnotes. Also, no more linebreaks at (pseudo)terminal width. This broke pipe table outputs
parent a6bd358c
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -12,7 +12,6 @@
"""

import argparse, sys
from rich import print
from markdownTools import analyseMarkdown, setLoggers

def main() -> None:
+52 −1
Original line number Diff line number Diff line
@@ -215,6 +215,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. """	
	clauses:list[Clause] = []
@@ -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()