-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreckon.min.js
1 lines (1 loc) · 2.68 KB
/
reckon.min.js
1
(function(){'use strict';var settings={stringPrototype:true,delimStart:'{{',delimEnd:'}}'};var Reckon=function(params){return new ReckonInstance(params)};var ReckonInstance=function(params){this.version='0.1.0';this.delimStart=settings.delimStart;this.delimEnd=settings.delimEnd;this.text=typeof params!=="undefined"&¶ms.text!=="undefined"?params.text:'';this.scopes=typeof params!=="undefined"&&typeof params.scope!=="undefined"?[].concat(params.scope):[];this.applyConfig();if(typeof params!=="undefined"&&typeof params.text!=="undefined")this.compile()};ReckonInstance.prototype=Reckon.fn={compile:function(param){var rInstance=this;if(typeof param!=="undefined"){rInstance.text=param.text;rInstance.scopes=[].concat(param.scope)}var re=new RegExp(['{%(.+?)%}|',this.delimStart,'(.+?)',this.delimEnd].join(''),'g');rInstance.raw=rInstance.text;rInstance.text=rInstance.text.replace(re,function(_,$1,$2){var computed;if($1){computed=$1}if($2){var scopeBox=function(expr,localScope){var variables='';if(typeof window!=="undefined"?localScope!==window:true){for(var i in localScope){variables+='var '+i+' = localScope.'+i+'; '}}var unbox='(function() { '+variables+' try { return eval(expr);} catch(e) {} })()';return eval(unbox)};if(rInstance.scopes.length){var numScopes=rInstance.scopes.length;for(var i=0;i<numScopes;i++){var scope=rInstance.scopes[i];computed=scopeBox($2,scope);if(typeof computed==="function"){computed=computed.call(scope)}if(typeof computed==="object"){computed=computed.toString()}if(computed!==undefined)break}}else{computed=scopeBox($2,(typeof window!=="undefined"?window:{}))}computed=computed!==undefined?computed:_}return computed});return rInstance},toString:function(){return this.text},applyConfig:function(setting){if(typeof setting==="undefined"){if(typeof window!=="undefined"){if(typeof window.reckonSettings!=="undefined"){if(typeof window.reckonSettings.delimStart){settings.delimStart=window.reckonSettings.delimStart}if(typeof window.reckonSettings.delimEnd){settings.delimEnd=window.reckonSettings.delimEnd}}}}else{if(typeof setting.delimStart){settings.delimStart=setting.delimStart}if(typeof setting.delimEnd){settings.delimEnd=setting.delimEnd}}this.delimStart=settings.delimStart;this.delimEnd=settings.delimEnd;return this}};if(settings.stringPrototype===true){String.prototype.reckon=function(scopes){return Reckon({text:this,scope:scopes}).toString()}}if(typeof window!=="undefined"){if(!window.reckon){window.reckon=Reckon;if(typeof window.reckonSettings!=="undefined"){if(typeof window.reckonSettings.delimStart){settings.delimStart=window.reckonSettings.delimStart}if(typeof window.reckonSettings.delimEnd){settings.delimEnd=window.reckonSettings.delimEnd}}}}else{module.exports=Reckon}})();