[SPIP Zone] Plugin config et valeur 0

Bonjour,

Avec le plugin cfg, j'ai voulu enregistrer une valeur 0 (zéro).

Et l'utiliser avec #CONFIG{soyezcreateurs/nombres_alanune,3}

Autrement dit, en proposant une valeur par défaut si non renseigné.

Or, la balise produit la valeur si non renseigné (3 ici) au lieu de 0 (zéro, la valeur effectivement renseignée)

D'après mes tests, c'est dans cfg_options.php ici :
function balise_CONFIG($p) {
  if (!$arg = interprete_argument_balise(1,$p)) {
    $arg = "''";
  }
  $sinon = interprete_argument_balise(2,$p);
  $p->code = 'lire_config(' . $arg . ',' .
    ($sinon && $sinon != "''" ? $sinon : 'null') . ',1)';
  return $p;
}

Si je ne met pas de valeur par défaut, il me renvoit bien 0 (zéro)

--
RealET

* RealET tapotait, le 18/02/2007 00:08:

Bonjour,

Avec le plugin cfg, j'ai voulu enregistrer une valeur 0 (zéro).

Et l'utiliser avec #CONFIG{soyezcreateurs/nombres_alanune,3}

Autrement dit, en proposant une valeur par défaut si non renseigné.

Or, la balise produit la valeur si non renseigné (3 ici) au lieu de 0 (zéro, la valeur effectivement renseignée)

D'après mes tests, c'est dans cfg_options.php ici :
function balise_CONFIG($p) {
  if (!$arg = interprete_argument_balise(1,$p)) {
    $arg = "''";
  }
  $sinon = interprete_argument_balise(2,$p);
  $p->code = 'lire_config(' . $arg . ',' .
    ($sinon && $sinon != "''" ? $sinon : 'null') . ',1)';
  return $p;
}

Si je ne met pas de valeur par défaut, il me renvoit bien 0 (zéro)

J'ai trouvé : à la fin de cfg_options.php
- return !$ret && $def ? $def : $ret;
+ if ($ret === '' && $def) {
+ return $def;
+ } else {
+ return $ret;
+ }

Je commite ?

--
Jacques — SPIP - Pyrat.net – Création de sites Internet

Bonjour,
Jacques PYRAT wrote:

* RealET tapotait, le 18/02/2007 00:08:

Bonjour,

Avec le plugin cfg, j'ai voulu enregistrer une valeur 0 (zéro).

Et l'utiliser avec #CONFIG{soyezcreateurs/nombres_alanune,3}

Autrement dit, en proposant une valeur par défaut si non renseigné.

Or, la balise produit la valeur si non renseigné (3 ici) au lieu de 0 (zéro, la valeur effectivement renseignée)

D'après mes tests, c'est dans cfg_options.php ici :
function balise_CONFIG($p) {
  if (!$arg = interprete_argument_balise(1,$p)) {
    $arg = "''";
  }
  $sinon = interprete_argument_balise(2,$p);
  $p->code = 'lire_config(' . $arg . ',' .
    ($sinon && $sinon != "''" ? $sinon : 'null') . ',1)';
  return $p;
}

Si je ne met pas de valeur par défaut, il me renvoit bien 0 (zéro)

J'ai trouvé : à la fin de cfg_options.php
- return !$ret && $def ? $def : $ret;
+ if ($ret === '' && $def) {
+ return $def;
+ } else {
+ return $ret;
+ }

Je commite ?

Non, parce que ça flingue les cas ou la variable de config est inconnue, les tests avec pasla,
cf. tests/ (à lancer par spip/tests/ puis donner base = plugins/cfg)

Faut qu'on trouve mieux...
--
toggg

bertrand Gugger wrote:

Bonjour,
Jacques PYRAT wrote:

* RealET tapotait, le 18/02/2007 00:08:

Bonjour,

Avec le plugin cfg, j'ai voulu enregistrer une valeur 0 (zéro).

Et l'utiliser avec #CONFIG{soyezcreateurs/nombres_alanune,3}

Autrement dit, en proposant une valeur par défaut si non renseigné.

Or, la balise produit la valeur si non renseigné (3 ici) au lieu de 0 (zéro, la valeur effectivement renseignée)

D'après mes tests, c'est dans cfg_options.php ici :
function balise_CONFIG($p) {
  if (!$arg = interprete_argument_balise(1,$p)) {
    $arg = "''";
  }
  $sinon = interprete_argument_balise(2,$p);
  $p->code = 'lire_config(' . $arg . ',' .
    ($sinon && $sinon != "''" ? $sinon : 'null') . ',1)';
  return $p;
}

Si je ne met pas de valeur par défaut, il me renvoit bien 0 (zéro)

J'ai trouvé : à la fin de cfg_options.php
- return !$ret && $def ? $def : $ret;
+ if ($ret === '' && $def) {
+ return $def;
+ } else {
+ return $ret;
+ }

Je commite ?

Non, parce que ça flingue les cas ou la variable de config est inconnue, les tests avec pasla,
cf. tests/ (à lancer par spip/tests/ puis donner base = plugins/cfg)

Faut qu'on trouve mieux...

Voilà c'est fait [9734], c'est is_null() qu'il fallait ... je vérifie la compat
--
toggg