nornj
Version:
A powerful template engine that can works with React, JSX enhancement or alternative tools.
7 lines (6 loc) • 14.5 kB
JavaScript
/*!
* NornJ template engine v5.3.5
* (c) Joe_Sky
* Released under the MIT License.
*/
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e=e||self).NornJ={})}(this,function(e){"use strict";var u=function e(){return e["taggedTmpl"+(e.outputH?"H":"")].apply(null,arguments)};function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function v(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){if(!(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)))return;var n=[],t=!0,i=!1,o=void 0;try{for(var a,s=e[Symbol.iterator]();!(t=(a=s.next()).done)&&(n.push(a.value),!r||n.length!==r);t=!0);}catch(e){i=!0,o=e}finally{try{t||null==s.return||s.return()}finally{if(i)throw o}}return n}(e,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}u.preAsts={},u.asts={},u.templates={},u.errorTitle="[NornJ]",u.tmplRule={},u.outputH=!1,u.global="undefined"!=typeof self?self:global,u.textTag="nj-text",u.textMode=!1,u.noWsTag="nj-noWs",u.noWsMode=!1,u.fixTagName=!0;var t=Array.prototype.push,i=Array.prototype.slice,o=Object.prototype.hasOwnProperty,a=Object.prototype.toString,s=u.errorTitle,l=Object.defineProperty,c=Object.defineProperties;function r(r){return function(e){return a.call(e)==="[object "+r+"]"}}var f=r("Number"),p=r("String"),y=r("Map"),d=r("WeakMap"),g=r("Set"),h=r("WeakSet");function m(e,r){return t.apply(e,r),e}function b(e,r,n){return i.call(e,r,n)}function x(e){return Array.isArray(e)}function j(e){var r=n(e);return!x(e)&&("function"===r||"object"===r&&!!e)}var w,P=(w="length",function(e){return null==e?void 0:e[w]});function S(e){var r=P(e);return"number"==typeof r&&0<=r}function O(e,r,n){var t=e.size,i=0,o=!0,a=!1,s=void 0;try{for(var u,l=e[Symbol.iterator]();!(o=(u=l.next()).done);o=!0){var c=u.value,f=void 0;if(n){var p=v(c,2);f=r.call(e,p[1],p[0],i,t)}else f=r.call(e,c,i,t);if(!1===f)break;i++}}catch(e){a=!0,s=e}finally{try{o||null==l.return||l.return()}finally{if(a)throw s}}}function C(e,r,n){if(e)if(null==n&&(n=S(e)),n)for(var t=0,i=e.length;t<i;t++){if(!1===r.call(e,e[t],t,i))break}else if(g(e)||h(e))O(e,r);else if(y(e)||d(e))O(e,r,!0);else for(var o=Object.keys(e),a=o.length,s=0;s<a;s++){var u=o[s];if(!1===r.call(e,e[u],u,s,a))break}}var _=/(\n|\r)?[\s\xA0]+$/;function k(){}function N(e,r,n){if(!e)switch(n){case"ex":throw Error(s+'Extension tag "'+r+'" is undefined, please check it has been registered.');default:throw Error(s+(r||e))}}function T(e,r){switch(r){case"f":e='A filter called "'+e+'" is undefined.'}console.warn(s+e)}function A(){return Object.create(null)}var F=/["]+/g,E=/[']+/g;function L(e){return~e.indexOf("-")&&(e=e.replace(/-\w/g,function(e){return e.substr(1).toUpperCase()})),e}var H=Object.assign||function(e){for(var r=1,n=arguments;r<n.length;r++){var t=n[r];for(var i in t)o.call(t,i)&&(e[i]=t[i])}return e};function M(e){return e[0].toUpperCase()+e.substr(1)}function W(e){return e[0].toLowerCase()+e.substr(1)}function z(e){return M(e)}function K(e){return e}H(u,{defineProp:l,defineProps:c,arrayPush:m,arraySlice:b,isArray:x,isObject:j,isNumber:f,isString:p,isArrayLike:S,isMap:y,isWeakMap:d,isSet:g,isWeakSet:h,each:C,noop:k,throwIf:N,warn:T,obj:A,camelCase:L,assign:H,upperFirst:M,lowerFirst:W,capitalize:z,as:K});var R=Object.freeze({__proto__:null,defineProp:l,defineProps:c,isNumber:f,isString:p,isMap:y,isWeakMap:d,isSet:g,isWeakSet:h,arrayPush:m,arraySlice:b,isArray:x,isObject:j,isArrayLike:S,each:C,trimRight:function(e){return e.replace(_,function(e,r){return r?"\n":""})},noop:k,throwIf:N,warn:T,error:function(e){console.error(s+e)},obj:A,clearQuot:function(e,r){if(null!=e){var n;if(null==r){var t=e[0];"'"===t?n=E:'"'===t&&(n=F)}else n=r?F:E;return n&&(e=e.replace(n,"")),e}},camelCase:L,assign:H,upperFirst:M,lowerFirst:W,capitalize:z,as:K});H(u,{config:function(e){var r=e.createElement,n=e.outputH;r&&(u.createElement=r),null!=n&&(u.outputH=n)}});var $={"&":"&",">":">","<":"<",'"':""","'":"'"},I=/[&><"']/g;var G={nbsp:" ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"",zwj:"",lt:"<",gt:">",amp:"&",quot:'"',"#x27":"'"},D=RegExp("&("+Object.keys(G).join("|")+");","g");H(u,{escape:function(e){return null==e?"":e.replace?e.replace(I,function(e){return $[e]}):e},unescape:function(e){return null==e?"":e.replace?e.replace(D,function(e,r){return G[r]}):e}});var U,J,q=/^(-?([0-9]+[.]?[0-9]+)|[0-9])$/;function B(e){if(j(e)||x(e)||f(e))return e;for(var r,n,t=/([^\s:]+)[\s]?:[\s]?([^;]+)[;]?/g;r=t.exec(e);){var i=r[1],o=r[2];n=n||{},/^[A-Z-]+$/.test(i)&&(i=i.toLowerCase()),n[i=L(i)]=q.test(o)?+o:o}return n}function Q(e,r,n){for(var t,i,o=0,a=(r=r||this.data).length;o<a;o++)if((i=r[o])&&void 0!==(t=i[e]))return n?{source:i,value:t,prop:e,_njSrc:!0}:t}function Z(e,r){return null==e?e:e._njTmpl?e.call(r):e.call(r.$this,r)}function V(e,r,n,t,i){var o;return o=t.icp&&(o=Q(n,t.icp))||r.cp[e],null!=i&&o&&(o=o[i]),o||n}function X(e,r,n,t,i){return null!=e?p(e)?V(e.toLowerCase(),n,e,i):e:V(r,n,t,i)}function Y(e,r){return null!=e&&""!==e?e:r}function ee(e,r){var n=e.args;if(n)for(var t=n.length;t--;)r.unshift(n[t])}function re(e,r){return r?H({},e,{data:r.data?m(r.data,e.data):e.data,parent:r.newParent?e:e.parent,index:null!=r.index?r.index:e.index,item:null!=r.item?r.item:e.item}):e}function ne(e){for(var r="",n=arguments.length,t=Array(1<n?n-1:0),i=1;i<n;i++)t[i-1]=arguments[i];var o=H.apply(R,[e].concat(t));for(var a in o){var s=o[a];r+=" "+a+(a!==s?'="'+s+'"':" ")}return r}function te(r,n,t){return function(e){return t(r,n,e)}}function ie(t,i){return function(e,r){var n=b(arguments);return i(t,this&&this._njCtx?H({},this,{data:m(n,this.data)}):{data:n,getData:Q,get $this(){return this.data[this.data.length-1]},d:Q,icp:function(e){var r;return e&&e.components&&(x(r=e.components)||(r=[r])),r}(e&&e._njParam?r:e),_njCtx:!0})}}function oe(e){if(null==e.level)return"";for(var r="",n=0;n<e.level;n++)r+=" ";return r}function ae(e){return null==e.index?"":0==e.index?"":"\n"}function se(e){return u.createElement.apply(null,e)}function ue(e){return e.source?e.value.bind(e.source):e}(J=U=U||{}).onlyLowerCase="onlyLowerCase",J.onlyUpperCase="onlyUpperCase";var le={if:function(e,r){var n;e&&e._njOpts&&(e=(r=e).props.condition),"false"===e&&(e=!1);var t=r.props;if(e)n=(t&&t.then||r.children)();else if(t){var i=t.else;if(t.elseifs){var o=t.elseifs.length;C(t.elseifs,function(e,r){if(e.value)return n=e.fn(),!1;r===o-1&&i&&(n=i())},!0)}else i&&(n=i())}return r.useString&&null==n?"":n},then:function(e){return e.tagProps.then=e.children},else:function(e){return e.tagProps.else=e.children},elseif:function(e,r){e&&e._njOpts&&(e=(r=e).props.condition||r.props.value);var n=r.tagProps;n.elseifs||(n.elseifs=[]),n.elseifs.push({value:e,fn:r.children})},switch:function(n,e){var t;n&&n._njOpts&&(n=(e=n).props.value);var i=e.props,r=i.elseifs||[{}],o=r.length;return C(r,function(e,r){if(n===e.value)return t=e.fn(),!1;r===o-1&&i.else&&(t=i.else())},!0),t},each:function(e,s){e&&e._njOpts&&(e=(s=e).props.of);var u,l=s.useString,r=s.props;if(e){u=l?"":[];var n=S(e),c=n||g(e)||h(e);C(e,function(e,r,n,t){var i={data:[e],index:c?r:n,item:e,newParent:!0},o={"@first":0===i.index,"@last":i.index===(c?n:t)-1};c||(o["@key"]=r),i.data.push(o);var a=s.children(i);l?u+=a:u.push(a)},n),l||u.length||(u=null),u&&u.length||!r||!r.else||(u=r.else())}else r&&r.else&&(u=r.else()),l&&null==u&&(u="");return u},prop:function(e,r){var n,t=r.value();n=void 0!==t?t:!r.useString||e,r.tagProps[r.outputH?function(e){switch(e){case"class":e="className";break;case"for":e="htmlFor"}return e}(e):e]=n},spread:function(e,n){var t=n.tagProps;C(e,function(e,r){void 0===t[r]&&(n.tagProps[r]=e)},!1)},show:function(e){if(!e.value()){var r=e.tagProps,n=e.useString;r.style||(r.style=n?"":{}),n?r.style+=(r.style?";":"")+"display:none":x(r.style)?r.style.push({display:"none"}):r.style.display="none"}},obj:function(e){return e.props},block:function(e){return e.children()},with:function(e,r){if(e&&e._njOpts)return(r=e).children({data:[r.props]});var n=r.props;return r.children({data:[n&&n.as?function(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}({},n.as,e):e]})},arg:function(e){var r=e.tagProps;r.args||(r.args=[]),r.args.push(e.value())},css:function(e){return e.props.style}};function ce(e,r){var n={onlyGlobal:!1,useString:!1,newContext:!0,isSubTag:!1,isDirective:!1,isBindable:!1,useExpressionInProps:!1,hasName:!0,noTagName:!1,hasTagProps:!0,hasTmplCtx:!0,hasOutputH:!1};return e&&(n=H(n,e)),r&&(n=H(n,r)),n}var fe={onlyGlobal:!0,newContext:!(J.free="free"),hasName:!1,hasTagProps:!1,hasTmplCtx:!1},pe=ce(fe,{useExpressionInProps:!0}),ve={if:ce(pe),else:ce(pe,{isSubTag:!0,hasTagProps:!0}),switch:ce(pe,{needPrefix:U.onlyLowerCase}),each:ce(pe,{newContext:{item:"item",index:"index",data:{first:["@first","first"],last:["@last","last"],$key:["@key","key"]}}}),prop:ce(fe,{isDirective:!0,needPrefix:!0,hasTagProps:!0}),obj:ce(fe,{needPrefix:!0}),with:ce(fe,{newContext:{getDataFromProps:!0}}),style:{needPrefix:!0}};function ye(e,r,n,i){var t=e;j(e)||((t={})[e]={extension:r,options:n}),C(t,function(e,r){if(e){var n=e.extension,t=e.options;n?le[r]=n:i||(le[r]=e),i?(ve[r]||(ve[r]=ce()),j(t)?H(ve[r],t):ve[r]=ce()):ve[r]=ce(t)}},!1)}ve.then=ce(ve.else),ve.elseif=ce(ve.else),ve.spread=ce(ve.prop),ve.block=ce(ve.obj),ve.arg=ce(ve.prop),ve.show=ce(ve.prop,{useExpressionInProps:!0,noTagName:!0,hasOutputH:!0}),ve.css=ce(ve.obj),le.for=le.each,ve.for=ce(ve.each),le.case=le.elseif,ve.case=ce(ve.elseif),le.empty=le.default=le.else,ve.empty=ce(ve.else),ve.default=ce(ve.else),le.strProp=le.prop,ve.strProp=ce(ve.prop,{useString:!0}),le.strArg=le.arg,ve.strArg=ce(ve.strProp),le.pre=le.block,ve.pre=ce(ve.block),H(u,{extensions:le,extensionConfig:ve,registerExtension:ye});var de=/(\d{3})(?=\d)/g,ge={".":function(e,r,n){return null==e?e:e._njSrc?{source:e.value,value:e.value[r],prop:r,parent:e,_njSrc:!0}:n?{source:e,value:e[r],prop:r,_njSrc:!0}:e[r]},_:function(e,r){if(null==e)return e;if(e._njSrc){var n=e.source[e.prop];return null!=n?n.apply(e.source,r):n}return e.apply(null,r)},"#":function(e,r,n){return null==e?e:Z(e[r],n.context)},"**":function(e,r){var n=Math.pow(e,r);return isNaN(n)?0:n},"%%":function(e,r){var n=Math.floor(e/r);return isNaN(n)?0:n},"?:":function(e,r,n){return e?r:n},"!":function(e){return!e},int:function(e,r){var n=parseInt(e,1<arguments.length&&void 0!==r?r:10);return isNaN(n)?0:n},float:function(e,r){var n=parseFloat(e);return isNaN(n)?0:null!=r?n.toFixed(r):n},bool:function(e){return"false"!==e&&!!e},reg:function(e,r){return RegExp(e,r)},css:function(e){return B(e)},rOpe:he(1),rLt:he(0),"<=>":function(e,r){return r<e?1:e==r?0:-1},upperFirst:function(e){return M(e)},lowerFirst:function(e){return W(e)},camelCase:function(e){return L(e)},isObject:function(e){return j(e)},isNumber:function(e){return f(e)},isString:function(e){return p(e)},isArrayLike:function(e){return S(e)},currency:function(e,r,n,t){if(0>e-parseFloat(e))return null!=t?t:xe.currency.placeholder;e=parseFloat(e),n=null!=(n=null!=r&&p(r)?r:n)&&p(n)?n:xe.currency.symbol,r=null!=r&&f(r)?r:2;var i=Math.abs(e).toFixed(r),o=r?i.slice(0,-1-r):i,a=o.length%3,s=0<a?o.slice(0,a)+(3<o.length?",":""):"",u=r?i.slice(-1-r):"";return(e<0?"-":"")+n+s+o.slice(a).replace(de,"$1,")+u}};function he(n){return function(r,e){return Object.keys(Array.apply(null,{length:e-r+n})).map(function(e){return+e+r})}}function me(e,r){var n={onlyGlobal:!1,hasOptions:!1,isOperator:!1,hasLevel:!1,hasTmplCtx:!0,alias:null};return e&&(n=H(n,e)),r&&(n=H(n,r)),n}var be={onlyGlobal:!0,hasOptions:!1},xe={".":me(be),_:me({onlyGlobal:!0}),"#":me({onlyGlobal:!0,hasOptions:!0,hasLevel:!0}),"**":me(be),"%%":me(be),"?:":me(be),"!":me(be),int:me(be),float:me(be),bool:me(be),reg:me(be),css:me(be),rOpe:me(be),rLt:me(be),"<=>":me(be),upperFirst:me(be),lowerFirst:me(be),camelCase:me(be),isObject:me(be),isNumber:me(be),isString:me(be),isArrayLike:me(be),currency:me(be,{symbol:"$",placeholder:""})};function je(e,r,n,s){var t=e;j(e)||((t={})[e]={filter:r,options:n}),C(t,function(e,r){if(e){var n=e.filter,t=e.options;if(t){if(t.isOperator){var i=u.createRegexOperators;i&&i(r)}var o=t.alias;if(o){var a=u.createFilterAlias;a&&a(r,o),r=o}}n?ge[r]=n:s||(ge[r]=e),s?(xe[r]||(xe[r]=me()),j(t)?H(xe[r],t):xe[r]=me()):xe[r]=me(t)}},!1)}ge.capitalize=ge.upperFirst,xe.capitalize=me(xe.upperFirst),H(u,{filters:ge,filterConfig:xe,registerFilter:je});var we={},Pe=new Map;function Se(e,r,n){var s,t=e;return j(e)||((t={})[e]={component:r,options:n}),C(t,function(e,r,n){var t;if(null!=e){var i=e.component,o=e.options,a=r.toLowerCase();Pe.set(we[a]=t=i||e,o)}0==n?s=t:(1==n&&(s=[s]),s.push(t))},!1),s}function Oe(){return function(e,r,n,t,i){if(e){if(j(r)){var o=r;r=o.tmplKey,o.fileName,o.delimiters,o.tmplRule}var a,s;if(r&&(a=u.templates[r]),!a)j(e)&&e.main&&(s=e),a=function(e,r){var n={tmplKey:r,us:e.useString,x:u.extensions,f:u.filters,np:k,tf:N,wn:T,n:re,c:Z,sp:B,r:te,e:V,er:X,en:Y,aa:ee,an:H,g:u.global,cf:ue};return n.us?(n.ans=ne,n.es=u.escape,n.ls=oe,n.fl=ae):(n.h=u.createElement,n.H=se,n.cp=u.components),C(e,function(e,r){"main"===r?(n[r]=ie(n,e),c(n[r],{_njTmpl:{value:!0}}),n["_"+r]=e):r.indexOf("fn")||(n[r]=e)},!1),n}(s),r&&(u.templates[r]=a);return a.main}}}H(u,{components:we,componentConfig:Pe,registerComponent:Se,getComponentConfig:function(e){return Pe.get(p(e)&&we[e]||e)},copyComponentConfig:function(e,r){return Pe.set(e,Pe.get(r)),e}});var Ce=Oe(),_e=Oe();function ke(n){return function(e,r){return(n?_e:Ce)(e,r?{tmplKey:r.tmplKey?r.tmplKey:e._njTmplKey,fileName:r.fileName,delimiters:r.delimiters}:e._njTmplKey).apply(null,b(arguments,1))}}var Ne=ke(),Te=ke(!0);function Ae(i){return function(e,r){var n=(i?_e:Ce)(e,e._njTmplKey);if(r){var t=function(){return n.apply(this,m([r],arguments))};return l(r,"_njParam",{value:!0}),c(t,{_njTmpl:{value:!0}}),t}return n}}var Fe=Ae(),Ee=Ae(!0);H(u,{compile:Ce,compileH:_e,render:Ne,renderH:Te,buildRender:Fe,buildRenderH:Ee});var Le=u.global;Le.NornJ=Le.nj=u,e.as=K,e.compile=Ce,e.compileH=_e,e.default=u,e.registerComponent=Se,e.registerExtension=ye,e.registerFilter=je,e.render=Ne,e.renderH=Te,Object.defineProperty(e,"__esModule",{value:!0})});