diff -r 902822492a68 -r fe660c52c48f includes/clientside/static/template-compiler.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/includes/clientside/static/template-compiler.js Wed Jun 13 16:07:17 2007 -0400 @@ -0,0 +1,78 @@ +// An implementation of Enano's template compiler in Javascript. Same exact API +// as the PHP version - constructor accepts text, then the assign_vars, assign_bool, and run methods. + +function templateParser(text) +{ + this.tpl_code = text; + this.tpl_strings = new Object(); + this.tpl_bool = new Object(); + this.assign_vars = __tpAssignVars; + this.assign_bool = __tpAssignBool; + this.run = __tpRun; +} + +function __tpAssignVars(vars) +{ + for(var i in vars) + { + this.tpl_strings[i] = vars[i]; + } +} + +function __tpAssignBool(vars) +{ + for(var i in vars) + { + this.tpl_bool[i] = ( vars[i] ) ? true : false; + } +} + +function __tpRun() +{ + if(typeof(this.tpl_code) == 'string') + { + tpl_code = __tpCompileTemplate(this.tpl_code); + try { + compiled = eval(tpl_code); + } + catch(e) + { + alert(e); + aclDebug(tpl_code); + } + return compiled; + } + return false; +} + +function __tpCompileTemplate(code) +{ + // Compile plaintext/template code to javascript code + code = code.replace(/\\/g, "\\\\"); + code = code.replace(/\'/g, "\\'"); + code = code.replace(/\"/g, '\\"'); + code = code.replace(new RegExp(unescape('%0A'), 'g'), '\\n'); + code = "'" + code + "'"; + code = code.replace(/\{([A-z0-9_-]+)\}/ig, "' + this.tpl_strings['$1'] + '"); + code = code.replace(/\/g); + code2 = ''; + for(var i in code) + if(typeof(code[i]) == 'string') + code2 = code2 + code[i]; + code = code2.replace(/\/g, "'$1' : \"$2\","); + code = '( { ' + code + ' "________null________" : false } )'; + vars = eval(code); + return vars; +} +