from typing import Dict, Optional import re from app.plan_d_action.utils.interface import CORRESPONDANCE_COULEURS def remplacer_par_badge( markdown_text: str, correspondance: Optional[Dict[str, str]] = CORRESPONDANCE_COULEURS ) -> str: """Remplace certains mots par des badges colorés dans un texte Markdown. Args: markdown_text (str): Le texte Markdown à modifier. correspondance (dict, optional): Dictionnaire qui mappe les mots à remplacer vers les couleurs de leurs badges. Si None, utilise CORRESPONDANCE_COULEURS par défaut. Returns: str: Le texte Markdown modifié avec des badges ajoutés. """ # Échappe les mots à remplacer s'ils contiennent des accents ou espaces for mot, couleur in correspondance.items(): # Utilise des bords de mots (\b) pour éviter les remplacements partiels pattern = r'\b' + re.escape(mot) + r'\b' remplacement = f":{couleur}-badge[{mot}]" markdown_text = re.sub(pattern, remplacement, markdown_text) return markdown_text