arguments des modeles en texte libre
L'environnement de calcul d'un modèle comporte une variable class
dont la valeur est le terme situé juste après le | initial. Exemple : Pour l'évaluation du modèle <jolimage|left>
, class
vaut left
. La valeur de class est passée en minuscule, ce qui a du sens pour certaines utilisations comme classe CSS (ce traitement est gênant dans le cas plus général, mais ce n'est pas le sujet ici).
Le sujet ici c'est que ce texte qui alimente class
a une limite : il ne peut pas contenir d'espaces. Quand il y a un espace, class
reste vide.
Bien que class
ne soit pas renseigné, le texte est présent en valeur profonde du tableau de l'environnement. On peut y accéder avec la fonction suivante :
/**
* Récupérer une class de modele avec ou sans espace
* Avec <unmodele|unargsansespace> , class vaut unargsansespace
* Avec <modele|un arg avec espace>, class vaut rien,
* mais args vaut ['un arg avec espace' => 'un arg avec espace']
* ET 'un arg avec espace' vaut 'un arg avec espace'
*
* @param array|string $env = #ENV* tableau de l'environnement reçu par le modèle
* @return string la class = l'argument après |, qu'il y ait un espace dedans ou pas
*/
function modele_get_class($env) : string {
if (!is_array($env)) {
$env = unserialize($env);
}
if (!is_array($env)) {
return 'Erreur modele_get_class : pas un tableau';
}
if (isset($env['class']) and $env['class']) {
return $env['class']; // cas actuel = class sans espace
}
if (isset($env['args'])) {
return array_shift($env['args']); // class avec espace
}
return 'Erreur modele_get_class : class indéfini';
}
La présente requête :
-
réaffirme l'intérêt de cette variable
class
: elle permet une syntaxe simplifiée pour les modèles, plus facile à documenter et à utiliser pour les rédacteurs. C'est donc une fonctionnalité à bichonner :-) -
demande que la valeur de
class
soit également renseignée lorsqu'il y a une espace. Cela a également du sens dans le cas historique des classes css puisqu'on peut vouloir spécifier plusieurs classes :<jolimage|left coins_arrondis cadre_blanc>
.