alexkueck commited on
Commit
e33d33d
1 Parent(s): 7584686

Update utils.py

Browse files
Files changed (1) hide show
  1. utils.py +38 -1
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 erkennen_und_formatieren_von_aufzaehlungen(text, styles):
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