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