-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathformatters.py
54 lines (46 loc) · 1.95 KB
/
formatters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
def format_content(content):
"""
Formatea el contenido para mejorar su presentación.
- Detecta párrafos y los envuelve en <p>.
- Detecta enlaces y los convierte en clickables.
- Detecta listas y las formatea como <ul> y <li>.
- Resalta títulos con un estilo especial.
"""
formatted_content = ""
lines = content.split("\n") # Dividir el contenido en líneas
in_list = False # Para controlar si estamos dentro de una lista
for line in lines:
line = line.strip()
if not line:
continue # Ignorar líneas vacías
# Detectar títulos (líneas que terminan con ":")
if line.endswith(":"):
formatted_content += f'<h3 class="text-xl font-bold mb-2">{line}</h3>'
continue
# Detectar listas (líneas que comienzan con "-")
if line.startswith("-"):
if not in_list:
formatted_content += '<ul class="list-disc list-inside mb-4">'
in_list = True
formatted_content += f'<li class="text-gray-700">{line[1:].strip()}</li>'
continue
else:
if in_list:
formatted_content += '</ul>'
in_list = False
# Detectar enlaces (líneas que contienen "http://" o "https://")
if "http://" in line or "https://" in line:
parts = line.split()
for part in parts:
if part.startswith("http://") or part.startswith("https://"):
formatted_content += f'<a href="{part}" class="text-blue-500 hover:underline" target="_blank">{part}</a> '
else:
formatted_content += f'{part} '
formatted_content += '<br>'
continue
# Formatear como párrafo
formatted_content += f'<p class="text-black mb-2">{line}</p>'
# Cerrar la lista si aún está abierta
if in_list:
formatted_content += '</ul>'
return formatted_content