File size: 1,011 Bytes
b05542b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import re

PATTERN = re.compile(
    r"Disse:\s*(.+?)\s*Correction:\s*(.+?)\s*Explication:\s*(.+?)(?=\s*Disse:|\s*$)",
    re.DOTALL | re.IGNORECASE,
)

def parse_feedback(text: str) -> list[dict]:
    entries = []
    for m in PATTERN.finditer(text):
        entries.append({
            "disse": m.group(1).strip(),
            "correction": m.group(2).strip(),
            "explication": m.group(3).strip(),
        })
    return entries


def render_feedback_table(entries: list[dict]) -> list[list[str]]:
    return [[e["disse"], e["correction"], e["explication"]] for e in entries]


def strip_markdown(text: str) -> str:
    text = re.sub(r"\*\*(.+?)\*\*", r"\1", text)
    text = re.sub(r"\*(.+?)\*", r"\1", text)
    text = re.sub(r"`(.+?)`", r"\1", text)
    text = re.sub(r"#{1,6}\s*", "", text)
    text = re.sub(r"^[-*]\s", "", text, flags=re.MULTILINE)
    text = re.sub(r"!?\[.*?\]\(.*?\)", "", text)
    text = text.replace("▌", "")
    text = text.replace("🤖", "")
    return text.strip()