# TODO * [ ] bbnurse -cmk supprime la classe dans nur\sery après l'avoir copié dans la destination ## Vrac * classe de base `profile_manager` qui permet de gérer des profils * class Tool permettant d'appliquer un traitement à une valeur scalaire * ArrayTool permet d'appliquer les traitement à tous les éléments du tableau * les traitements sont une suite d'opérations à faire, ou de filtres à appliquer, qui ne sont appliqués que lors du parcours effectif de la liste * exemple ```php $result = ArrayTool::with($source) ->filterKey("key") ->filter("value") ->add("value", "key") ->addAll($iterable) ->all(); ``` déterminer le genre de traitements que l'on peut offrir * syntaxe pour CTable: définition des en-têtes et des valeurs des colonnes dans la même expression ~~~php new CTable($rows, [ "contents" => [ ## champ ["Nom", "nom"], ["Prénom", "prenom"], ## fonction ["Age", function(Cursor $cursor) { return (new Date())->diff($cursor->row["date_naissance"]); }], ## Pas de contenu ["Vide", null], ## Contenu dynamique ["Contenu", [ "before", v::span("hello"), Cursor::dyn("name"), "after", Cursor::dyn(function(Cursor $cursor) { return $cursor["surname"]; }), ]], ## colspan ["First", function() { return "sur deux colonnes"; }, "colspan" => 2, ], ["Second", null], ## colspan dynamique # la valeur de Element n'est évaluée que si colspan==null ["Groupe", function(Cursor $row) { $break = $breaker->shouldBreakOn($row["code_groupe"])); if ($break) { $row->set("colspan", 2); return "{$row["code_groupe"]} {$row["libelle_groupe"]}"; } else { $row->set("colspan", null); return null; } }, "colspan" => function(Cursor $row) { return $row->get("colspan"); }], ["Element", function(Cursor $row) { return $row["libelle_element"]; }] ], ]); ~~~ bien entendu, bien que ce ne soit pas démontré ici, le premier argument (l'en-tête) est un contenu, pas seulement une chaine * Cursor::dyn permet d'insérer une valeur qui sera évaluée plus tard lors de la résolution du contenu * pour Cursor, CTable, etc., un paramètre "params_func" permet de générer une partie des paramètres de façon dynamique. c'est juste du sucre, c'est strictement équivalent à construire le tableau des paramètres avant d'instancier l'objet. -*- coding: utf-8 mode: markdown -*- vim:sw=4:sts=4:et:ai:si:sta:fenc=utf-8:noeol:binary