r13992 - spip/ecrire/public

Author: esj@rezo.net
Date: 2009-05-15 00:29:03 +0200 (ven, 15 mai 2009)
New Revision: 13992

Log:
Comme annoncé dans [13986], les balises {{{#INCLURE}}} et {{{#MODELE}}} rentrent dans le rang en acceptant l'écriture {{{#INCLURE(a,b,c} }}}, avec touts les niveaux d'imbrications que l'on souhaite, et avec les crochets pour spécifier les en-têtes et en-pieds conditionnés à la vacuité du résultat de la balise. La syntaxe {{{INCLURE(a){b}{c}}}} reste acceptée mais doit être considérée comme dépréciée, entre autres parce qu'elle n'accepte pas les crochets.

Au passage, un script pour passer de {{{<INCLURE ...>}}} (avec la vieille syntaxe) à {{{#INCLURE ...}}} (avec la nouvelle). Il serait intéressant de faire des mesures de performances de jeux de squelettes entiers grâce à lui: l'infrastructure d'insertion en multi-passes PHP est tellement lourde que je ne suis pas sûr qu'elle soit si avantageuse.

{{{

function exec_migre_inclure()
{
  migre_inclure_args(_request('dir'));
}

function migre_inclure_args($c)
{
  $p = find_in_path($c) . '/';
  $l = preg_files($p, '.html$');
  if (!$l) {
    include_spip('minipres');
    echo minipres(_L("repertoire $c sans squelette"));
  } else {
    echo "rep $c $p\n<br>";
    $i = 0;
    foreach ($l as $f) {
      $s1 = spip_file_get_contents($f);
      if (preg_match_all(',<(INCLU[DR]E[^>]*)>,', $s1, $inc, PREG_SET_ORDER))
  { foreach ($inc as $r) {
      $m = preg_replace('/}\s*{/', ",\n", $r[0]);
      $m = preg_replace('/([(]#[^)]*[)])/', '[\1]', $m);
      $m = '[(#' . substr($m,1,-1) . ')]';
      $s1 = str_replace($r[0], $m, $s1);
    }
    if (rename($f, "$f.old")) {
        ecrire_fichier($f, $s1);
        $i++;
    }
  }
    }
    echo "$i fichiers";
  }
}
}}}

Modified:
   spip/ecrire/public/compiler.php

Details: http://trac.rezo.net/trac/spip/changeset/13992