From f3f3fad38d1a92f4258ba4de3682461a036f8490 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Sat, 10 Jun 2023 13:33:31 +0200 Subject: [PATCH] refactor: caster les arguments de phraser_champs_etendus() + phpdoc --- ecrire/public/phraser_html.php | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/ecrire/public/phraser_html.php b/ecrire/public/phraser_html.php index 47d0ad2a2e..01c0c18492 100644 --- a/ecrire/public/phraser_html.php +++ b/ecrire/public/phraser_html.php @@ -313,21 +313,28 @@ function phraser_champs(string $texte, int $ligne, array $result): array { return $result; } -// Gestion des imbrications: -// on cherche les [..] les plus internes et on les remplace par une chaine -// %###N@ ou N indexe un tableau comportant le resultat de leur analyse -// on recommence tant qu'il y a des [...] en substituant a l'appel suivant - -function phraser_champs_etendus($texte, $ligne, $result) { +/** + * Phraser les champs etendus : c'est phraser_champs_interieurs qui va le faire + * on lui fournir un marqueur $sep qui n'est pas contenu dans le texte et qu'il peut utiliser de manière sure + * pour remplacer au fur et a mesure les champs imbriques qu'il va trouver + * + * @param $texte + * @param $ligne + * @param $result + * @return array|mixed + */ +function phraser_champs_etendus(string $texte, int $ligne, array $result): array { if ($texte === '') { return $result; } + $sep = '##'; - while (str_contains((string) $texte, (string) $sep)) { + while (str_contains($texte, $sep)) { $sep .= '#'; } - return array_merge($result, phraser_champs_interieurs((string)$texte, $ligne, $sep)); + $champs = phraser_champs_interieurs($texte, $ligne, $sep); + return array_merge($result, $champs); } /** @@ -538,7 +545,8 @@ function phraser_champs_exterieurs(string $texte, int $ligne, string $sep, array /** * Parser un texte pour trouver toutes les balises complètes [...(#TRUC)...] en gérant les imbrications possibles * Pour cela on commence par les plus profondes, sans rien dedans, - * on les remplace par un placehoder inactif et on recommence jusqu'à ce qu'on ne trouve plus rien + * on les remplace par un placehoder inactif %###N@ ou N indexe un tableau comportant le resultat de leur analyse + * et on recommence jusqu'à ce qu'on ne trouve plus rien * * @param string $texte * @param int $no_ligne -- GitLab