# nulib\web\content un contenu de tag est un type spécial de contenu permettant de gérer aussi les attributs du tag avec une syntaxe particulière. les règles diffèrent légèrement d'un contenu classique: - Si le contenu n'est pas un tableau: - une chaine est quotée avec `htmlspecialchars()` - un scalaire ou une instance d'objet sont pris tels quels - Sinon, le contenu doit être un tableau, séquentiel ou associatif - les Closure sont appelés dès la résolution, et leur valeur de retour est inséré tel quel dans le flux - les éléments séquentiels scalaires ou instance d'objets sont pris tels quels - les éléments associatifs sont des attributs, et sont fusionnés le cas échéant - les éléments séquentiels de type tableau sont évalues récursivement avec les mêmes règles (sauf la partie chaine quotée avec `htmlspecialchars()`) - il n'y a pas de syntaxe pour les éléments dynamiques comme les contenus classiques Par exemple, les deux contenus web suivants sont équivalents: ~~~php # ce contenu: $content1 = [ "before", "class" => "first", ["class" => "second"], function() { return func($arg); }, "attr" => [ "static", "true" => true, "false" => false, ], "after", ]; # donne le même résultat que: $content2 = [ "class" => "first second", "attr" => "static true", "before", ...cl::with(func("arg")), "after", ]; ~~~ lors de la définition d'attributs, - les valeurs séquentielles sont prises telles quelles - les valeurs associatives permettent de faire des définitions conditionnelles - les Closure sont appelés dès la résolution, et leur valeur de retour est inséré tel quel dans le flux Par exemple, les deux contenus web suivants sont équivalents: ~~~php # ce contenu: $content1 = [ "class" => function() { return func($arg); }, ]; # donne le même résultat que: $content2 = [ "class" => func($arg), ]; ~~~ De même, les deux contenus web suivants sont équivalents: ~~~php # si $is_primary && !$is_danger # alors ce contenu: $content1 = [ "class" => [ "btn", "btn-primary" => $is_primary, "btn-danger" => $is_danger, "btn-default" => !$is_primary && !$is_danger, ], ]; # donne le même résultat que: $content2 = [ "class" => "btn btn-primary", ]; ~~~ -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary