Documentation de jstemplatebuilder
==================================
Principes
---------
jstemplatebuilder permet de générer du code XUL, intégré où l'on veut, à partir d'un fichier gabarit.
La génération est conditionnée par les valeurs de variables javascript.
Format du fichier de template
-------------------------------
Le fichier est en xml. Le minimum est :
Voici les balises spécifiques à jstemplatebuilder qui vont conditionner la génération.
Légende :
exprvar est à remplacer par un nom de variable javascript ou du code javascript
var est à remplacer par un nom de variable
expression doit être une expression javascript renvoyant vrai/faux
string est à remplacer par du simple texte
insert le contenu renvoyé par exprvar (génère un node xml de type texte)
ajoute l'attribut "attr" avec la valeur renvoyée par exprvar, à la balise parente générée.
...
insère les balises filles si l'expression est vérifiée
à l'interieur du if, on peut aussi avoir deux balises spécifiques
..
contenu à inserer si l'expression est vraie
...
contenu à inserer si l'expression est fausse
...
parcourt le tableau/objet javascript var1. pour chaque occurence, met sa valeur
dans var2 et sa clé dans var3 (clé = indice ou nom de propriete), et génère le code inclus
dans .
créer/modifie une variable dans le moteur de template, avec le nom var et la valeur exprvar
affiche un dump de exprvar et/ou une chaine "string" dans la console
Il existe aussi un attribut jstemplate à indiquer dans les balises à générer :
ajoute l'attribut "attr" avec la valeur de "exprvar" dans le tag. Si vous voulez modifier plusieurs
attributs, utilisez la balise jstpl (cf plus haut)
exemple de fichier template
----------------------------
Appel en javascript
--------------------
Pour la génération du template, il faut faire appel à l'objet jsTemplateBuilder
// instanciation
var jstpl = new jsTemplateBuilder();
// creation des variables javascript utilisées dans le template
jstpl.assign('message','Bonjour !');
jstpl.assign('autremessage', ['lorem','ispum','dolor']);
jstpl.assign('premiertest',0);
jstpl.assign('desactive','true');
jstpl.assign('prenoms', ['Laurent','Daniel','Tristan']);
// on peut aussi donner directement un objet au lieu de faire des assigns:
var datas = {
message:'Bonjour !',
autremessage: ['lorem','ispum','dolor'],
premiertest:0,
desactive:'true',
prenoms : ['Laurent','Daniel','Tristan'],
}
var jstpl = new jsTemplateBuilder(datas);
// ensuite on peut demander la génération des éléments :
jstpl.build( letemplate , element , vider);
/*
letemplate = le nom du fichier contenant le nom du template (chemin relatif au fichier de la fenêtre)
element = id de l'element dans lequel on insère les balises générées. peut être aussi directement un objet DOM
vider = boolean indiquant si on supprime les fils de element avant insertion
*/
jstpl.build( 'motemplate.jstpl' , "maboite" , true);
// ou
var elt=document.getElementById('toto');
jstpl.build( 'motemplate.jstpl' , elt , true);