L'usage des générateurs, et parmi eux surtout les composants, peuvent s'adapter au contexte de chaque espace grâce à des paramètres de génération (gen_params).

Les paramètres de génération des pages sont multiples et très évolutifs en fonction des générateurs. Leur enregistrement comme attributs des tables de la base de données oblige l'adaptation fréquente de sa structure et la définition superflue de beaucoup de valeurs non utilisée pour une page. Pour éviter ça, un attribut parameters dans les tables spaces et generators enregistre une liste de valeurs qui seront utilisées dans les processus de génération des pages ; chaque paramètre est de plus définit en cascade suivant l'arbre des espaces.

1. Format des paramètres

Chaque attribut parameters est un texte dont chaque ligne définit la valeur d'un paramètre.

Toutes les valeurs sont traitées comme des chaines de caractères.

1.1. Syntaxe d'une ligne

[+|–] cle_alphanum[(:| =>| =) (valeur|'valeur'|"valeur")] [# commentaire]

Une ligne comporte, dans l'ordre :

  • un indicateur d'importance, facultatif ;
  • un identifiant de paramètre, obligatoire ;
  • un groupe valeur facultatif comprenant :
    • un séparateur d'affectation « : » (non précédé d'une espace), « => » ou « = »,
    • une chaine de valeur ;
  • un groupe commentaire facultatif comprenant :
    • un séparateur « # » de commentaires,
    • une chaine de commentaire, facultatif.

Des espaces ou assimilées (tabulations, retour-chariot, saut de ligne...) peuvent être ajoutées entre les champs précédents ainsi qu'en début ou en fin de ligne.

Les lignes vides ou blanches ou ne comportant que des commentaires sont ignorées.

1.2. Indicateur d'importance

L'indicateur d'importance peut être l'un des suivants :

  • le signe plus « + », indiquant que la valeur ne peut pas être redéfinie ;
  • le signe moins « – », indiquant que la valeur ne peut pas être héritée.

1.3. Identifiant

Un identifiant est composé d'un ou plusieurs caractères parmi les lettres minuscules ou majuscules, les chiffres et le caractère « _ » de soulignement. La casse des lettres est significative.

Par convention, la partie précédent le premier souligné désignera le composant de référence.

1.4. Valeur

La valeur est extraite après le signe égale,

  • soit entre deux apostrophes simples « ' » ;
  • soit entre deux apostrophes doubles « '' » ;
  • soit du premier caractère non blanc jusqu'au signe « # » de commentaire ou la fin de la ligne.

L'absence de signe égale et de valeur est équivalent à la valeur Vrai (true).

1.5. Valeur indirecte

Si la valeur est extraite après le signe égale commence par une étoile « * » (la valeur ne doit pas être entre apostrophes), alors la chaine qui suit l'étoile donne le nom de l'identifiant dont il faut prendre la valeur.

1.6. Valeur « nil »

Une valeur peut être supprimée en lui donnant la valeur « nil » sans la placer entre apostrophes. Son usage est utile pour arrêter sa transmission lors de la collecte des valeurs décrite au chapitre suivant.

NB : Placée entre apostrophes ("nil" ou 'nil'), la valeur sera réelle et celle des trois lettres n, i, et l.

1.7. Valeurs « true » et « false »

De même, les valeurs Vrai (true) et Faux (false) sont définies en plaçant les mentions « true » et « false » directement après le signe égale (=), sans apostrophes simples ou doubles.

1.8. Exemples

Syntaxe correcte :
+ p9001_contact = 'Atelier'
site_code=CM
  +valeur_vide
   footer_with_comments => nil
– préfixe: *site_code
Syntaxe incorrecte :
= indicateur incorrect
cle : valeur # espace avant :
param = 'valeur # pas de 2° apostrophe
couleur = *bordure (si bordure non définie)
Syntaxe ambigüe :
fond_clair = #336699
écrire :   fond_clair = '#336699'
interprétée comme
fond_clair = '' → # commentaire 336699

2. Priorité des valeurs

2.1. Ordre de collecte des valeurs

Les attributs parameters sont collectés et concaténés sur les enregistrements, dans l'ordre suivant :

  1. du générateur associé à l'espace courant ; 
  2. des ancêtres de l'espace courant, en partant de l'espace racine jusqu'à cet espace courant.

La liste concaténée est alors analysée de la première à la dernière ligne.

2.2. Gestion des collisions

Si la valeur d'un même paramètre est définie plusieurs fois, celle qui sera prise en compte sera :

  • la première marquée importante (par le signe +),
  • sinon la dernière rencontrée, une valeur peu impor­tante (signe –) étant ignorée si elle n'est pas sur l'espace courant.

Une valeur importante (+) ne peut donc être redéfinie.

Une valeur peu importante (–) sur un espace n'est prise en compte que pour cet espace. Sur un générateur, elle sera ignorée, car effacée au niveau des espaces.

NB : Il est possible de définir une valeur applicable sur toute une branche d'espaces sauf à sa racine. Pour ça, il faut la déclarer deux fois dans les paramètres de la racine, une première fois normalement, puis comme valeur nulle peu importante.

Ex. :     couleur_fond: yellow
- couleur_fond: '#3cc'
    footer_with_comments
- footer_with_comments: nil

La première ligne définit la valeur qui sera héritée par les espaces fils, la seconde la redéfinit loca­lement pour l'espace courant. Il est à noter dans l'exemple de droite que la première ligne définit une valeur vide (pas de valeur) et la seconde la supprime (pseudo-valeur nil).

version 0.9.5-0429-141207
↑ Haut