alexkueck commited on
Commit
2dbb7c2
·
verified ·
1 Parent(s): c7433b4

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +51 -7
utils.py CHANGED
@@ -755,11 +755,9 @@ def create_picture(history, prompt):
755
  ########################################
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
- """
763
  # Aufzählungszeichen oder Nummerierungen erkennen
764
  aufzaehlungszeichen = ['-', '*', '•']
765
  nummerierung = [f'{i}.' for i in range(1, 11)] # Beispiel für einfache Nummerierungserkennung
@@ -792,9 +790,6 @@ def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
792
 
793
  #Aufzählungen in der History erkennen und auch als Auflistung darstellen
794
  def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
795
- """
796
- Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
797
- """
798
  # Aufzählungszeichen oder Nummerierungen erkennen
799
  aufzaehlungszeichen = ['-', '*', '•']
800
  # Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
@@ -832,6 +827,55 @@ def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
832
  else:
833
  # Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
834
  return Paragraph(text, styles['BodyText'])
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
835
 
836
 
837
  #callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
@@ -878,7 +922,7 @@ def erstellePdf(file_path_download, ueberschrift, dic_history):
878
  # Einen Abstand hinzufügen (optional)
879
  elements.append(Spacer(1, 2*mm))
880
  elements.append(headline_assi)
881
- element_check = erkennen_und_formatieren_von_aufzaehlungen(assi,list_style)
882
  #p = Paragraph(assi, styles['NewStyle'])
883
  elements.append(element_check)
884
  # Einen Abstand hinzufügen (optional)
 
755
  ########################################
756
  # Ausgabe in PDF des Chathistory
757
  ########################################
758
+ """
759
  #Aufzählungen in der History erkennen und auch als Auflistung darstellen
760
  def erkennen_und_formatieren_von_aufzaehlungen_backup(text, styles):
 
 
 
761
  # Aufzählungszeichen oder Nummerierungen erkennen
762
  aufzaehlungszeichen = ['-', '*', '•']
763
  nummerierung = [f'{i}.' for i in range(1, 11)] # Beispiel für einfache Nummerierungserkennung
 
790
 
791
  #Aufzählungen in der History erkennen und auch als Auflistung darstellen
792
  def erkennen_und_formatieren_von_aufzaehlungen(text, styles):
 
 
 
793
  # Aufzählungszeichen oder Nummerierungen erkennen
794
  aufzaehlungszeichen = ['-', '*', '•']
795
  # Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
 
827
  else:
828
  # Keine Aufzählung erkannt, gebe einen normalen Paragraph zurück
829
  return Paragraph(text, styles['BodyText'])
830
+ """
831
+
832
+ ####################################
833
+ # Erkennt Aufzählungen im Text und gibt eine entsprechend formatierte ListFlowable oder Paragraph zurück.
834
+ ####################################
835
+ def verarbeite_text_und_aufzaehlungen(text, styles):
836
+ # Aufzählungszeichen oder Nummerierungen erkennen
837
+ aufzaehlungszeichen = ['-', '*', '•']
838
+ # Regulärer Ausdruck für Nummerierungen (z.B. "1.", "2.")
839
+ # Verbesserter regulärer Ausdruck, der optionale Leerzeichen vor der Nummerierung berücksichtigt
840
+ nummerierung_regex = r"^\s*\d+\.\s*" # Optional Leerzeichen, gefolgt von Ziffern und einem Punkt, dann Leerzeichen
841
+
842
+ zeilen = text.split('\n')
843
+ elements = [] # Eine Liste, die sowohl Paragraph-Objekte als auch ListFlowable-Objekte enthalten wird
844
+ list_items = [] # Temporäre Liste für die Aufzählungs-Items
845
+ paragraph_text = [] # Sammelt den Text für normale Paragraphen
846
+
847
+ for zeile in zeilen:
848
+ if any(zeile.lstrip().startswith(zeichen) for zeichen in aufzaehlungszeichen) or re.match(nummerierung_regex, zeile.lstrip()):
849
+ # Wenn bereits normaler Text gesammelt wurde, füge ihn als Paragraph hinzu, bevor eine neue Liste beginnt
850
+ if paragraph_text:
851
+ elements.append(Paragraph(' '.join(paragraph_text), styles['BodyText']))
852
+ paragraph_text = [] # Zurücksetzen des normalen Textsammelns
853
+
854
+ # Entfernt das Aufzählungszeichen/Nummerierung für die Darstellung
855
+ if re.match(nummerierung_regex, zeile.lstrip()):
856
+ cleaned_line = re.sub(nummerierung_regex, '', zeile.lstrip(), 1).lstrip()
857
+ else:
858
+ for zeichen in aufzaehlungszeichen:
859
+ if zeile.lstrip().startswith(zeichen):
860
+ cleaned_line = zeile.lstrip()[len(zeichen):].lstrip()
861
+ break
862
+ list_items.append(ListItem(Paragraph(cleaned_line, styles['BodyText'])))
863
+ else:
864
+ # Wenn eine Liste erkannt wurde und dann normale Zeilen folgen
865
+ if list_items:
866
+ # Füge die gesammelten ListItems als ListFlowable hinzu und setze die Sammlung zurück
867
+ elements.append(ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica'))
868
+ list_items = [] # Zurücksetzen der Listensammlung
869
+ paragraph_text.append(zeile)
870
+
871
+ # Füge verbleibende Elemente hinzu, falls vorhanden
872
+ if paragraph_text: # Verbleibender normaler Text
873
+ elements.append(Paragraph(' '.join(paragraph_text), styles['BodyText']))
874
+ if list_items: # Verbleibende Listenelemente
875
+ elements.append(ListFlowable(list_items, bulletType='bullet', start='bulletchar', bulletFontName='Helvetica'))
876
+
877
+ return elements
878
+
879
 
880
 
881
  #callback Methode, die auf jeder PDF Seite das Datum oben hinschreibt
 
922
  # Einen Abstand hinzufügen (optional)
923
  elements.append(Spacer(1, 2*mm))
924
  elements.append(headline_assi)
925
+ element_check = verarbeite_text_und_aufzaehlungen(assi,list_style)
926
  #p = Paragraph(assi, styles['NewStyle'])
927
  elements.append(element_check)
928
  # Einen Abstand hinzufügen (optional)