Created
December 2, 2015 16:08
-
-
Save Rubentxu/540bb914829b7fb43ae1 to your computer and use it in GitHub Desktop.
/* * Funcion render Template. * El codigo en javascript debe estar envuelto entre #{ codigo.. }# * El modelo de datos debe estar envuelto entre #{= data.loquesea }# * La parte html va sin restrinciones. * a la funcion renderTmpl le pasamos la variable contenedora de la plantilla y el modelo de datos a usar en la plantilla. * La plantilla debe es…
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Funcion render Template. | |
* El codigo en javascript debe estar envuelto entre #{ codigo.. }# | |
* El modelo de datos debe estar envuelto entre #{= data.loquesea }# | |
* La parte html va sin restrinciones. | |
* a la funcion renderTmpl le pasamos la variable contenedora de la plantilla y el modelo de datos a usar en la plantilla. | |
* La plantilla debe estar un comentario multilinea dentro de una funcion. | |
* -- rdcabrera -- | |
*/ | |
//Ejemplo: | |
//renderTmpl("/*<span>#{= user.name }#</span>*/", { user : { name : "Juan Nadie" } }) | |
(function(){ | |
var cache = {}; | |
this.renderTmpl = function tmpl(stra, data){ | |
var result = ""; | |
try { | |
stra = stra.toString(); | |
var str = stra.substring(stra.indexOf("/*") + 2, stra.indexOf("*/")); | |
var fn = !/\W/.test(str) ? | |
cache[str] = cache[str] : | |
new Function("obj", | |
"var p=[],print=function(){p.push.apply(p,arguments);};" + | |
"with(obj){p.push('" + | |
str | |
.replace(/[\r\t\n]/g, " ") | |
.split("#{").join("\t") | |
.replace(/((^|}#)[^\t]*)'/g, "$1\r") | |
.replace(/\t=(.*?)}#/g, "',$1,'") | |
.split("\t").join("');") | |
.split("}#").join("p.push('") | |
.split("\r").join("\\'") | |
+ "');}return p.join('');"); | |
result = data ? fn(data) : fn({}); | |
} catch(err) { | |
(console.error || console.log).call(console, err.stack || err); | |
} | |
return result; | |
}; | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment