Changeset 2209140
- Timestamp:
- 12/10/2019 09:52:52 AM (6 years ago)
- Location:
- easycoder/trunk
- Files:
-
- 5 edited
-
easycoder-min.js (modified) (4 diffs)
-
easycoder.js (modified) (6 diffs)
-
easycoder.php (modified) (2 diffs)
-
plugins/browser.js (modified) (1 diff)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
easycoder/trunk/easycoder-min.js
r2208785 r2209140 35 35 if(e.isValueHolder){var f=e.value[e.index];c?(a=a.getValue(c)/a.getValue(d),e.value[e.index]={type:"constant",numeric:!0,content:Math.trunc(a)}):(!f.numeric&&isNaN(f.content)&&a.nonNumericValueError(b,lino),a=parseInt(f.content)/parseInt(a.getValue(d)),e.value[e.index]={type:"constant",numeric:!0,content:Math.trunc(a)})}else a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},Dummy:{compile:function(a){var b=a.getLino();a.next();a.addCommand({domain:"core",keyword:"dummy",lino:b});return!0}, 36 36 run:function(a){return a[a.pc].pc+1}},Encode:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"encode",lino:b,symbol:c});return!0}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.symbol);if(c.isValueHolder){var d=a.getValue(c.value[c.index]);c.value[c.index]={type:"constant",numeric:!1,content:a.encode(d)};b.numeric=!1}else a.variableDoesNotHoldAValueError(b.lino,c.name);return b.pc+1}},End:{compile:function(a){a.next(); 37 return!0},run:function(){return 0}},Exit:{compile:function(a){a.next();a.addCommand({domain:"core",keyword:"exit"});return!0},run:function(a){ a.parent.run(a.parent.nextPc);a.parent.nextPc=0;a.exit();return 0}},Filter:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"filter",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.array),38 d=c.value[c.index].content,e=a.getSymbolRecord(b.func).pc;try{var f=JSON.parse(d).filter(function(b){c.a=b;a.run(e);return c.v});c.value[c.index].content=JSON.stringify(f)}catch(g){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Fork:{compile:function(a){var b=a.getLino();a.next();a.nextTokenIs("to")&&a.next();var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:c});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(c){console.log(c.message),37 return!0},run:function(){return 0}},Exit:{compile:function(a){a.next();a.addCommand({domain:"core",keyword:"exit"});return!0},run:function(a){if(a.parent){var b=EasyCoder.scripts[a.parent];b.run(b.nextPc);b.nextPc=0}a.exit();return 0}},Filter:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"filter",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc], 38 c=a.getSymbolRecord(b.array),d=c.value[c.index].content,e=a.getSymbolRecord(b.func).pc;try{var f=JSON.parse(d).filter(function(b){c.a=b;a.run(e);return c.v});c.value[c.index].content=JSON.stringify(f)}catch(g){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+1}},Fork:{compile:function(a){var b=a.getLino();a.next();a.nextTokenIs("to")&&a.next();var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:c});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(c){console.log(c.message), 39 39 alert(c.message)}return b.pc+1}},Go:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"go",lino:b,label:c});return!0},run:function(a){var b=a[a.pc];if(b.label){if(a.verifySymbol(b.label)){var c=a.symbols[b.label];if(c)return c.pc}a.runtimeError(b.lino,"Unknown symbol '"+b.label+"'");return 0}return b.goto}},Gosub:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var c=a.getToken();a.next();a.addCommand({domain:"core", 40 40 keyword:"gosub",lino:b,label:c});return!0},run:function(a){var b=a[a.pc];if(a.verifySymbol(b.label))return a.stack.push(a.pc+1),a.symbols[b.label].pc;a.runtimeError(b.lino,"Unknown symbol '"+b.label+"'");return 0}},If:{compile:function(a){var b=a.getLino();a.next();var c=a.condition.compile(a),d=a.getPc();a.addCommand({domain:"core",keyword:"if",lino:b,condition:c});a.compileOne();if(!a.getToken())return a.getCommandAt(d).else=a.getPc(),!0;a.tokenIs("else")?(c=a.getPc(),a.addCommand({domain:"core", … … 54 54 a.next(),a.compileOne(!0),a.addCommand({domain:"core",keyword:"stop"}),a.getCommandAt(b).goto=a.getPc());return!0},run:function(a){a.nextPc=a.pc+1;a.runScript(a);return 0}},Sanitize:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"sanitize",lino:b,name:c});return!0}return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.name);a=a.value[a.index];a.content=JSON.stringify(JSON.parse(a.content));return b.pc+1}},Script:{compile:function(a){var b= 55 55 a.getProgram();b.script=a.nextToken();if(EasyCoder.scripts[b.script])throw Error("Script '"+b.script+"' is already running.");EasyCoder.scripts[b.script]=b;a.next();return!0},run:function(a){return a[a.pc].pc+1}},Send:{compile:function(a){var b=a.getLino(),c="";a.nextTokenIs("to")||(c=a.getValue());if(a.tokenIs("to")){if(a.nextTokenIs("parent"))var d="parent";else if(a.isSymbol){d=a.getSymbolRecord();if("module"!==d.keyword)throw Error("'"+d.name+"' is not a module");d=d.name}a.next();a.addCommand({domain:"core", 56 keyword:"send",lino:b,message:c,recipient:d})}return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.message); if("parent"===b.recipient){var d=a.parent;d&&a.parent.onMessage&&(d.message=c,d.run(d.onMessage))}else a=a.getSymbolRecord(b.recipient),a.program&&(a.program.message=c,a.program.run(a.program.onMessage));return b.pc+1}},Set:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(!c.isValueHolder)return!1;if(a.nextTokenIs("to")){a.next();for(var d=[];;){a.mark();57 try{d.push(a.getValue())}catch(f){a.rewind();break}}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArray",target:c.name,value:d});return!0}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setBoolean",target:c.name});return!0}switch(a.getToken()){case "ready":return a.next(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setReady"}),!0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to"))){var e= 58 a. getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:e});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return e=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty",target:d.name,name:c,value:e}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),59 a.nextTokenIs("to")))return e=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:e}),!0}a.tokenIs("the")&&a.next();switch(a.getToken()){case "elements":a.next();if(a.tokenIs("of")){a.next();if(!a.isSymbol())throw Error("Unknown variable '"+a.getToken()+"'");c=a.getToken();a.next();if(a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElements",symbol:c,value:d}),!0}break;case "encoding":if(a.nextTokenIs("to"))return c= 60 a.getNextValue(),a.addCommand({domain:"core",keyword:"set",request:"encoding",lino:b,encoding:c}),!0;a.addWarning("Unknown encoding option");break;case "payload":if(a.nextTokenIs("of")&&a.nextIsSymbol()&&(c=a.getSymbolRecord(),"callback"===c.keyword&&a.nextTokenIs("to")))return d=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",request:"setPayload",lino:b,callback:c.name,payload:d}),!0}return!1},run:function(a){var b=a[a.pc];switch(b.request){case "setBoolean":var c=a.getSymbolRecord(b.target); 61 c.isValueHolder?(c.value[c.index]={type:"boolean",content:!0},b.numeric=!1):a.variableDoesNotHoldAValueError(b.lino,c.name);break;case "setReady":a.parent.run(a.parent.nextPc);a.parent.nextPc=0;break;case "setArray":c=a.getSymbolRecord(b.target);c.elements=b.value.length;c.value=b.value;break;case "encoding":a.encoding=a.getValue(b.encoding);break;case "setElements":c=a.getSymbolRecord(b.symbol);var d=c.elements;c.elements=a.getValue(b.value);c.index=0;if(c.elements>d)for(a=d;a<c.elements;a++)c.value.push({}), 62 c.element.push({});else c.value=c.value.slice(0,c.elements),c.element=c.element.slice(0,c.elements);break;case "setElement":c=a.getSymbolRecord(b.target);d=a.getValue(b.index);var e=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);e[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(e);break;case "setProperty":c=a.getSymbolRecord(b.target);(e=a.getValue(c.value[c.index]))||(e="{}");d="";try{d=JSON.parse(e)}catch(f){return a.runtimeError(b.lino,"Can't parse "+c.name),0}e=a.getValue(b.name); 63 if(a=a.evaluate(b.value))a.content instanceof Array?d[e]=a.content:"boolean"===a.type?d[e]=a.content:a.numeric?d[e]=a.content:'{"'===a.content.substr(0,2)?d[e]=JSON.parse(a.content):d[e]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload=a.getValue(b.payload);break;case "setArg":d=a.getValue(b.name),c=a.getSymbolRecord(b.target),c[d]=a.getValue(b.value)}return b.pc+1}},Sort:{compile:function(a){var b= 64 a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"sort",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.array),d=c.value[c.index].content,e=a.getSymbolRecord(b.func).pc;try{var f=JSON.parse(d);f.sort(function(b,d){c.a=b;c.b=d;a.run(e);return c.v});c.value[c.index].content=JSON.stringify(f)}catch(g){a.runtimeError(b.lino,"Can't parse this array")}return b.pc+ 65 1}},Split:{compile:function(a){var b=a.getLino();item=a.getNextValue();var c="\n";a.tokenIs("on")&&(c=a.getNextValue());if(["giving","into"].includes(a.getToken())&&a.nextIsSymbol()){var d=a.getSymbolRecord();if("variable"===d.keyword)return a.next(),a.addCommand({domain:"core",keyword:"split",lino:b,item:item,on:c,target:d.name}),!0}return!1},run:function(a){var b=a[a.pc],c=a.getValue(b.item),d=a.getValue(b.on);c=c.split(d);d=c.length;targetRecord=a.getSymbolRecord(b.target);targetRecord.elements= 66 d;for(a=0;a<d;a++)targetRecord.value[a]={type:"constant",numeric:!1,content:c[a]};targetRecord.index=0;return b.pc+1}},Stop:{compile:function(a){var b=a.getLino();a.next();if(a.more()&&a.isSymbol()&&!a.getToken().endsWith(":")){var c=a.getSymbolRecord();return"module"===c.keyword?(a.next(),a.addCommand({domain:"core",keyword:"stop",lino:b,name:c.name}),!0):!1}a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});return!0},run:function(a){var b=a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit();56 keyword:"send",lino:b,message:c,recipient:d})}return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.message);"parent"===b.recipient?a.parent&&(a=EasyCoder.scripts[a.parent],a.onMessage&&(a.message=c,a.run(a.onMessage))):(a=a.getSymbolRecord(b.recipient),a.program&&(a.program.message=c,a.program.run(a.program.onMessage)));return b.pc+1}},Set:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(!c.isValueHolder)return!1;if(a.nextTokenIs("to")){a.next();for(var d= 57 [];;){a.mark();try{d.push(a.getValue())}catch(f){a.rewind();break}}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArray",target:c.name,value:d});return!0}a.addCommand({domain:"core",keyword:"set",lino:b,request:"setBoolean",target:c.name});return!0}switch(a.getToken()){case "ready":return a.next(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setReady"}),!0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&& 58 a.nextTokenIs("to"))){var e=a.getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:e});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return e=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty",target:d.name,name:c,value:e}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&& 59 (d=a.getSymbolRecord(),a.nextTokenIs("to")))return e=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:e}),!0}a.tokenIs("the")&&a.next();switch(a.getToken()){case "elements":a.next();if(a.tokenIs("of")){a.next();if(!a.isSymbol())throw Error("Unknown variable '"+a.getToken()+"'");c=a.getToken();a.next();if(a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElements",symbol:c,value:d}), 60 !0}break;case "encoding":if(a.nextTokenIs("to"))return c=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",request:"encoding",lino:b,encoding:c}),!0;a.addWarning("Unknown encoding option");break;case "payload":if(a.nextTokenIs("of")&&a.nextIsSymbol()&&(c=a.getSymbolRecord(),"callback"===c.keyword&&a.nextTokenIs("to")))return d=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",request:"setPayload",lino:b,callback:c.name,payload:d}),!0}return!1},run:function(a){var b=a[a.pc];switch(b.request){case "setBoolean":var c= 61 a.getSymbolRecord(b.target);c.isValueHolder?(c.value[c.index]={type:"boolean",content:!0},b.numeric=!1):a.variableDoesNotHoldAValueError(b.lino,c.name);break;case "setReady":if(a=EasyCoder.scripts[a.parent])a.run(a.nextPc),a.nextPc=0;break;case "setArray":c=a.getSymbolRecord(b.target);c.elements=b.value.length;c.value=b.value;break;case "encoding":a.encoding=a.getValue(b.encoding);break;case "setElements":c=a.getSymbolRecord(b.symbol);var d=c.elements;c.elements=a.getValue(b.value);c.index=0;if(c.elements> 62 d)for(a=d;a<c.elements;a++)c.value.push({}),c.element.push({});else c.value=c.value.slice(0,c.elements),c.element=c.element.slice(0,c.elements);break;case "setElement":c=a.getSymbolRecord(b.target);d=a.getValue(b.index);var e=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);e[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(e);break;case "setProperty":c=a.getSymbolRecord(b.target);(e=a.getValue(c.value[c.index]))||(e="{}");d="";try{d=JSON.parse(e)}catch(f){return a.runtimeError(b.lino, 63 "Can't parse "+c.name),0}e=a.getValue(b.name);if(a=a.evaluate(b.value))a.content instanceof Array?d[e]=a.content:"boolean"===a.type?d[e]=a.content:a.numeric?d[e]=a.content:'{"'===a.content.substr(0,2)?d[e]=JSON.parse(a.content):d[e]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload=a.getValue(b.payload);break;case "setArg":d=a.getValue(b.name),c=a.getSymbolRecord(b.target),c[d]=a.getValue(b.value)}return b.pc+ 64 1}},Sort:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var c=a.getSymbolRecord();if(a.nextTokenIs("with")){var d=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"sort",lino:b,array:c.name,func:d});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.array),d=c.value[c.index].content,e=a.getSymbolRecord(b.func).pc;try{var f=JSON.parse(d);f.sort(function(b,d){c.a=b;c.b=d;a.run(e);return c.v});c.value[c.index].content=JSON.stringify(f)}catch(g){a.runtimeError(b.lino, 65 "Can't parse this array")}return b.pc+1}},Split:{compile:function(a){var b=a.getLino();item=a.getNextValue();var c="\n";a.tokenIs("on")&&(c=a.getNextValue());if(["giving","into"].includes(a.getToken())&&a.nextIsSymbol()){var d=a.getSymbolRecord();if("variable"===d.keyword)return a.next(),a.addCommand({domain:"core",keyword:"split",lino:b,item:item,on:c,target:d.name}),!0}return!1},run:function(a){var b=a[a.pc],c=a.getValue(b.item),d=a.getValue(b.on);c=c.split(d);d=c.length;targetRecord=a.getSymbolRecord(b.target); 66 targetRecord.elements=d;for(a=0;a<d;a++)targetRecord.value[a]={type:"constant",numeric:!1,content:c[a]};targetRecord.index=0;return b.pc+1}},Stop:{compile:function(a){var b=a.getLino();a.next();if(a.more()&&a.isSymbol()&&!a.getToken().endsWith(":")){var c=a.getSymbolRecord();return"module"===c.keyword?(a.next(),a.addCommand({domain:"core",keyword:"stop",lino:b,name:c.name}),!0):!1}a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});return!0},run:function(a){var b=a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit(); 67 67 else return 0;return b.pc+1}},Take:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue();if(a.tokenIs("from"))if(a.next(),a.isSymbol()){var d=a.getSymbol();if(a.getCommandAt(d.pc).isValueHolder){if("giving"===a.peek()){d=a.getValue();a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:e})}else d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,target:d});return!0}a.warning("core 'take'': Expected value holder")}else{d= 68 68 a.getValue();if(a.tokenIs("giving"))return a.next(),e=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:e}),!0;a.warning("core 'take'': Expected \"giving\"")}return!1},run:function(a){var b=a[a.pc],c=b.value1,d=b.value2,e=a.getSymbolRecord(b.target);if(e.isValueHolder){var f=e.value[e.index];d?(a=a.getValue(d)-a.getValue(c),e.value[e.index]={type:"constant",numeric:!0,content:a}):(!f.numeric&&isNaN(f.content)&&a.nonNumericValueError(b.lino),a=parseInt(a.getValue(f))- … … 99 99 a);if(a.numeric)return a.content;if("boolean"===a.type)return a.content?"true":"false";if("undefined"!==typeof a.content&&2<=a.content.length&&('{"'===a.content.substr(0,2)||"["===a.content[0]))try{var b=JSON.parse(a.content);return JSON.stringify(b,null,2)}catch(c){return this.reportError(c),"{}"}return a.content},getSimpleValue:function(a){return!0===a||!1===a?{type:"boolean",content:a}:{type:"constant",numeric:Number.isInteger(a),content:a}},run:function(a){a&&(this.program=this,EasyCoder_Run.run(this, 100 100 a))},exit:function(){EasyCoder_Run.exit(this)},register:function(a){$jscomp$this.program=a},require:function(a,b,c){var d=document.createElement("css"===a?"link":"script");switch(a){case "css":d.type="text/css";d.href=b;d.rel="stylesheet";break;case "js":d.type="text/javascript";d.src=b;break;default:return}d.onload=function(){console.log(Date.now()-EasyCoder.timestamp+" ms: Library "+b+" loaded");c()};document.head.appendChild(d)},isUndefined:function(a){return"undefined"===typeof a},runScript:function(a){var b= 101 a[a.pc],c=a.getValue(b.script),d=b.imports;d.caller=a.script;var e=b.module?a.getSymbolRecord(b.module):null;try{EasyCoder.tokeniseAndCompile(c.split("\n"),d,e,this ,b.then)}catch(f){EasyCoder.reportError(f,a,a.source);a.onError?a.run(a.onError):(a=a.parent)&&a.onError&&a.run(a.onError);return}b.nowait&&EasyCoder.run(a.nextPc)},close:function(){},compileScript:function(a,b,c,d){var e=a.tokens;this.compiling=!0;var f=EasyCoder_Compiler;this.compiler=f;f.value=EasyCoder_Value;f.condition=EasyCoder_Condition;101 a[a.pc],c=a.getValue(b.script),d=b.imports;d.caller=a.script;var e=b.module?a.getSymbolRecord(b.module):null;try{EasyCoder.tokeniseAndCompile(c.split("\n"),d,e,this.script,b.then)}catch(f){EasyCoder.reportError(f,a,a.source);a.onError?a.run(a.onError):(a=a.parent)&&a.onError&&a.run(a.onError);return}b.nowait&&EasyCoder.run(a.nextPc)},close:function(){},compileScript:function(a,b,c,d){var e=a.tokens;this.compiling=!0;var f=EasyCoder_Compiler;this.compiler=f;f.value=EasyCoder_Value;f.condition=EasyCoder_Condition; 102 102 f.domain=this.domain;f.imports=b;b=EasyCoder_Compiler.compile(e);this.compiling=!1;b.EasyCoder=this;b.value=EasyCoder_Value;b.condition=EasyCoder_Condition;b.compare=EasyCoder_Compare;b.source=a;b.run=this.run;b.exit=this.exit;b.runScript=this.runScript;b.evaluate=this.evaluate;b.getValue=this.getValue;b.getFormattedValue=this.getFormattedValue;b.getSimpleValue=this.getSimpleValue;b.encode=this.encode;b.decode=this.decode;b.domain=this.domain;b.require=this.require;b.isUndefined=this.isUndefined; 103 103 b.checkPlugin=this.checkPlugin;b.getPlugin=this.getPlugin;b.addLocalPlugin=this.addLocalPlugin;b.getPluginsPath=this.getPluginsPath;b.getSymbolRecord=this.getSymbolRecord;b.verifySymbol=this.verifySymbol;b.runtimeError=this.runtimeError;b.nonNumericValueError=this.nonNumericValueError;b.variableDoesNotHoldAValueError=this.variableDoesNotHoldAValueError;b.reportError=this.reportError;b.register=this.register;b.symbols=f.getSymbols();b.encoding="ec";b.popups=[];b.stack=[];b.queue=[0];b.module=c;b.parent= … … 112 112 f[e.lino-n].line.substr(g);l+='<input type="text" name="'+n+'"value="'+(e.lino-n+1+": "+q.split("\\s").join(" ")+'"style="width:100%;border:none;enabled:false">')}l+="<br>"}k.innerHTML=h+" "+l;k.style.display="block";b.$jscomp$loop$prop$run$66=document.getElementById("easycoder-run-button");b.$jscomp$loop$prop$step$67=document.getElementById("easycoder-step-button");b.$jscomp$loop$prop$run$66.onclick=function(b){return function(){b.$jscomp$loop$prop$run$66.blur();a.tracing=!1;document.getElementById("easycoder-tracer-content").style.display= 113 113 "none";try{EasyCoder_Run.run(a,a.resume)}catch(p){var c="Error in run handler: "+p.message;console.log(c);alert(c)}}}(b);b.$jscomp$loop$prop$step$67.onclick=function(b){return function(){console.log("step");b.$jscomp$loop$prop$step$67.blur();a.tracing=!0;document.getElementById("easycoder-tracer-content").style.display="block";try{a.run(a.resume)}catch(p){var c="Error in step handler: "+p.message;console.log(c);alert(c)}}}(b)}a.resume=a.pc;a.pc=0}break}b={$jscomp$loop$prop$run$66:b.$jscomp$loop$prop$run$66, 114 $jscomp$loop$prop$step$67:b.$jscomp$loop$prop$step$67}}},exit:function(a){a.onExit&&( delete EasyCoder.scripts[a.script],a.parent.run(a.onExit),a.module.program=null,a.running=!1)}},EasyCoder_Value={name:"EasyCoder_Value",getItem:function(a){var b=a.getToken();if(!b)return null;if("true"===b)return a.next(),{type:"boolean",content:!0};if("false"===b)return a.next(),{type:"boolean",content:!1};if("`"===b.charAt(0))return a.next(),{type:"constant",numeric:!1,content:b.substring(1,b.length-1)};if(b.charAt(0).match(/[0-9-]/)){var c=114 $jscomp$loop$prop$step$67:b.$jscomp$loop$prop$step$67}}},exit:function(a){a.onExit&&(a.un(a.onExit),delete EasyCoder.scripts[a.script],a.module.program=null,a.running=!1)}},EasyCoder_Value={name:"EasyCoder_Value",getItem:function(a){var b=a.getToken();if(!b)return null;if("true"===b)return a.next(),{type:"boolean",content:!0};if("false"===b)return a.next(),{type:"boolean",content:!1};if("`"===b.charAt(0))return a.next(),{type:"constant",numeric:!1,content:b.substring(1,b.length-1)};if(b.charAt(0).match(/[0-9-]/)){var c= 115 115 eval(b);if(Number.isInteger(c))return a.next(),{type:"constant",numeric:!0,content:c};throw Error("'"+b+"' is not an integer");}b=a.getIndex();c=$jscomp.makeIterator(Object.keys(a.domain));for(var d=c.next();!d.done;d=c.next())if(d=d.value,a.rewindTo(b),d=a.domain[d].value.compile(a))return d;return null},compile:function(a){var b=a.getToken(),c=EasyCoder_Value.getItem(a);if(!c)throw Error("Undefined value: '"+b+"'");if("cat"===a.getToken()){for(b={type:"cat",numeric:!1,parts:[c]};a.tokenIs("cat");)a.next(), 116 116 b.parts.push(a.value.getItem(a));return b}return c},doValue:function(a,b){if("undefined"===typeof b.type)return a.runtimeError(a[a.pc].lino,"Undefined value (variable not initialized?)"),null;switch(b.type){case "cat":return{type:"constant",numeric:!1,content:b.parts.reduce(function(b,c){return b+EasyCoder_Value.doValue(a,c).content},"")};case "boolean":case "constant":return b;case "symbol":var c=a.getSymbolRecord(b.name);if(c.isValueHolder){if(b=c.value[c.index]){c=b.content;if(null===c||"undefined"=== 117 117 typeof c)b.content=b.numeric?0:"";return b}return null}return a.domain[c.domain].value.get(a,b)}return a.domain[b.domain].value.get(a,b)},constant:function(a,b){return{type:"constant",numeric:b,content:a}},evaluate:function(a,b){if(!b)return{type:"constant",numeric:!1,content:""};var c=EasyCoder_Value.doValue(a,b);if(c)return c;a.runtimeError(a[a.pc].lino,"Can't decode value: "+b)},getValue:function(a,b){return EasyCoder_Value.evaluate(a,b).content},encode:function(a,b){if(a)switch(b){case "ec":return a.replace(/'/g, 118 "~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(a.replace(/\s/g,"+"));case "sanitize":return a.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return a},decode:function(a,b){if(a)switch(b){case "ec":return a.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(a).replace(/\+/g," ")}return a}};EasyCoder.version="2.5. 2";EasyCoder.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page");118 "~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(a.replace(/\s/g,"+"));case "sanitize":return a.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return a},decode:function(a,b){if(a)switch(b){case "ec":return a.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(a).replace(/\+/g," ")}return a}};EasyCoder.version="2.5.4";EasyCoder.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page"); 119 119 function EasyCoder_Startup(){console.log(Date.now()-EasyCoder.timestamp+" ms: Page loaded; reset timer & start EasyCoder");EasyCoder.timestamp=Date.now();EasyCoder.scripts={};window.EasyCoder=EasyCoder;var a=document.getElementById("easycoder-script");if(a){a.style.display="none";try{EasyCoder.start(a.innerText)}catch(b){EasyCoder.reportError(b)}}}window.onload=EasyCoder_Startup; -
easycoder/trunk/easycoder.js
r2208785 r2209140 960 960 961 961 run: program => { 962 program.parent.run(program.parent.nextPc); 963 program.parent.nextPc = 0; 962 if (program.parent) { 963 let parent = EasyCoder.scripts[program.parent]; 964 parent.run(parent.nextPc); 965 parent.nextPc = 0; 966 } 964 967 program.exit(); 965 968 return 0; … … 1807 1810 const message = program.getValue(command.message); 1808 1811 if (command.recipient === `parent`) { 1809 const parent = program.parent;1810 if (parent) {1811 const onMessage = p rogram.parent.onMessage;1812 if (program.parent) { 1813 const parent = EasyCoder.scripts[program.parent]; 1814 const onMessage = parent.onMessage; 1812 1815 if (onMessage) { 1813 1816 parent.message = message; … … 2028 2031 break; 2029 2032 case `setReady`: 2030 program.parent.run(program.parent.nextPc); 2031 program.parent.nextPc = 0; 2033 let parent = EasyCoder.scripts[program.parent]; 2034 if (parent) { 2035 parent.run(parent.nextPc); 2036 parent.nextPc = 0; 2037 } 2032 2038 break; 2033 2039 case `setArray`: … … 3596 3602 const moduleRecord = command.module ? program.getSymbolRecord(command.module) : null; 3597 3603 try { 3598 EasyCoder.tokeniseAndCompile(script.split(`\n`), imports, moduleRecord, this , command.then);3604 EasyCoder.tokeniseAndCompile(script.split(`\n`), imports, moduleRecord, this.script, command.then); 3599 3605 } catch (err) { 3600 3606 EasyCoder.reportError(err, program, program.source); … … 4029 4035 exit: (program) => { 4030 4036 if (program.onExit) { 4037 program.un(program.onExit); 4038 // let parent = EasyCoder.scripts[program.parent]; 4039 // if (parent) { 4040 // parent.run(parent.onExit); 4041 // } 4031 4042 delete EasyCoder.scripts[program.script]; 4032 program.parent.run(program.onExit);4033 4043 program.module.program = null; 4034 4044 program.running = false; … … 4236 4246 } 4237 4247 }; 4238 EasyCoder.version = `2.5. 2`;4248 EasyCoder.version = `2.5.4`; 4239 4249 EasyCoder.timestamp = Date.now(); 4240 4250 console.log(`EasyCoder loaded; waiting for page`); -
easycoder/trunk/easycoder.php
r2208785 r2209140 4 4 * Plugin URI: https://easycoder.software 5 5 * Description: Control the appearance and behavior of your posts and pages by embedding simple English-like scripts, without the need to learn JavaScript. 6 * Version: 2.5. 36 * Version: 2.5.4 7 7 * Author: EasyCoder Software 8 8 * Author URI: https://easycoder.software … … 17 17 function easycoder_enqueue_script() { 18 18 wp_enqueue_script('easycoder_script', plugin_dir_url( __FILE__ ) 19 . 'easycoder-min.js', array(), '2.5. 3');19 . 'easycoder-min.js', array(), '2.5.4'); 20 20 } 21 21 -
easycoder/trunk/plugins/browser.js
r2208785 r2209140 396 396 parent = document.body; 397 397 } else { 398 const p = command.imported ? program.parent: program;398 const p = command.imported ? EasyCoder.scripts[program.parent] : program; 399 399 const parentRecord = p.getSymbolRecord(command.parent); 400 400 if (!parentRecord.element[parentRecord.index]) { -
easycoder/trunk/readme.txt
r2208785 r2209140 54 54 55 55 == Changelog == 56 57 = 2.5.4 10-dec-2019 = 58 * Fixed bug in parent script handling 56 59 57 60 = 2.5.3 09-dec-2019 =
Note: See TracChangeset
for help on using the changeset viewer.