LuigiTemplate=(function(){"use strict";var VERSION='0.4.1';var each=(function(){if(Array.prototype.forEach){return function(a,fn){a.forEach(fn);};}else{return function(a,fn){var i,l;for(i=0,l=a.length;i':'>','<':'<','&':'&'};return function(v){if(v===undefined||v===null) return'';return v.toString().replace(/(['"<>&])/g,function(s){return LUT[s];});};})()};var RES={actions:/%\{\s*([^\s\|\}]+)\s*((\s*\|(\s*[^\s\|\}]+)+)*)\s*\}|([^%]+|%)/g,filter:/(\S+)((\s*\S+)*)\s*/,delim_filters:/\s*\|\s*/,delim_args:/\s+/};function parse_template(s){var r=[];scan(s,RES.actions,function(m){if(m[1]){r.push({type:'action',key:m[1],filters:parse_filters(m[2])});}else{r.push({type:'text',text:m[5]});}});return r;} function parse_filters(filters){var r=[];each(filters.split(RES.delim_filters),function(f){f=trim(f);if(!f) return;var m=f.match(RES.filter);if(!m) throw new Error('invalid filter: '+f);var as=trim(m[2]);r.push({name:m[1],args:as.length?as.split(RES.delim_args):[]});});return r;} function init(s,filters){this.s=s;this.filters=filters||FILTERS;this.actions=parse_template(s);};function run(o){var i,l,f,fs,me=this;return map(this.actions,function(row){if(row.type=='text'){return row.text;}else if(row.type=='action'){if(!row.key in o) throw new Error('missing key: '+row.key) return reduce(row.filters,function(r,f){return me.filters[f.name](r,f.args,o,me);},o[row.key]);}else{throw new Error('BUG: invalid type: '+row.type);}}).join('');} function get_inline_template(key){var e=document.getElementById(key);if(!e) throw new Error('unknown inline template key: '+key);return e.innerText||'';} var T=init;T.prototype.run=run;T.Cache=function(templates,try_dom){this.templates=templates;this.try_dom=!!try_dom;this.cache={};};T.Cache.prototype.run=function(key,args){if(!(key in this.cache)){var s=null;if(key in this.templates){s=this.templates[key].join('');}else if(this.try_dom){s=get_inline_template(key);}else{throw new Error('unknown key: '+key);} this.cache[key]=new T(s);} return this.cache[key].run(args);};T.DOMCache=function(){this.cache={};};T.DOMCache.prototype.run=function(key,args){if(!(key in this.cache)) this.cache[key]=new T(get_inline_template(key));return this.cache[key].run(args);};T.dom=new T.DOMCache();T.FILTERS=FILTERS;T.VERSION=VERSION;T.run=function(s,o,f){return new T(s,f).run(o);} return T;}());