猫史档案馆


js绑定器

用户:卫道士32_32*2没了卫道士32_32*2没了查看:0 回复:3 评论:0 创建时间:2021-06-12T13:01:45


let fs = require('fs');
String.prototype.has=function(c){return this.indexOf(c)>-1;};function j喵in(comment,input,level){if(input===undefined){input=comment;comment='';level=3;}else if(level===undefined||level<1||level>3){level=23;}if(comment.length>0){comment+=' ';}var a='',b='',EOF=-1,LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',DIGITS='0123456789',ALNUM=LETTERS+DIGITS+'_$\\',theLookahead=EOF;function isAlphanum(c){return c!=EOF&&(ALNUM.has(c)||c.charCodeAt(0)>126);}function get(){var c=theLookahead;if(get.i==get.l){return EOF;}theLookahead=EOF;if(c==EOF){c=input.charAt(get.i);++get.i;}if(c>=' '||c=='\n'){return c;}if(c=='\r'){return'\n';}return' ';}get.i=0;get.l=input.length;function peek(){theLookahead=get();return theLookahead;}function next(){var c=get();if(c=='/'){switch(peek()){case'/':for(;;){c=get();if(c<='\n'){return c;}}break;case'*':get();for(;;){switch(get()){case'*':if(peek()=='/'){get();return' ';}break;case EOF:throw'Error: Unterminated comment.';}}break;default:return c;}}return c;}function action(d){var r=[];if(d==1){r.push(a);}if(d<3){a=b;if(a=='\''||a=='"'){for(;;){r.push(a);a=get();if(a==b){break;}if(a<='\n'){throw'Error: unterminated string literal: '+a;}if(a=='\\'){r.push(a);a=get();}}}}b=next();if(b=='/'&&'(,=:[!&|'.has(a)){r.push(a);r.push(b);for(;;){a=get();if(a=='/'){break;}else if(a=='\\'){r.push(a);a=get();}else if(a<='\n'){throw'Error: unterminated Regular Expression literal';}r.push(a);}b=next();}return r.join('');}function m(){var r=[];a='\n';r.push(action(3));while(a!=EOF){switch(a){case' ':if(isAlphanum(b)){r.push(action(1));}else{r.push(action(2));}break;case'\n':switch(b){case'{':case'[':case'(':case'+':case'-':r.push(action(1));break;case' ':r.push(action(3));break;default:if(isAlphanum(b)){r.push(action(1));}else{if(level==1&&b!='\n'){r.push(action(1));}else{r.push(action(2));}}}break;default:switch(b){case' ':if(isAlphanum(a)){r.push(action(1));break;}r.push(action(3));break;case'\n':if(level==1&&a!='\n'){r.push(action(1));}else{switch(a){case'}':case']':case')':case'+':case'-':case'"':case'\'':if(level==3){r.push(action(3));}else{r.push(action(1));}break;default:if(isAlphanum(a)){r.push(action(1));}else{r.push(action(3));}}}break;default:r.push(action(1));break;}}}return r.join('');}j喵in.oldSize=input.length;ret=m(input);j喵in.newSize=ret.length;return comment+ret;}
var arguments = process.argv.splice(2);
console.log('所传递的参数是:', arguments);
if(arguments.length==2){
    let packs=[];
    let pnms=[];
    let f=fs.readFileSync(arguments[0]);
    let dt=j喵in(f.toString());
    let name=Array.from(dt.matchAll(/require\(".*?"\)/g));
    name.forEach(x=>{
        let m=x[0].match(/".*?"/)[0];
        let ae=m.slice(1,m.length-1);
        if(ae.startsWith("./")){
            console.log(ae)
            pnms.push(ae);
            packs.push(j喵in(fs.readFileSync(ae).toString()));
        }
    })
    console.log(packs)
    let ac="let pack={";
    var i=0;
    packs.forEach(x=>{
        ac+="\""+pnms[i]+"\":()=>{"+x+"}";
        i++;
    });
    ac+="};";
    let e=j喵in(dt);
    ac+=e;
    ac+=`function require(e){return pack[e]()}`
    fs.writeFileSync(arguments[1],`
    /*
     * packed by bundle.js
     */
    `+j喵in(ac));
}


回复

上一页1 页 / 共 1下一页
卫道士32_32*2没了卫道士32_32*2没了

喵? s       m

点赞0


评论


卫道士32_32*2没了卫道士32_32*2没了

喵=s   m

点赞0


评论


不知道该叫啥的一只萌新不知道该叫啥的一只萌新

毫无用处

点赞0


评论