UNPKG

squirrelly

Version:

Simple and powerful template engine that supports helpers, partials, filters, native code, and Express.

3 lines (2 loc) 5.02 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).Sqrl={})}(this,function(e){"use strict";var n={},r={},t=/{{ *?(?:(?:(?:(?:([\w$]+ *?(?:[^\s\w($][^\n]*?)*?))|(?:@(?:([\w$]+:|(?:\.\.\/)+))? *(.+?) *))(?: *?(\| *?[\w$]+? *?)+?)?)|(?:([\w$]+) *?\(([^\n]*?)\) *?([\w$]*))|(?:\/ *?([\w$]+))|(?:# *?([\w$]+))|(?:([\w$]+) *?\(([^\n]*?)\) *?\/)|(?:!--[^]+?--)) *?}}\n?/g,i={s:"{{",e:"}}"},l=/"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*'|[\\]@(?:[\w$]*:)?[\w$]+|@(?:([\w$]*):)?([\w$]+)/g,a=t,o=i;function s(e,n){var r=e+a.source.slice(o.s.length,0-(o.e.length+3))+n+"\\n?",t=a.lastIndex;o={s:e,e:n},(a=RegExp(r,"g")).lastIndex=t}function f(e){return e=e.replace(l,function(e,n,r){return void 0===r?e:(void 0===n&&(n=""),"hvals"+n+"."+r)})}var u={if:{helperStart:function(e){return"if("+e+"){"},helperEnd:function(){return"}"},blocks:{else:function(){return"}else{"}}},each:{helperStart:function(e,n){return"for(var i=0;i<"+e+".length; i++){tR+=(function(hvals){var tR='';var hvals"+n+"=hvals;"},helperEnd:function(e){return"return tR})({this:"+e+"[i],index:i})};"}},foreach:{helperStart:function(e,n){return"for(var key in "+e+"){if(!"+e+".hasOwnProperty(key)) continue;tR+=(function(hvals){var tR='';var hvals"+n+"=hvals;"},helperEnd:function(e){return"return tR})({this:"+e+"[key], key: key})};"}},log:{selfClosing:function(e){return"console.log("+e+");"}},tags:{selfClosing:function(e){return s(e.slice(0,e.indexOf(",")).trim(),e.slice(e.indexOf(",")+1).trim()),""}},js:{selfClosing:function(e){return e+";"}}},c={"&":"&amp;","<":"&lt;",'"':"&quot;","'":"&#39;"};function v(e){return c[e]}var d=/[&<"']/g,h=/[&<"']/,p={e:function(e){var n=String(e);return h.test(n)?n.replace(d,v):n}},g={},w={start:"",end:""};var R=!0;function x(e,n){var r,t=!1,i="",l="";if(n&&""!==n){r=n.split("|");for(var a=0;a<r.length;a++)r[a]=r[a].trim(),""!==r[a]&&("safe"!==r[a]?(i="Sqrl.F."+r[a]+"("+i,l+=")"):t=!0)}return i+=w.start,l+=w.end,!t&&R&&(i+="Sqrl.F.e(",l+=")"),i+e+l}function y(e){var n,l=0,s="var tR='';",c=[],v=-1,d=0,h={};function p(n){l!==n&&(s+="tR+='"+e.slice(l,n).replace(/\\/g,"\\\\").replace(/'/g,"\\'")+"';")}for(o=i,(a=t).lastIndex=0;null!==(n=a.exec(e));){if(p(n.index),l=n[0].length+n.index,n[1])s+="tR+="+O(n[1],n[4])+";";else if(n[3])s+="tR+="+b(n[3],n[2],n[4])+";";else if(n[5]){var g=n[7];""!==g&&null!==g||(g=d,d++);var w=u.hasOwnProperty(n[5]);v+=1;var R=n[6]||"";R=f(R),w||(R="["+R+"]");var y={name:n[5],id:g,params:R,native:w};c[v]=y,w?(s+=u[n[5]].helperStart(R,g),l=a.lastIndex):s+="tR+=Sqrl.H."+n[5]+"("+R+",function(hvals){var hvals"+g+"=hvals;var tR='';"}else if(n[8]){var m=c[v];m&&m.name===n[8]?(v-=1,!0===m.native?s+=u[m.name].helperEnd(m.params,m.id):h[m.id]?s+="return tR}});":s+="return tR});"):console.error("Helper beginning & end don't match.")}else if(n[9]){var $=c[v];if($.native){var S=u[$.name];S.blocks&&S.blocks[n[9]]?(s+=S.blocks[n[9]]($.id),l=a.lastIndex):console.warn("Native helper '%s' doesn't accept that block.",$.name)}else h[$.id]?s+="return tR},"+n[9]+":function(hvals){var hvals"+$.id+"=hvals;var tR='';":(s+="return tR},{"+n[9]+":function(hvals){var hvals"+$.id+"=hvals;var tR='';",h[$.id]=!0)}else if(n[10]){var F=n[11]||"";if(F=f(F),"include"===n[10]){var P=e.slice(0,n.index),k=e.slice(n.index+n[0].length),q=F.replace(/'|"/g,""),H=r[q];e=P+H+k,l=a.lastIndex=n.index}else u.hasOwnProperty(n[10])&&u[n[10]].hasOwnProperty("selfClosing")?(s+=u[n[10]].selfClosing(F),l=a.lastIndex):s+="tR+=Sqrl.H."+n[10]+"("+F+");"}function O(e,n){return x("options."+e,n)}function b(e,n,r){return x(void 0!==n?"hvals"+(/(?:\.\.\/)+/g.test(n)?c[v-n.length/3-1].id:n.slice(0,-1))+"."+e:"hvals."+e,r)}}return p(e.length),s+="return tR",new Function("options","Sqrl",s.replace(/\n/g,"\\n").replace(/\r/g,"\\r"))}var m={};function $(e,n){var r=e.$file,t=e.$name,i=e.$cache;if(!1===i){if(r)return y(require("fs").readFileSync(r,"utf8"));if(n)return y(n);throw Error("No template")}if(r){if(m[r])return m[r];var l=require("fs").readFileSync(r,"utf8");return m[r]=y(l),m[r]}return t?m[t]?m[t]:n?(m[t]=y(n),m[t]):void 0:n?!0===i?m[n]?m[n]:(m[n]=y(n),m[n]):y(n):"Error"}function S(e,t){return t.$file=e,$(t)(t,{H:n,F:p,P:r})}e.Compile=y,e.F=p,e.H=n,e.P=r,e.Render=function(e,t){return"function"==typeof e?e(t,{H:n,F:p,P:r}):"string"==typeof e?$(t,e)(t,{H:n,F:p,P:r}):void 0},e.__express=function(e,n,r){return r(null,S(e,n))},e.autoEscaping=function(e){return R=e},e.defaultTags=function(e){s(e[0],e[1]),t=a,i=o},e.defineFilter=function(e,n){p[e]=n},e.defineHelper=function(e,r){n[e]=r},e.defineNativeHelper=function(e,n){u[e]=n},e.definePartial=function(e,n){r[e]=n},e.load=$,e.renderFile=S,e.setDefaultFilters=function(e){if("clear"===e)g={};else for(var n in e)e.hasOwnProperty(n)&&(g[n]=e[n]);!function(){for(var e in w={start:"",end:""},g)g.hasOwnProperty(e)&&g[e]&&(w.start+="Sqrl.F."+e+"(",w.end+=")")}()},Object.defineProperty(e,"__esModule",{value:!0})}); //# sourceMappingURL=squirrelly.min.js.map