[2023/09/18: ①] Move content handle to `lib.init.parsex`.

This commit is contained in:
Rintim 2023-09-18 12:55:40 +08:00
parent 897f993409
commit c7bf5c03f2
1 changed files with 75 additions and 38 deletions

View File

@ -10234,8 +10234,9 @@
localStorage.removeItem(lib.configprefix+'background');
}
},
parsex:function(item){
//by 诗笺、Tipx-L
parsex:function(func){
function Legacy(func){
//Remove all comments
//移除所有注释
var str=func.toString().replace(/((?:(?:^[ \t]*)?(?:\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\/(?:[ \t]*\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/)))?|\/\/(?:[^\\]|\\(?:\r?\n)?)*?(?:\r?\n(?=[ \t]*(?:\r?\n|\/\*|\/\/))|(?=\r?\n))))+)|("(?:\\[\s\S]|[^"\\])*"|'(?:\\[\s\S]|[^'\\])*'|(?:\r?\n|[\s\S])[^\/"'\\\s]*)/mg,'$2').trim();
@ -10275,6 +10276,42 @@
return (new Function('event','step','source','player','target','targets',
'card','cards','skill','forced','num','trigger','result',
'_status','lib','game','ui','get','ai',str));
}
switch(typeof item){
case "object":
if(Array.isArray(item)){
let lastEvent=null;
return (event,step,source,player,target,targets,card,cards,skill,forced,num,trigger,result,_status,lib,game,ui,get,ai)=>{
if(step>=item.length) return event.finish();
var current=item[step];
lastEvent=current(event,{
event:event,
step:step,
source:source,
player:player,
target:target,
targets:targets,
card:card,
cards:cards,
skill:skill,
forced:forced,
num:num,
trigger:trigger,
result:result
},(lastEvent&&("result" in lastEvent))?lastEvent.result:null);
}
}
else{
// TODO: Parse Common Object
throw new Error("NYI: Parse Common Object");
}
case "function":
if (gnc.is.generatorFunc(item)) {
// TODO: Parse Generator Function
throw new Error("NYI: Pase Generator Function");
}
else return Legacy(item);
}
},
eval:function(func){
if(typeof func=='function'){