Soyez le premier à donner votre avis sur cette source.
Vue 5 549 fois - Téléchargée 366 fois
function JTemplate() {} JTemplate.prototype={ vdata:null, str_var:"this.vdata.", p_this: new RegExp("[\$]","gmi"), patern: new RegExp("(\{(/|(if|while) ([^\{\}]+)|([\$])([^\{\} ]+))\})","gmi"), error:null, parse: function(data) { var datab=data.split(this.patern); var action=[]; var strout=""; for (var i=0; i < datab.length; i++ ) { if ( datab[i].match(this.patern) ) { if ( datab[i+2] == "if" ) { if ( !action.length || (action.length && action[action.length-1].v) ) { test=eval(datab[i+3].replace(this.p_this,this.str_var)); action.push({t:"if",v:test}); } else action.push({t:"if",v:false}); } else if ( datab[i+2] == "while" ) { if ( !action.length || (action.length && action[action.length-1].v) ) { test=eval(datab[i+3].replace(this.p_this,this.str_var)); action.push({t:"while",v:test,p:i}); } else action.push({t:"while",v:false,p:i}); } else if ( datab[i+1] == "/" ) { if ( !action.length ) { this.error="error"; alert(this.error); return false; } else if (action[action.length-1].t != "while" || !action[action.length-1].v ) action.pop(); else if (action[action.length-1].t == "while") { i=action[action.length-1].p-6; action.pop(); } } else if ( datab[i+4] == "$" ) { if ( !action.length || ( action.length && action[action.length-1].v )) { myvar=(this.str_var+datab[i+5]).replace(this.p_this,this.str_var); myvar=eval(myvar); strout+=myvar; } } i+=5; } else { if ( !action.length || ( action.length && action[action.length-1].v )) strout+=datab[i]; } } return strout; } } str="start encore un test {if 1} <ul>{while $test++<5}\ <li>loop haha {$test} </li>{/}</ul> end {/} hihhiih"; test = new JTemplate(); test.vdata={myvar:"sa marche", test:3}; document.write(str+"<hr />"); document.write(test.parse(str));
22 juin 2011 à 12:06
;-)
8 juin 2009 à 16:10
Très bon concept... je ne regrette que l'absence de {foreach}, si on reprend la syntaxe Smarty, pour le parcourt de tableau... .. .
@ tchaoo°
6 déc. 2008 à 02:06
5 déc. 2008 à 15:49
En tant qu'utilisateur de Smarty, je trouve le concepte de template très pratique et permet d'avoir un code bien plus claire. Après, il est vrai que le PHP et Javascript sont différent.
Enfin après ce n'est qu'une manière de faire parmis t'en d'autre (surtout en Javascript).
Have fun
5 déc. 2008 à 15:04
Par exemple, dernièrement, j'ai été confronté au problème suivant :
J'avais sur un document Js une liste d'entêtes XML à envoyer via Ajax. Chaque entête avait une voir deux propriétés spécifiques. Exemple :
var xmlHeaders = {
action : '',
getProperty : '',
etc...
}
Ici le système de template est tout à fait convenant. De plus cela évite d'avoir N variables qui se promènent.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.