From dbb67bc3bcf60cbbc7599c1f09c979b6a5f3f5a6 Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Mon, 8 Jul 2024 20:42:45 +0400 Subject: [PATCH] modifs.mineures sans commentaires --- src/wip/web/content/README.md | 40 ++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/src/wip/web/content/README.md b/src/wip/web/content/README.md index a58f477..e351eaa 100644 --- a/src/wip/web/content/README.md +++ b/src/wip/web/content/README.md @@ -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 = [