nur-sery/wip/web/content/README.md

81 lines
2.3 KiB
Markdown
Raw Normal View History

2024-06-23 15:07:50 +04:00
# nulib\web\content
2024-07-18 16:54:12 +04:00
un contenu de tag (ou "contag") est un type spécial de contenu permettant de
gérer aussi les attributs du tag avec une syntaxe particulière.
2024-06-23 15:07:50 +04:00
2024-07-08 20:42:45 +04:00
les règles diffèrent légèrement d'un contenu classique:
2024-06-23 15:07:50 +04:00
- 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
2024-07-08 20:42:45 +04:00
- les Closure sont appelés dès la résolution, et leur valeur de retour est
inséré tel quel dans le flux
2024-06-23 15:07:50 +04:00
- 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
2024-07-08 20:42:45 +04:00
- 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
2024-06-23 15:07:50 +04:00
Par exemple, les deux contenus web suivants sont équivalents:
~~~php
# ce contenu:
$content1 = [
"before",
"class" => "first",
["class" => "second"],
2024-07-08 20:42:45 +04:00
function() { return func($arg); },
"attr" => [
"static",
"true" => true,
"false" => false,
],
2024-06-23 15:07:50 +04:00
"after",
];
# donne le même résultat que:
$content2 = [
"class" => "first second",
2024-07-08 20:42:45 +04:00
"attr" => "static true",
2024-06-23 15:07:50 +04:00
"before",
2024-07-08 20:42:45 +04:00
...cl::with(func("arg")),
2024-06-23 15:07:50 +04:00
"after",
];
~~~
lors de la définition d'attributs,
2024-07-08 20:42:45 +04:00
- 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
2024-06-23 15:07:50 +04:00
Par exemple, les deux contenus web suivants sont équivalents:
~~~php
# ce contenu:
$content1 = [
2024-07-08 20:42:45 +04:00
"class" => function() { return func($arg); },
2024-06-23 15:07:50 +04:00
];
# donne le même résultat que:
$content2 = [
2024-07-08 20:42:45 +04:00
"class" => func($arg),
2024-06-23 15:07:50 +04:00
];
~~~
De même, les deux contenus web suivants sont équivalents:
~~~php
# si $is_primary && !$is_danger
# alors ce contenu:
$content1 = [
2024-07-08 20:42:45 +04:00
"class" => [
2024-06-23 15:07:50 +04:00
"btn",
"btn-primary" => $is_primary,
"btn-danger" => $is_danger,
"btn-default" => !$is_primary && !$is_danger,
2024-07-08 20:42:45 +04:00
],
2024-06-23 15:07:50 +04:00
];
# 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