'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
1
2
"use strict";const allowedKeywords="Infinity,undefined,NaN,null,isFinite,isNaN,true,false,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,this,require",allowedKeywordsRE=new RegExp("^("+allowedKeywords.replace(/,/g,"\\b|")+"\\b)"),improperKeywords="break,case,class,catch,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,let,return,super,switch,throw,try,var,while,with,yield,enum,await,implements,package,protected,static,interface,private,public",improperKeywordsRE=new RegExp("^("+improperKeywords.replace(/,/g,"\\b|")+"\\b)"),wsRE=/\s/g,newlineRE=/\n/g,saveRE=/[{,]\s*[\w$_]+\s*:|('(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`)|new |typeof |void /g,restoreRE=/"(\d+)"/g,pathTestRE=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,identRE=/[^\w$.](?:[A-Za-z_$][\w$]*)/g,literalValueRE=/^(?:true|false|null|undefined|Infinity|NaN)$/,saveRegRe=/(\/.+\/[gimy]*)/g,restoreRegRe=/"&&&(\d+)"/g,saved=[],savedReg=[];function save(e,t){const r=saved.length;return saved[r]=t?e.replace(newlineRE,"\\n"):e,'"'+r+'"'}function saveReg(e){const t=savedReg.length;return savedReg[t]=e,'"&&&'+t+'"'}function rewrite(e){const t=e.charAt(0);let r=e.slice(1);return allowedKeywordsRE.test(r)?e:(r=r.indexOf('"')>-1?r.replace(restoreRE,restore):r,t+"this."+r)}function restore(e,t){return saved[t]}function restoreReg(e,t){return savedReg[t]}function compileGetter(e){improperKeywordsRE.test(e)&&console.warn("### App Toolkit ### 不要在表达式中使用保留关键字: "+e),saved.length=0;let t=e.replace(saveRE,save).replace(saveRegRe,saveReg).replace(wsRE,"");return t=(" "+t).replace(identRE,rewrite).replace(restoreRegRe,restoreReg).replace(restoreRE,restore),t.trim()}function parseExpression(e){e=e.trim();return/^\/.+\/[gimy]*$/.test(e)?e:isSimplePath(e)&&e.indexOf("[")<0?"this."+e:compileGetter(e)}function isSimplePath(e){return pathTestRE.test(e)&&!literalValueRE.test(e)&&"Math."!==e.slice(0,5)}module.exports={parseExpression:parseExpression};
//# sourceMappingURL=expression.js.map