def _apply_ctx(text, ctx): """À l'intérieur d'un Répéteur de données, {{champ}} est remplacé par la valeur de ce champ pour la ligne en cours — appliqué au contenu ET aux attributs de l'élément et de tous ses descendants.""" if not ctx or not text: return text for k, v in ctx.items(): # "_forge_play_mode" (voir render_element_html.py) est un indicateur # interne posé dans ce même ctx, pas une valeur de champ {{...}} — # à ignorer ici. if k == "_forge_play_mode": continue text = text.replace("{{" + k + "}}", v) return text