modifs.mineures sans commentaires

This commit is contained in:
Jephté Clain 2024-07-08 20:42:45 +04:00
parent 23b8dd7d19
commit dbb67bc3bc
1 changed files with 25 additions and 15 deletions

View File

@ -1,19 +1,21 @@
# nulib\web\content
un contenu web est un type spécial de contenu permettant de gérer aussi les
attributs avec une syntaxe particulière.
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:
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 séqentiel sont du contenu dynamique
- les éléments séquentiels de type tableau associatif sont évalues
récursivement avec les mêmes règles (sauf la partie chaine quotée avec
`htmlspecialchars()`)
- 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
@ -22,31 +24,39 @@ $content1 = [
"before",
"class" => "first",
["class" => "second"],
["func", "arg"],
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",
func("arg"),
...cl::with(func("arg")),
"after",
];
~~~
lors de la définition d'attributs,
- un tableau séquentiel est un appel de fonction
- un tableau associatif permet de faire des définitions conditionnelles
- 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" => ["func", "arg"]],
"class" => function() { return func($arg); },
];
# donne le même résultat que:
$content2 = [
"class" => func("arg"),
"class" => func($arg),
];
~~~
De même, les deux contenus web suivants sont équivalents:
@ -54,12 +64,12 @@ De même, les deux contenus web suivants sont équivalents:
# si $is_primary && !$is_danger
# alors ce contenu:
$content1 = [
["class" => [
"class" => [
"btn",
"btn-primary" => $is_primary,
"btn-danger" => $is_danger,
"btn-default" => !$is_primary && !$is_danger,
]],
],
];
# donne le même résultat que:
$content2 = [