Spaces:
Runtime error
Runtime error
Update utils.py
Browse files
utils.py
CHANGED
|
@@ -756,7 +756,7 @@ def create_picture(history, prompt):
|
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
| 758 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 759 |
-
def
|
| 760 |
"""
|
| 761 |
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 762 |
"""
|
|
@@ -786,7 +786,44 @@ def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
|
| 786 |
else:
|
| 787 |
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 788 |
return Paragraph(text, styles['BodyText'])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 789 |
|
|
|
|
| 790 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
| 791 |
def on_each_page(canvas, doc):
|
| 792 |
page_width, page_height = A4 # Oder das von Ihnen verwendete Seitenformat, z.B. A4
|
|
|
|
| 756 |
# Ausgabe in PDF des Chathistory
|
| 757 |
########################################
|
| 758 |
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 759 |
+
def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
|
| 760 |
"""
|
| 761 |
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 762 |
"""
|
|
|
|
| 786 |
else:
|
| 787 |
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 788 |
return Paragraph(text, styles['BodyText'])
|
| 789 |
+
#Aufzählungen in der History erkennen und auch als Auflistung darstellen
|
| 790 |
+
def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
|
| 791 |
+
"""
|
| 792 |
+
Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
|
| 793 |
+
"""
|
| 794 |
+
# Aufzählungszeichen oder Nummerierungen erkennen
|
| 795 |
+
aufzaehlungszeichen = ['-', '*', '•']
|
| 796 |
+
# Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
|
| 797 |
+
nummerierung_regex = r"^\d+\." # Beginnt mit einer oder mehreren Ziffern gefolgt von einem Punkt
|
| 798 |
+
|
| 799 |
+
zeilen = text.split('\n')
|
| 800 |
+
list_items = []
|
| 801 |
+
|
| 802 |
+
for zeile in zeilen:
|
| 803 |
+
# Prüft, ob die Zeile mit einem Aufzählungszeichen beginnt
|
| 804 |
+
if any(zeile.lstrip().startswith(zeichen) for zeichen in aufzaehlungszeichen) or re.match(nummerierung_regex, zeile.lstrip()):
|
| 805 |
+
# Entfernt das Aufzählungszeichen/Nummerierung für die Darstellung
|
| 806 |
+
cleaned_line = re.sub(nummerierung_regex, '', zeile.lstrip(), 1).lstrip() # Entfernt nummerierte Aufzählungszeichen
|
| 807 |
+
for zeichen in aufzaehlungszeichen:
|
| 808 |
+
if zeile.lstrip().startswith(zeichen):
|
| 809 |
+
cleaned_line = zeile.lstrip()[len(zeichen):].lstrip()
|
| 810 |
+
break
|
| 811 |
+
list_items.append(ListItem(Paragraph(cleaned_line, styles['BodyText'])))
|
| 812 |
+
else:
|
| 813 |
+
# Wenn die Zeile nicht als Teil einer Aufzählung erkannt wird, breche die Schleife ab
|
| 814 |
+
# und behandle den gesamten Text als normalen Paragraphen, wenn keine Liste erkannt wurde
|
| 815 |
+
if not list_items:
|
| 816 |
+
return Paragraph(text, styles['BodyText'])
|
| 817 |
+
break
|
| 818 |
+
|
| 819 |
+
if list_items:
|
| 820 |
+
# Eine Aufzählung wurde erkannt
|
| 821 |
+
return ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica')
|
| 822 |
+
else:
|
| 823 |
+
# Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
|
| 824 |
+
return Paragraph(text, styles['BodyText'])
|
| 825 |
|
| 826 |
+
|
| 827 |
#callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
|
| 828 |
def on_each_page(canvas, doc):
|
| 829 |
page_width, page_height = A4 # Oder das von Ihnen verwendete Seitenformat, z.B. A4
|