Added a copy of Firebug Lite for debugging purposes. License is uncertain but being treated as MPL. (If is is not MPL then it is under something more permissive that permits relicensing anyway)
// 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(/\{lang:([a-z0-9_]+)\}/g, "' + $lang.get('$1') + '");
code = code.replace(/\<!-- BEGIN ([A-z0-9_-]+) --\>([\s\S]*?)\<!-- BEGINELSE \1 --\>([\s\S]*?)\<!-- END \1 --\>/ig, "' + ( ( this.tpl_bool['$1'] == true ) ? '$2' : '$3' ) + '");
code = code.replace(/\<!-- BEGIN ([A-z0-9_-]+) --\>([\s\S]*?)\<!-- END \1 --\>/ig, "' + ( ( this.tpl_bool['$1'] == true ) ? '$2' : '' ) + '");
return code;
}
function __tpExtractVars(code)
{
code = code.replace('\\', "\\\\");
code = code.replace("'", "\\'");
code = code.replace('"', '\\"');
code = code.replace(new RegExp(unescape('%0A'), 'g'), "\\n");
code = code.match(/\<!-- VAR ([A-z0-9_-]+) --\>([\s\S]*?)\<!-- ENDVAR \1 -->/g);
code2 = '';
for(var i in code)
if(typeof(code[i]) == 'string')
code2 = code2 + code[i];
code = code2.replace(/\<!-- VAR ([A-z0-9_-]+) --\>([\s\S]*?)\<!-- ENDVAR \1 -->/g, "'$1' : \"$2\",");
code = '( { ' + code + ' "________null________" : false } )';
vars = eval(code);
return vars;
}