nur-ture/TODO.md

2.7 KiB

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
      $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
    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