-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcoffebars_min.js
1 lines (1 loc) · 1.95 KB
/
coffebars_min.js
1
(function(){var args,global,pimatch,render,templates;global=function(){return this}(),pimatch=/\{\{\{?([\w\W]*?)\}\}\}?/g,templates={},exports.render=render=function(e,t){var n,r;return n=(r=templates[t])!=null?r:templates[t]=exports.toFunction(t),n(e)},exports.toFunction=function(source){return eval(exports.toJavaScript(source))},exports.toJavaScript=function(e){var t;return t=require("coffee-script").compile(exports.toCoffeeScript(e)),t.replace(/;\s*$/,"")},exports.toCoffeeScript=function(e){var t,n,r,i,s,o,u,a,f,l,c,h;t=[],o=1,s=function(){var e,t,n;t="";for(e=n=0;0<=o?n<o:n>o;e=0<=o?++n:--n)t+=" ";return t},l=function(e,n){return n==null&&(n=0),t.push(s()),t.push(e,"\n"),o+=n},u=0,h=function(t){var n,r;return n=e.substring(u,(r=t!=null?t.index:void 0)!=null?r:e.length),u=pimatch.lastIndex,l("write "+JSON.stringify(n))},i=function(e,t){var n,r,i,o,u,a,f,l,c;a=Number.MAX_VALUE,u=e.split(/\r\n|\r|\n/);for(r=f=0,l=u.length;f<l;r=++f){i=u[r];if(!(i.trim().length>0))continue;if(r===0)throw new Error("Multiline script cannot start on same line as opening brace:\n"+t[0]);o=(c=i.match(/^\s*/))!=null?c[0].length:void 0,o!=null&&(a=Math.min(a,o))}return n=s(),u.map(function(e){return n+e.substring(a)}).join("\n")};while(a=pimatch.exec(e))h(a),f=a[1],n=0,/\r|\n/.test(f)?f=i(f,a):/^\s*(else|catch)\b\s*([\w\W]+)/.test(f)?(o--,n=1,f=f.trim()):/^\s*(if|for|while|unless|try)\b\s*([\w\W]+)/.test(f)&&!/\b(then|end)\b/.test(f)?(n=1,f=f.trim()):/^\s*end\s*$/.test(f)?(o--,f=null):(r=a[0].substring(0,3)!=="{{{",f="write ("+f+"), "+r),f!=null&&l(f,n);return h(a),e=t.join(""),c="template = (write) ->\n"+e+"\n return\n\nreturn (context, write) ->\n buffer = null\n if not write\n buffer = []\n write = (text) -> buffer.push text if text?\n template.call context, write\n buffer?.join ''",c},require.main===module&&(args=process.argv.slice(2),args.length===0?console.log("Usage: coffeebars template"):console.log(exports.parse(require("fs").readFileSync(args[0],"utf8"))))}).call(this)