Skip to content
Extraits de code Groupes Projets
Valider 65dae4eb rédigé par esj's avatar esj
Parcourir les fichiers

Deux améliorations liées dans la compilation des balises dynamiques.

Plutôt que de produire dans le code des appels à {{{lang_select}}} qui souvent ne servent pas car {{{recuperer_fond}}} en fait un aussi au départ, communiquer à celle-ci la langue désirée par la balise dynamique, ça supprime un couple d'appel à  {{{lang_select}}}. 

Puisqu'en fait on dispose de tout le contexte de compil lors de la production du l'appel d'une balise dynamique, autant l'envoyer à {{{recuperer_fond}}}, qui pourra ainsi fournir la localisation de l'éventuelle erreur à l'inclusion.
parent 020f2c65
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -243,12 +243,33 @@ function inclure_page($fond, $contexte, $connect='') { ...@@ -243,12 +243,33 @@ function inclure_page($fond, $contexte, $connect='') {
return $page; return $page;
} }
# Attention, un appel explicite a cette fonction suppose certains include // Fonction inseree par le compilateur dans le code compile.
# $echo = faut-il faire echo ou return // Elle recoit un contexte pour inclure un squelette,
// et les valeurs du contexte de compil prepare par memoriser_contexte_compil
// elle-meme appelee par calculer_balise_dynamique dans references.php:
// 0: sourcefile
// 1: codefile
// 2: id_boucle
// 3: ligne
// 4: langue
function inserer_balise_dynamique($contexte_exec, $contexte_compil)
{
if (!is_array($contexte_exec))
echo $contexte_exec; // message d'erreur etc
else {
if ($contexte_compil[4] AND empty($contexte_exec[2]['lang']))
$contexte_exec[2]['lang'] = $contexte_compil[4];
inclure_balise_dynamique($contexte_exec, true, $contexte_compil);
}
}
// http://doc.spip.org/@inclure_balise_dynamique // Attention, un appel explicite a cette fonction suppose certains include
function inclure_balise_dynamique($texte, $echo=true, $ligne=0) { // $echo = faut-il faire echo ou return
// http://doc.spip.org/@inclure_balise_dynamique
function inclure_balise_dynamique($texte, $echo=true, $contexte_compil=array())
{
if (is_array($texte)) { if (is_array($texte)) {
list($fond, $delainc, $contexte_inclus) = $texte; list($fond, $delainc, $contexte_inclus) = $texte;
...@@ -257,7 +278,7 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) { ...@@ -257,7 +278,7 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) {
$d = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : NULL; $d = isset($GLOBALS['delais']) ? $GLOBALS['delais'] : NULL;
$GLOBALS['delais'] = $delainc; $GLOBALS['delais'] = $delainc;
$page = recuperer_fond($fond,$contexte_inclus,array('trim'=>false, 'raw' => true)); $page = recuperer_fond($fond,$contexte_inclus,array('trim'=>false, 'raw' => true, 'compil' => $contexte_compil));
$texte = $page['texte']; $texte = $page['texte'];
...@@ -287,9 +308,11 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) { ...@@ -287,9 +308,11 @@ function inclure_balise_dynamique($texte, $echo=true, $ligne=0) {
} }
} }
if ($GLOBALS['var_mode'] == 'debug') if ($GLOBALS['var_mode'] == 'debug') {
// compatibilite : avant on donnait le numero de ligne ou rien.
$ligne = intval(isset($contexte_compil[3]) ? $contexte_compil[3] : $contexte_compil);
$GLOBALS['debug_objets']['resultat'][$ligne] = $texte; $GLOBALS['debug_objets']['resultat'][$ligne] = $texte;
}
if ($echo) if ($echo)
echo $texte; echo $texte;
else else
......
...@@ -290,24 +290,16 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect) { ...@@ -290,24 +290,16 @@ function filtre_introduction_dist($descriptif, $texte, $longueur, $connect) {
// http://doc.spip.org/@synthetiser_balise_dynamique // http://doc.spip.org/@synthetiser_balise_dynamique
define('CODE_INCLURE_BALISE', '<' . '?php define('CODE_INCLURE_BALISE', '<' . '?php
$lang_select = lang_select("%s");
include_once(_DIR_RACINE . "%s"); include_once(_DIR_RACINE . "%s");
inclure_balise_dynamique(balise_%s_dyn(%s), 1, %s); inserer_balise_dynamique(balise_%s_dyn(%s), array(%s));
if ($lang_select) lang_select();
?' ?'
.'>'); .'>');
// Cette fonction fabrique l'appel d'une balise dynamique a l'aide du contexte
// de compilation prepare par memoriser_contexte_compil
// elle-meme appelee par calculer_balise_dynamique dans references.php:
// 0: sourcefile
// 1: codefile
// 2: id_boucle
// 3: ligne
// 4: langue
function synthetiser_balise_dynamique($nom, $args, $file, $context_compil) { function synthetiser_balise_dynamique($nom, $args, $file, $context_compil) {
$r = sprintf(CODE_INCLURE_BALISE, $context_compil[4], $file, $nom, join(", ", array_map('argumenter_squelette', $args)), $context_compil[3]); $r = sprintf(CODE_INCLURE_BALISE, $file, $nom,
join(', ', array_map('argumenter_squelette', $args)),
join(', ', array_map('_q', $context_compil)));
return $r; return $r;
} }
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter