@uking/marmot
Advanced tools
Comparing version 1.2.7 to 1.2.8
@@ -1,2 +0,2 @@ | ||
"use strict";function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e} | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}); | ||
/** | ||
@@ -6,6 +6,7 @@ * [@uking/marmot]{@link https://github.com/An-uking/marmot.git} | ||
* @namespace marmot | ||
* @version 1.2.6 | ||
* @version 1.2.8 | ||
* @author uking [ptvile@live.com] | ||
* @copyright uking 2024 | ||
* @license MIT | ||
*/var t,n;var r=function(){if(n)return t;n=1;const e="v-if",r="v-else-if",s="v-else",l="v-for",i={script:1,style:1,template:1,textarea:1,pre:1,code:1,noscript:1,noframes:1,iframe:1,import:1},o={area:1,base:1,br:1,col:1,embed:1,hr:1,img:1,input:1,link:1,meta:1,param:1,command:1,keygen:1,source:1,track:1,wbr:1,menuitem:1,frame:1,import:1},a=/\{\{(.*?)}}/g,u=["Template","Slot","Component"],c=new Error("v-for must have source and value."),f=(e,t,n,r,s)=>{let{s:l,v:i}=e;if(i.length)throw Error("not support dynamic value in template");return p(l[0].replace(/\s{2,}/g," ").replace(/[\r\t\n]/g,"").replace(/>(\s*)</g,"><").replace(/^\s+|\s+$/g,""),t,n,r,s)};function p(e,t,n,r,s){let l="";s=s||{},r=r||{},t=t||{},n=n||{};let a=/<([A-Za-z!][A-Za-z0-9-]*)/g,u=a.exec(e);if(u){let f=null;for(;u;){if(u.index>0){let i=e.substring(0,u.index).replace(/^\s+|\s+$/g,"");i&&(l+=p(i,t,n,r,s)),e=e.substring(u.index),a.lastIndex=0,u=a.exec(e);continue}let x=u[1],y=-1,A="",C="",I=!1,W=!1;if(x.startsWith("!--")){A="--\x3e",y=e.indexOf(A)+A.length,l+=e.substring(0,y),e=e.substring(y),a.lastIndex=0,u=a.exec(e);continue}"!DOCTYPE"===x?(W=!1,A=">",y=e.indexOf(A)+A.length,C=e.substring(0,y),I=!0):(y=$(e),W=/^[A-Z]/.test(x),C=e.substring(0,y),I=!!o[x]||C.endsWith("/>"),A=I?"/>":">");let k=w(C),S=g(k.if,f,n,r);if(f=S.ifCondition,S.condition){if(I)if("Slot"===x){let e=k.attrs.name?k.attrs.name.value:"default";l+=s[e]||"",s[e]=""}else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let i=n[e.sourceExp]||m(e.sourceExp);for(let o in i){let a={};e.indexExp&&(a[e.indexExp]=E(o)),a[e.valueExp]=i[o];let u=O(k.attrs,a,r);a=Object.assign(a,u),l+=W?b(x,t,a,r,s):j(x,k.attrs,A,Object.assign(n,a),r)}}else if(W){let e=O(k.attrs,n,r);l+=b(x,t,Object.assign({},n,e),r,s)}else l+=j(x,k.attrs,A,n,r);else{let o="Template"===x,a=`</${x}>`,u=v(e.substring(y),x);if(-1===u)throw new Error(`End tag ${a} not found.`);u+=y;let f=e.substring(y,u);if(W){let e=k.attrs.slot?k.attrs.slot.value:"default",i="";if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let l=n[e.sourceExp]||m(e.sourceExp);for(let o in l){let a={};e.indexExp&&(a[e.indexExp]=E(o)),a[e.valueExp]=l[o];let u=O(k.attrs,a,r);a=Object.assign(n,a,u),i+=p(f,t,a,r,s)}}else i=p(f,t,n,r,s);if(s[e]=i,!o){let e=O(k.attrs,n,r);l+=b(x,t,Object.assign({},n,e),r,s)}}else if(1===i[x])l+=j(x,k.attrs,A,n,r),l+=h(f,n,r),l+=`</${x}>`;else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let i=n[e.sourceExp]||m(e.sourceExp);for(let n in i){let o={};e.indexExp&&(o[e.indexExp]=E(n)),o[e.valueExp]=i[n];let a=O(k.attrs,o,r);o=Object.assign(o,a),l+=j(x,k.attrs,A,o,r),l+=p(f,t,o,r,s),l+=`</${x}>`}}else l+=j(x,k.attrs,A,n,r),l+=p(f,t,n,r,s),l+=`</${x}>`;y=u+a.length}e=e.substring(y),a.lastIndex=0,u=a.exec(e),!u&&e&&(l+=p(e,t,n,r,s))}else e=e.substring(y),a.lastIndex=0,u=a.exec(e)}}else l+=h(e,n,r);return l}function h(e,t,n){return e.replace(a,((e,r)=>{try{return x(r,t,n)}catch(t){return e}}))}function x(e,t,n){let r={__c:n};r=Object.assign(t,r);let s=Object.keys(r),l=Object.values(r);return new Function(...s,`return ${e}`)(...l)}function g(t,n,s,l){let i=!0;if(t)if(t.name===e)i=n=x(t.value,s,l);else if(t.name===r){if(null===n)throw new Error("previous node missing v-if");i=n?!n:n=x(t.value,s,l)}else{if(null===n)throw new Error("previous node missing v-if or v-else-if");i=!n}else n=null;return{ifCondition:n,condition:i}}function d(e){let t=/^\(|\)$/g,n=/,([^,}\]]*)(?:,([^,}\]]*))?$/,r=e.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/),s=null,l=null,i=null;if(r){s=r[2].trim(),l=r[1].trim().replace(t,"").trim();let e=l.match(n);e&&(l=l.replace(n,"").trim(),i=e[1].trim())}return{sourceExp:s,valueExp:l,indexExp:i}}function m(e){let t=parseInt(e);return isNaN(t)||t<1?[]:Array.from({length:t},((e,t)=>t+1))}function E(e){let t=parseInt(e);return isNaN(t)?e:t}function b(e,t,n,r,s){let l=t[e];if(!l)throw new Error(`Component ${e} not found.`);let i=new l(r),o=Object.assign({},i.data,n);return f(i.render(),i.components(),o,i.context,s)}function v(e,t){let n=new RegExp(`<${t}(?![A-Za-z0-9-])`,"g"),r=new RegExp(`</${t}>`,"g"),s=new RegExp(`</${t}>`,"g"),l=r.exec(e);if(!l)return-1;for(;l;){let t=e.slice(0,l.index),i=t.match(n),o=t.match(s);if(!i&&(i=[]),!o&&(o=[]),i.length===o.length)return l.index;l=r.exec(e)}return-1}function $(e){let t=-1,n=/(\/)?>/g,r=/(")/g,s=/(')/g,l=n.exec(e);for(;l;){let i=e.substring(0,l.index+l[0].length),o=i.match(r),a=i.match(s);if(!o&&(o=[]),!a&&(a=[]),o.length%2==0&&a.length%2==0){t=l.index+l[0].length;break}l=n.exec(e)}if(-1===t)throw new Error("Invalid HTML");return t}function w(e){let t={hasExp:!1,if:null,for:null,attrs:{}},n=e.match(/([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g);for(let e=1;e<n.length;e++){let r=n[e],i=[],o=r.indexOf("=");-1===o?i.push(r):(i.push(r.substring(0,o)),i.push(r.substring(o+1)));let a=i[0],u=a===s?null:!(i.length>1)||i[1].slice(1,-1);a.startsWith(":")?(!t.hasExp&&(t.hasExp=!0),t.attrs[a]={value:u,isExp:!0}):a.startsWith("v-")?a===l?t.for=u:t.if={name:a,value:u}:t.attrs[a]={value:u,isExp:!1}}return t}function j(e,t,n,r,s){let l=[],i=[];l.push(`<${e}`);for(let e in t)if(e.includes("class"))if(e.startsWith(":")){let n=t[e].value,l="class"===n?"":x(n,r,s),o=Object.prototype.toString.call(l);if("[object Object]"===o)for(let e in l)l[e]&&i.push(e);else if("[object Array]"===o)i.push(...l);else{let e=l.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...e)}}else{let n=t[e].value.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...n)}else if(e.startsWith(":")){let n=t[e].value;e=e.slice(1);let i=x(n,r,s),o=Object.prototype.toString.call(i);if("[object Boolean]"===o)i&&l.push(e);else if("[object Array]"===o)l.push(...i.map((t=>`${e}="${t}"`)));else if("[object Object]"===o)for(let t in i)i[t]&&l.push(`${e}="${t}"`);else l.push(`${e}="${i}"`)}else{let n=t[e].value;"boolean"===typeof n?n&&l.push(e):l.push(`${e}="${n}"`)}return i.length&&l.push(`class="${i.join(" ")}"`),l.join(" ")+n}function O(e,t,n){let r={};for(let s in e){let l=e[s].value;s.startsWith(":")?r[s.slice(1)]=x(l,t,n):r[s]=l}return r}return t={render:f,Component:class{constructor(e={}){this.context=e||{};let t=this.constructor.name;if(console.log(`create component ${t}`),u.includes(t))throw new Error(`Component ${t} is a reserved keyword.`);this.data=this.data()||{},this.data=Object.assign(this.data,this.functions()||{})}functions(){}data(){}components(){}render(){}},html:(e,...t)=>({s:e,v:t})}}(),s=e(r);module.exports=s; | ||
*/ | ||
const e="v-if",t="v-else-if",n="v-else",s="v-for",r={script:1,style:1,template:1,textarea:1,pre:1,code:1,noscript:1,noframes:1,iframe:1,import:1},l={area:1,base:1,br:1,col:1,embed:1,hr:1,img:1,input:1,link:1,meta:1,param:1,command:1,keygen:1,source:1,track:1,wbr:1,menuitem:1,frame:1,import:1},i=/\{\{(.*?)}}/g,o=["Template","Slot","Component"],a=new Error("v-for must have source and value.");class u{constructor(e={}){this.context=e||{};let t=this.constructor.name;if(o.includes(t))throw new Error(`Component ${t} is a reserved keyword.`);this.data=this.data()||{},this.data=Object.assign(this.data,this.functions()||{})}functions(){}data(){}components(){}render(){}}function c(e,...t){return{s:e,v:t}}function f(e,t,n,s,r){let{s:l,v:i}=e;if(i.length)throw Error("not support dynamic value in template");return p(l[0].replace(/\s{2,}/g," ").replace(/[\r\t\n]/g,"").replace(/>(\s*)</g,"><").replace(/^\s+|\s+$/g,""),t,n,s,r)}function p(e,t,n,s,i){let o="";i=i||{},s=s||{},t=t||{},n=n||{};let u=/<([A-Za-z!][A-Za-z0-9-]*)/g,c=u.exec(e);if(c){let f=null;for(;c;){if(c.index>0){let r=e.substring(0,c.index).replace(/^\s+|\s+$/g,"");r&&(o+=p(r,t,n,s,i)),e=e.substring(c.index),u.lastIndex=0,c=u.exec(e);continue}let h=c[1],y=-1,C="",A="",I=!1,W=!1;if(h.startsWith("!--")){C="--\x3e",y=e.indexOf(C)+C.length,o+=e.substring(0,y),e=e.substring(y),u.lastIndex=0,c=u.exec(e);continue}"!DOCTYPE"===h?(W=!1,C=">",y=e.indexOf(C)+C.length,A=e.substring(0,y),I=!0):(y=$(e),W=/^[A-Z]/.test(h),A=e.substring(0,y),I=!!l[h]||A.endsWith("/>"),C=I?"/>":">");let k=w(A),S=g(k.if,f,n,s);if(f=S.ifCondition,S.condition){if(I)if("Slot"===h){let e=k.attrs.name?k.attrs.name.value:"default";o+=i[e]||"",i[e]=""}else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw a;let r=n[e.sourceExp]||m(e.sourceExp);for(let l in r){let a={};e.indexExp&&(a[e.indexExp]=E(l)),a[e.valueExp]=r[l];let u=O(k.attrs,a,s);a=Object.assign(a,u),o+=W?b(h,t,a,s,i):j(h,k.attrs,C,Object.assign(n,a),s)}}else if(W){let e=O(k.attrs,n,s);o+=b(h,t,Object.assign({},n,e),s,i)}else o+=j(h,k.attrs,C,n,s);else{let l="Template"===h,u=`</${h}>`,c=v(e.substring(y),h);if(-1===c)throw new Error(`End tag ${u} not found.`);c+=y;let f=e.substring(y,c);if(W){let e=k.attrs.slot?k.attrs.slot.value:"default",r="";if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw a;let l=n[e.sourceExp]||m(e.sourceExp);for(let o in l){let a={};e.indexExp&&(a[e.indexExp]=E(o)),a[e.valueExp]=l[o];let u=O(k.attrs,a,s);a=Object.assign(n,a,u),r+=p(f,t,a,s,i)}}else r=p(f,t,n,s,i);if(i[e]=r,!l){let e=O(k.attrs,n,s);o+=b(h,t,Object.assign({},n,e),s,i)}}else if(1===r[h])o+=j(h,k.attrs,C,n,s),o+=x(f,n,s),o+=`</${h}>`;else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw a;let r=n[e.sourceExp]||m(e.sourceExp);for(let n in r){let l={};e.indexExp&&(l[e.indexExp]=E(n)),l[e.valueExp]=r[n];let a=O(k.attrs,l,s);l=Object.assign(l,a),o+=j(h,k.attrs,C,l,s),o+=p(f,t,l,s,i),o+=`</${h}>`}}else o+=j(h,k.attrs,C,n,s),o+=p(f,t,n,s,i),o+=`</${h}>`;y=c+u.length}e=e.substring(y),u.lastIndex=0,c=u.exec(e),!c&&e&&(o+=p(e,t,n,s,i))}else e=e.substring(y),u.lastIndex=0,c=u.exec(e)}}else o+=x(e,n,s);return o}function x(e,t,n){return e.replace(i,((e,s)=>{try{return h(s,t,n)}catch(t){return e}}))}function h(e,t,n){let s={__c:n};s=Object.assign(t,s);let r=Object.keys(s),l=Object.values(s);return new Function(...r,`return ${e}`)(...l)}function g(n,s,r,l){let i=!0;if(n)if(n.name===e)i=s=h(n.value,r,l);else if(n.name===t){if(null===s)throw new Error("previous node missing v-if");i=s?!s:s=h(n.value,r,l)}else{if(null===s)throw new Error("previous node missing v-if or v-else-if");i=!s}else s=null;return{ifCondition:s,condition:i}}function d(e){let t=/^\(|\)$/g,n=/,([^,}\]]*)(?:,([^,}\]]*))?$/,s=e.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/),r=null,l=null,i=null;if(s){r=s[2].trim(),l=s[1].trim().replace(t,"").trim();let e=l.match(n);e&&(l=l.replace(n,"").trim(),i=e[1].trim())}return{sourceExp:r,valueExp:l,indexExp:i}}function m(e){let t=parseInt(e);return isNaN(t)||t<1?[]:Array.from({length:t},((e,t)=>t+1))}function E(e){let t=parseInt(e);return isNaN(t)?e:t}function b(e,t,n,s,r){let l=t[e];if(!l)throw new Error(`Component ${e} not found.`);let i=new l(s),o=Object.assign({},i.data,n);return f(i.render(),i.components(),o,i.context,r)}function v(e,t){let n=new RegExp(`<${t}(?![A-Za-z0-9-])`,"g"),s=new RegExp(`</${t}>`,"g"),r=new RegExp(`</${t}>`,"g"),l=s.exec(e);if(!l)return-1;for(;l;){let t=e.slice(0,l.index),i=t.match(n),o=t.match(r);if(!i&&(i=[]),!o&&(o=[]),i.length===o.length)return l.index;l=s.exec(e)}return-1}function $(e){let t=-1,n=/(\/)?>/g,s=/(")/g,r=/(')/g,l=n.exec(e);for(;l;){let i=e.substring(0,l.index+l[0].length),o=i.match(s),a=i.match(r);if(!o&&(o=[]),!a&&(a=[]),o.length%2==0&&a.length%2==0){t=l.index+l[0].length;break}l=n.exec(e)}if(-1===t)throw new Error("Invalid HTML");return t}function w(e){let t={hasExp:!1,if:null,for:null,attrs:{}},r=e.match(/([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g);for(let e=1;e<r.length;e++){let l=r[e],i=[],o=l.indexOf("=");-1===o?i.push(l):(i.push(l.substring(0,o)),i.push(l.substring(o+1)));let a=i[0],u=a===n?null:!(i.length>1)||i[1].slice(1,-1);a.startsWith(":")?(!t.hasExp&&(t.hasExp=!0),t.attrs[a]={value:u,isExp:!0}):a.startsWith("v-")?a===s?t.for=u:t.if={name:a,value:u}:t.attrs[a]={value:u,isExp:!1}}return t}function j(e,t,n,s,r){let l=[],i=[];l.push(`<${e}`);for(let e in t)if(e.includes("class"))if(e.startsWith(":")){let n=t[e].value,l="class"===n?"":h(n,s,r),o=Object.prototype.toString.call(l);if("[object Object]"===o)for(let e in l)l[e]&&i.push(e);else if("[object Array]"===o)i.push(...l);else{let e=l.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...e)}}else{let n=t[e].value.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...n)}else if(e.startsWith(":")){let n=t[e].value;e=e.slice(1);let i=h(n,s,r),o=Object.prototype.toString.call(i);if("[object Boolean]"===o)i&&l.push(e);else if("[object Array]"===o)l.push(...i.map((t=>`${e}="${t}"`)));else if("[object Object]"===o)for(let t in i)i[t]&&l.push(`${e}="${t}"`);else l.push(`${e}="${i}"`)}else{let n=t[e].value;"boolean"===typeof n?n&&l.push(e):l.push(`${e}="${n}"`)}return i.length&&l.push(`class="${i.join(" ")}"`),l.join(" ")+n}function O(e,t,n){let s={};for(let r in e){let l=e[r].value;r.startsWith(":")?s[r.slice(1)]=h(l,t,n):s[r]=l}return s}var y={render:f,html:c,Component:u};exports.Component=u,exports.default=y,exports.html=c,exports.render=f; |
@@ -1,2 +0,1 @@ | ||
function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e} | ||
/** | ||
@@ -6,6 +5,7 @@ * [@uking/marmot]{@link https://github.com/An-uking/marmot.git} | ||
* @namespace marmot | ||
* @version 1.2.6 | ||
* @version 1.2.8 | ||
* @author uking [ptvile@live.com] | ||
* @copyright uking 2024 | ||
* @license MIT | ||
*/var t,n;var r=function(){if(n)return t;n=1;const e="v-if",r="v-else-if",s="v-else",l="v-for",i={script:1,style:1,template:1,textarea:1,pre:1,code:1,noscript:1,noframes:1,iframe:1,import:1},a={area:1,base:1,br:1,col:1,embed:1,hr:1,img:1,input:1,link:1,meta:1,param:1,command:1,keygen:1,source:1,track:1,wbr:1,menuitem:1,frame:1,import:1},o=/\{\{(.*?)}}/g,u=["Template","Slot","Component"],c=new Error("v-for must have source and value."),f=(e,t,n,r,s)=>{let{s:l,v:i}=e;if(i.length)throw Error("not support dynamic value in template");return p(l[0].replace(/\s{2,}/g," ").replace(/[\r\t\n]/g,"").replace(/>(\s*)</g,"><").replace(/^\s+|\s+$/g,""),t,n,r,s)};function p(e,t,n,r,s){let l="";s=s||{},r=r||{},t=t||{},n=n||{};let o=/<([A-Za-z!][A-Za-z0-9-]*)/g,u=o.exec(e);if(u){let f=null;for(;u;){if(u.index>0){let i=e.substring(0,u.index).replace(/^\s+|\s+$/g,"");i&&(l+=p(i,t,n,r,s)),e=e.substring(u.index),o.lastIndex=0,u=o.exec(e);continue}let x=u[1],y=-1,A="",C="",I=!1,W=!1;if(x.startsWith("!--")){A="--\x3e",y=e.indexOf(A)+A.length,l+=e.substring(0,y),e=e.substring(y),o.lastIndex=0,u=o.exec(e);continue}"!DOCTYPE"===x?(W=!1,A=">",y=e.indexOf(A)+A.length,C=e.substring(0,y),I=!0):(y=$(e),W=/^[A-Z]/.test(x),C=e.substring(0,y),I=!!a[x]||C.endsWith("/>"),A=I?"/>":">");let k=w(C),S=g(k.if,f,n,r);if(f=S.ifCondition,S.condition){if(I)if("Slot"===x){let e=k.attrs.name?k.attrs.name.value:"default";l+=s[e]||"",s[e]=""}else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let i=n[e.sourceExp]||m(e.sourceExp);for(let a in i){let o={};e.indexExp&&(o[e.indexExp]=E(a)),o[e.valueExp]=i[a];let u=O(k.attrs,o,r);o=Object.assign(o,u),l+=W?b(x,t,o,r,s):j(x,k.attrs,A,Object.assign(n,o),r)}}else if(W){let e=O(k.attrs,n,r);l+=b(x,t,Object.assign({},n,e),r,s)}else l+=j(x,k.attrs,A,n,r);else{let a="Template"===x,o=`</${x}>`,u=v(e.substring(y),x);if(-1===u)throw new Error(`End tag ${o} not found.`);u+=y;let f=e.substring(y,u);if(W){let e=k.attrs.slot?k.attrs.slot.value:"default",i="";if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let l=n[e.sourceExp]||m(e.sourceExp);for(let a in l){let o={};e.indexExp&&(o[e.indexExp]=E(a)),o[e.valueExp]=l[a];let u=O(k.attrs,o,r);o=Object.assign(n,o,u),i+=p(f,t,o,r,s)}}else i=p(f,t,n,r,s);if(s[e]=i,!a){let e=O(k.attrs,n,r);l+=b(x,t,Object.assign({},n,e),r,s)}}else if(1===i[x])l+=j(x,k.attrs,A,n,r),l+=h(f,n,r),l+=`</${x}>`;else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw c;let i=n[e.sourceExp]||m(e.sourceExp);for(let n in i){let a={};e.indexExp&&(a[e.indexExp]=E(n)),a[e.valueExp]=i[n];let o=O(k.attrs,a,r);a=Object.assign(a,o),l+=j(x,k.attrs,A,a,r),l+=p(f,t,a,r,s),l+=`</${x}>`}}else l+=j(x,k.attrs,A,n,r),l+=p(f,t,n,r,s),l+=`</${x}>`;y=u+o.length}e=e.substring(y),o.lastIndex=0,u=o.exec(e),!u&&e&&(l+=p(e,t,n,r,s))}else e=e.substring(y),o.lastIndex=0,u=o.exec(e)}}else l+=h(e,n,r);return l}function h(e,t,n){return e.replace(o,((e,r)=>{try{return x(r,t,n)}catch(t){return e}}))}function x(e,t,n){let r={__c:n};r=Object.assign(t,r);let s=Object.keys(r),l=Object.values(r);return new Function(...s,`return ${e}`)(...l)}function g(t,n,s,l){let i=!0;if(t)if(t.name===e)i=n=x(t.value,s,l);else if(t.name===r){if(null===n)throw new Error("previous node missing v-if");i=n?!n:n=x(t.value,s,l)}else{if(null===n)throw new Error("previous node missing v-if or v-else-if");i=!n}else n=null;return{ifCondition:n,condition:i}}function d(e){let t=/^\(|\)$/g,n=/,([^,}\]]*)(?:,([^,}\]]*))?$/,r=e.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/),s=null,l=null,i=null;if(r){s=r[2].trim(),l=r[1].trim().replace(t,"").trim();let e=l.match(n);e&&(l=l.replace(n,"").trim(),i=e[1].trim())}return{sourceExp:s,valueExp:l,indexExp:i}}function m(e){let t=parseInt(e);return isNaN(t)||t<1?[]:Array.from({length:t},((e,t)=>t+1))}function E(e){let t=parseInt(e);return isNaN(t)?e:t}function b(e,t,n,r,s){let l=t[e];if(!l)throw new Error(`Component ${e} not found.`);let i=new l(r),a=Object.assign({},i.data,n);return f(i.render(),i.components(),a,i.context,s)}function v(e,t){let n=new RegExp(`<${t}(?![A-Za-z0-9-])`,"g"),r=new RegExp(`</${t}>`,"g"),s=new RegExp(`</${t}>`,"g"),l=r.exec(e);if(!l)return-1;for(;l;){let t=e.slice(0,l.index),i=t.match(n),a=t.match(s);if(!i&&(i=[]),!a&&(a=[]),i.length===a.length)return l.index;l=r.exec(e)}return-1}function $(e){let t=-1,n=/(\/)?>/g,r=/(")/g,s=/(')/g,l=n.exec(e);for(;l;){let i=e.substring(0,l.index+l[0].length),a=i.match(r),o=i.match(s);if(!a&&(a=[]),!o&&(o=[]),a.length%2==0&&o.length%2==0){t=l.index+l[0].length;break}l=n.exec(e)}if(-1===t)throw new Error("Invalid HTML");return t}function w(e){let t={hasExp:!1,if:null,for:null,attrs:{}},n=e.match(/([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g);for(let e=1;e<n.length;e++){let r=n[e],i=[],a=r.indexOf("=");-1===a?i.push(r):(i.push(r.substring(0,a)),i.push(r.substring(a+1)));let o=i[0],u=o===s?null:!(i.length>1)||i[1].slice(1,-1);o.startsWith(":")?(!t.hasExp&&(t.hasExp=!0),t.attrs[o]={value:u,isExp:!0}):o.startsWith("v-")?o===l?t.for=u:t.if={name:o,value:u}:t.attrs[o]={value:u,isExp:!1}}return t}function j(e,t,n,r,s){let l=[],i=[];l.push(`<${e}`);for(let e in t)if(e.includes("class"))if(e.startsWith(":")){let n=t[e].value,l="class"===n?"":x(n,r,s),a=Object.prototype.toString.call(l);if("[object Object]"===a)for(let e in l)l[e]&&i.push(e);else if("[object Array]"===a)i.push(...l);else{let e=l.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...e)}}else{let n=t[e].value.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...n)}else if(e.startsWith(":")){let n=t[e].value;e=e.slice(1);let i=x(n,r,s),a=Object.prototype.toString.call(i);if("[object Boolean]"===a)i&&l.push(e);else if("[object Array]"===a)l.push(...i.map((t=>`${e}="${t}"`)));else if("[object Object]"===a)for(let t in i)i[t]&&l.push(`${e}="${t}"`);else l.push(`${e}="${i}"`)}else{let n=t[e].value;"boolean"===typeof n?n&&l.push(e):l.push(`${e}="${n}"`)}return i.length&&l.push(`class="${i.join(" ")}"`),l.join(" ")+n}function O(e,t,n){let r={};for(let s in e){let l=e[s].value;s.startsWith(":")?r[s.slice(1)]=x(l,t,n):r[s]=l}return r}return t={render:f,Component:class{constructor(e={}){this.context=e||{};let t=this.constructor.name;if(console.log(`create component ${t}`),u.includes(t))throw new Error(`Component ${t} is a reserved keyword.`);this.data=this.data()||{},this.data=Object.assign(this.data,this.functions()||{})}functions(){}data(){}components(){}render(){}},html:(e,...t)=>({s:e,v:t})}}(),s=e(r);export{s as default}; | ||
*/ | ||
const e="v-if",t="v-else-if",n="v-else",s="v-for",r={script:1,style:1,template:1,textarea:1,pre:1,code:1,noscript:1,noframes:1,iframe:1,import:1},l={area:1,base:1,br:1,col:1,embed:1,hr:1,img:1,input:1,link:1,meta:1,param:1,command:1,keygen:1,source:1,track:1,wbr:1,menuitem:1,frame:1,import:1},i=/\{\{(.*?)}}/g,a=["Template","Slot","Component"],o=new Error("v-for must have source and value.");class u{constructor(e={}){this.context=e||{};let t=this.constructor.name;if(a.includes(t))throw new Error(`Component ${t} is a reserved keyword.`);this.data=this.data()||{},this.data=Object.assign(this.data,this.functions()||{})}functions(){}data(){}components(){}render(){}}function c(e,...t){return{s:e,v:t}}function f(e,t,n,s,r){let{s:l,v:i}=e;if(i.length)throw Error("not support dynamic value in template");return p(l[0].replace(/\s{2,}/g," ").replace(/[\r\t\n]/g,"").replace(/>(\s*)</g,"><").replace(/^\s+|\s+$/g,""),t,n,s,r)}function p(e,t,n,s,i){let a="";i=i||{},s=s||{},t=t||{},n=n||{};let u=/<([A-Za-z!][A-Za-z0-9-]*)/g,c=u.exec(e);if(c){let f=null;for(;c;){if(c.index>0){let r=e.substring(0,c.index).replace(/^\s+|\s+$/g,"");r&&(a+=p(r,t,n,s,i)),e=e.substring(c.index),u.lastIndex=0,c=u.exec(e);continue}let x=c[1],y=-1,A="",C="",I=!1,W=!1;if(x.startsWith("!--")){A="--\x3e",y=e.indexOf(A)+A.length,a+=e.substring(0,y),e=e.substring(y),u.lastIndex=0,c=u.exec(e);continue}"!DOCTYPE"===x?(W=!1,A=">",y=e.indexOf(A)+A.length,C=e.substring(0,y),I=!0):(y=$(e),W=/^[A-Z]/.test(x),C=e.substring(0,y),I=!!l[x]||C.endsWith("/>"),A=I?"/>":">");let k=w(C),S=g(k.if,f,n,s);if(f=S.ifCondition,S.condition){if(I)if("Slot"===x){let e=k.attrs.name?k.attrs.name.value:"default";a+=i[e]||"",i[e]=""}else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw o;let r=n[e.sourceExp]||m(e.sourceExp);for(let l in r){let o={};e.indexExp&&(o[e.indexExp]=E(l)),o[e.valueExp]=r[l];let u=O(k.attrs,o,s);o=Object.assign(o,u),a+=W?b(x,t,o,s,i):j(x,k.attrs,A,Object.assign(n,o),s)}}else if(W){let e=O(k.attrs,n,s);a+=b(x,t,Object.assign({},n,e),s,i)}else a+=j(x,k.attrs,A,n,s);else{let l="Template"===x,u=`</${x}>`,c=v(e.substring(y),x);if(-1===c)throw new Error(`End tag ${u} not found.`);c+=y;let f=e.substring(y,c);if(W){let e=k.attrs.slot?k.attrs.slot.value:"default",r="";if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw o;let l=n[e.sourceExp]||m(e.sourceExp);for(let a in l){let o={};e.indexExp&&(o[e.indexExp]=E(a)),o[e.valueExp]=l[a];let u=O(k.attrs,o,s);o=Object.assign(n,o,u),r+=p(f,t,o,s,i)}}else r=p(f,t,n,s,i);if(i[e]=r,!l){let e=O(k.attrs,n,s);a+=b(x,t,Object.assign({},n,e),s,i)}}else if(1===r[x])a+=j(x,k.attrs,A,n,s),a+=h(f,n,s),a+=`</${x}>`;else if(k.for){let e=d(k.for);if(!e.sourceExp||!e.valueExp)throw o;let r=n[e.sourceExp]||m(e.sourceExp);for(let n in r){let l={};e.indexExp&&(l[e.indexExp]=E(n)),l[e.valueExp]=r[n];let o=O(k.attrs,l,s);l=Object.assign(l,o),a+=j(x,k.attrs,A,l,s),a+=p(f,t,l,s,i),a+=`</${x}>`}}else a+=j(x,k.attrs,A,n,s),a+=p(f,t,n,s,i),a+=`</${x}>`;y=c+u.length}e=e.substring(y),u.lastIndex=0,c=u.exec(e),!c&&e&&(a+=p(e,t,n,s,i))}else e=e.substring(y),u.lastIndex=0,c=u.exec(e)}}else a+=h(e,n,s);return a}function h(e,t,n){return e.replace(i,((e,s)=>{try{return x(s,t,n)}catch(t){return e}}))}function x(e,t,n){let s={__c:n};s=Object.assign(t,s);let r=Object.keys(s),l=Object.values(s);return new Function(...r,`return ${e}`)(...l)}function g(n,s,r,l){let i=!0;if(n)if(n.name===e)i=s=x(n.value,r,l);else if(n.name===t){if(null===s)throw new Error("previous node missing v-if");i=s?!s:s=x(n.value,r,l)}else{if(null===s)throw new Error("previous node missing v-if or v-else-if");i=!s}else s=null;return{ifCondition:s,condition:i}}function d(e){let t=/^\(|\)$/g,n=/,([^,}\]]*)(?:,([^,}\]]*))?$/,s=e.match(/([\s\S]*?)\s+(?:in|of)\s+([\s\S]*)/),r=null,l=null,i=null;if(s){r=s[2].trim(),l=s[1].trim().replace(t,"").trim();let e=l.match(n);e&&(l=l.replace(n,"").trim(),i=e[1].trim())}return{sourceExp:r,valueExp:l,indexExp:i}}function m(e){let t=parseInt(e);return isNaN(t)||t<1?[]:Array.from({length:t},((e,t)=>t+1))}function E(e){let t=parseInt(e);return isNaN(t)?e:t}function b(e,t,n,s,r){let l=t[e];if(!l)throw new Error(`Component ${e} not found.`);let i=new l(s),a=Object.assign({},i.data,n);return f(i.render(),i.components(),a,i.context,r)}function v(e,t){let n=new RegExp(`<${t}(?![A-Za-z0-9-])`,"g"),s=new RegExp(`</${t}>`,"g"),r=new RegExp(`</${t}>`,"g"),l=s.exec(e);if(!l)return-1;for(;l;){let t=e.slice(0,l.index),i=t.match(n),a=t.match(r);if(!i&&(i=[]),!a&&(a=[]),i.length===a.length)return l.index;l=s.exec(e)}return-1}function $(e){let t=-1,n=/(\/)?>/g,s=/(")/g,r=/(')/g,l=n.exec(e);for(;l;){let i=e.substring(0,l.index+l[0].length),a=i.match(s),o=i.match(r);if(!a&&(a=[]),!o&&(o=[]),a.length%2==0&&o.length%2==0){t=l.index+l[0].length;break}l=n.exec(e)}if(-1===t)throw new Error("Invalid HTML");return t}function w(e){let t={hasExp:!1,if:null,for:null,attrs:{}},r=e.match(/([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+)))?/g);for(let e=1;e<r.length;e++){let l=r[e],i=[],a=l.indexOf("=");-1===a?i.push(l):(i.push(l.substring(0,a)),i.push(l.substring(a+1)));let o=i[0],u=o===n?null:!(i.length>1)||i[1].slice(1,-1);o.startsWith(":")?(!t.hasExp&&(t.hasExp=!0),t.attrs[o]={value:u,isExp:!0}):o.startsWith("v-")?o===s?t.for=u:t.if={name:o,value:u}:t.attrs[o]={value:u,isExp:!1}}return t}function j(e,t,n,s,r){let l=[],i=[];l.push(`<${e}`);for(let e in t)if(e.includes("class"))if(e.startsWith(":")){let n=t[e].value,l="class"===n?"":x(n,s,r),a=Object.prototype.toString.call(l);if("[object Object]"===a)for(let e in l)l[e]&&i.push(e);else if("[object Array]"===a)i.push(...l);else{let e=l.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...e)}}else{let n=t[e].value.replace(/^\s+|\s+$/g,"").split(/\s+/g);i.push(...n)}else if(e.startsWith(":")){let n=t[e].value;e=e.slice(1);let i=x(n,s,r),a=Object.prototype.toString.call(i);if("[object Boolean]"===a)i&&l.push(e);else if("[object Array]"===a)l.push(...i.map((t=>`${e}="${t}"`)));else if("[object Object]"===a)for(let t in i)i[t]&&l.push(`${e}="${t}"`);else l.push(`${e}="${i}"`)}else{let n=t[e].value;"boolean"===typeof n?n&&l.push(e):l.push(`${e}="${n}"`)}return i.length&&l.push(`class="${i.join(" ")}"`),l.join(" ")+n}function O(e,t,n){let s={};for(let r in e){let l=e[r].value;r.startsWith(":")?s[r.slice(1)]=x(l,t,n):s[r]=l}return s}var y={render:f,html:c,Component:u};export{u as Component,y as default,c as html,f as render}; |
{ | ||
"name": "@uking/marmot", | ||
"version": "1.2.7", | ||
"version": "1.2.8", | ||
"description": "A lightweight and fast javascript native template rendering engine that supports browsers, FibJS and NodeJS.", | ||
@@ -9,3 +9,4 @@ "repository": "https://github.com/An-uking/marmot.git", | ||
}, | ||
"main": "dist/index.js", | ||
"main": "dist/index.cjs.js", | ||
"module": "dist/index.es.js", | ||
"type": "module", | ||
@@ -12,0 +13,0 @@ "keywords": [ |
17842
5
69