Plugin Directory

Changeset 1952358


Ignore:
Timestamp:
10/05/2018 08:49:40 PM (7 years ago)
Author:
gtanyware
Message:

Updates for V1.5.2

Location:
easycoder/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • easycoder/trunk/easycoder-min.js

    r1949336 r1952358  
    2929!0;return!1},run:function(b){var a=b[b.pc],d=a.value1,f=a.value2,e=b.getSymbolRecord(a.target);if(e.isValueHolder){var g=e.value[e.index];d?(b=b.getValue(d)*b.getValue(f),e.value[e.index]={type:"constant",numeric:!0,content:b}):(g.numeric||b.error.nonNumericValueError(),b=g.content*b.getValue(f),e.value[e.index]={type:"constant",numeric:!0,content:b})}else b.error.VariableDoesNotHoldAValueError(e.name);return a.pc+1}},Negate:{compile:function(b){var a=b.getLino();b.getTokens();b.next();if(b.isSymbol()){var d=
    3030b.getToken();b.next();b.addCommand({domain:"basic",keyword:"negate",lino:a,symbol:d});return!0}return!1},run:function(b){var a=b[b.pc],d=b.getSymbolRecord(a.symbol);d.isValueHolder?d.value[d.index]={type:"constant",numeric:!0,content:-d.value[d.index].content}:b.error.VariableDoesNotHoldAValueError(d.name);return a.pc+1}},Print:{compile:function(b){var a=b.getLino();b.next();var d=b.getValue();b.addCommand({domain:"basic",keyword:"print",lino:a,value:d});return!0},run:function(b){var a=b[b.pc];b=
    31 b.getValue(a.value);console.log("-> "+b);return a.pc+1}},Put:{compile:function(a){var b=a.getLino();a.next();var d=a.getValue();if(a.tokenIs("into")){a.next();if(a.isSymbol()){var f=a.getToken();a.next();a.addCommand({domain:"basic",keyword:"put",lino:b,value:d,target:f});return!0}a.error.noSuchVariableError(a.getToken())}return!1},run:function(a){var b=a[a.pc],d=b.value,f=a.getSymbolRecord(b.target);f.isValueHolder||a.error.variableDoesNotHoldAValueError(f.name);f.value[f.index]=a.evaluate(d);return b.pc+
     31b.getValue(a.value);console.log("-> "+b);return a.pc+1}},Put:{compile:function(b){var a=b.getLino();b.next();var d=b.getValue();if(b.tokenIs("into")){b.next();if(b.isSymbol()){var f=b.getToken();b.next();b.addCommand({domain:"basic",keyword:"put",lino:a,value:d,target:f});return!0}b.error.noSuchVariableError(b.getToken())}return!1},run:function(a){var b=a[a.pc],d=b.value,f=a.getSymbolRecord(b.target);f.isValueHolder||a.error.variableDoesNotHoldAValueError(f.name);f.value[f.index]=a.evaluate(d);return b.pc+
    32321}},Return:{compile:function(a){var b=a.getLino();a.next();a.addCommand({domain:"basic",keyword:"return",lino:b});return!0},run:function(a){return a.stack.pop()}},Set:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var d=a.getSymbolRecord();if(!d.isValueHolder)return!1;a.next();if(a.tokenIs("to")){a.next();for(var f=[];;){a.mark();try{f.push(a.getValue())}catch(l){a.rewind();break}}a.addCommand({domain:"basic",keyword:"set",lino:b,type:"setArray",target:d.name,value:f});return!0}a.addCommand({domain:"basic",
    3333keyword:"set",lino:b,type:"setBoolean",target:d.name});return!0}a.tokenIs("the")&&a.next();if(a.tokenIs("elements")&&(a.next(),a.tokenIs("of")&&(a.next(),a.getTarget(),a.isSymbol()||a.error.unknownVariableError(a.getToken()),d=a.getToken(),a.next(),a.tokenIs("to"))))return a.next(),f=a.getValue(),a.addCommand({domain:"basic",keyword:"set",lino:b,type:"setElements",symbol:d,value:f}),!0;if(a.tokenIs("encoding")){a.next();if(a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"basic",
     
    4646{domain:"basic",type:"valueOf",value:a.getValue()};break;case "length":a.next();if(a.tokenIs("of"))return a.next(),{domain:"basic",type:"lengthOf",value:a.getValue()};break;case "left":a.next();b=a.getValue();if(a.tokenIs("of"))return a.next(),a=a.getValue(),{domain:"basic",type:"left",count:b,value:a};break;case "right":if(a.next(),b=a.getValue(),a.tokenIs("of"))return a.next(),a=a.getValue(),{domain:"basic",type:"right",count:b,value:a}}return null},get:function(a,c){switch(c.type){case "boolean":return{type:"boolean",
    4747numeric:!1,content:c.content};case "index":return{type:"constant",numeric:!0,content:a.getSymbolRecord(c.name).index};case "random":return a=a.evaluate(c.range),{type:"constant",numeric:!0,content:Math.floor(Math.random()*a.content)};case "cos":var b=a.getValue(c.angle_c);a=a.getValue(c.radius_c);return{type:"constant",numeric:!0,content:parseInt(Math.cos(.01745329*parseFloat(b))*a,10)};case "sin":return b=a.getValue(c.angle_s),a=a.getValue(c.radius_s),{type:"constant",numeric:!0,content:parseInt(Math.sin(.01745329*
    48 parseFloat(b))*a,10)};case "tan":return b=a.getValue(c.angle_t),a=a.getValue(c.radius_t),{type:"constant",numeric:!0,content:parseInt(Math.tan(.01745329*parseFloat(b))*a,10)};case "valueOf":return{type:"constant",numeric:!0,content:a.getValue(c.value)};case "lengthOf":return{type:"constant",numeric:!0,content:a.getValue(c.value).length};case "left":return a.getValue(c.value),{type:"constant",numeric:!1,content:a.getValue(c.value).substr(0,a.getValue(c.count))};case "modulo":return b=a.getSymbolRecord(c.name),
     48parseFloat(b))*a,10)};case "tan":return b=a.getValue(c.angle_t),a=a.getValue(c.radius_t),{type:"constant",numeric:!0,content:parseInt(Math.tan(.01745329*parseFloat(b))*a,10)};case "valueOf":return{type:"constant",numeric:!0,content:parseInt(a.getValue(c.value))};case "lengthOf":return{type:"constant",numeric:!0,content:a.getValue(c.value).length};case "left":return a.getValue(c.value),{type:"constant",numeric:!1,content:a.getValue(c.value).substr(0,a.getValue(c.count))};case "modulo":return b=a.getSymbolRecord(c.name),
    4949a=a.evaluate(c.value),{type:"constant",numeric:!0,content:b.value[b.index].content%a.content};case "empty":return{type:"constant",numeric:!1,content:""};case "encode":return{type:"constant",numeric:!1,content:a.encode(a.getValue(c.value))};case "decode":return{type:"constant",numeric:!1,content:a.decode(a.getValue(c.value))};case "element":return b=a.getValue(c.element),c=a.getSymbolRecord(c.symbol),a=JSON.parse(a.getValue(c.value[c.index]))[b],{type:"constant",numeric:!1,content:"object"===typeof a?
    5050JSON.stringify(a):a};case "property":return b=a.getValue(c.property),c=a.getSymbolRecord(c.symbol),a=a.getValue(c.value[c.index]),{type:"constant",numeric:!1,content:"object"===typeof a?a[b]:JSON.parse(a)[b]}}return null},put:function(a,c){a.value[a.index]=c}},condition:{compile:function(b){if(b.tokenIs("not"))return b.next(),{domain:"basic",type:"not",value:b.getValue()};try{var c=b.getValue();if("is"===b.getToken()){b.next();var d=a.isNegate(b);if(b.tokenIs("greater")){b.next();if(b.tokenIs("than")){b.next();
    51 var f=b.getValue();return{domain:"basic",type:"greater",value1:c,value2:f,negate:d}}return null}if(b.tokenIs("less")){b.next();if(b.tokenIs("than")){b.next();var e=b.getValue();return{domain:"basic",type:"less",value1:c,value2:e,negate:d}}return null}var g=b.getValue();return{domain:"basic",type:"is",value1:c,value2:g,negate:d}}if(c)return{domain:"basic",type:"boolean",value:c}}catch(n){console.log(n)}return null},test:function(a,c){switch(c.type){case "boolean":return a.getValue(c.value);case "is":return a=
     51var f=b.getValue();return{domain:"basic",type:"greater",value1:c,value2:f,negate:d}}return null}if(b.tokenIs("less")){b.next();if(b.tokenIs("than")){b.next();var e=b.getValue();return{domain:"basic",type:"less",value1:c,value2:e,negate:d}}return null}var g=b.getValue();return{domain:"basic",type:"is",value1:c,value2:g,negate:d}}if(c)return{domain:"basic",type:"boolean",value:c}}catch(p){console.log(p)}return null},test:function(a,c){switch(c.type){case "boolean":return a.getValue(c.value);case "is":return a=
    5252a.compare(a,c.value1,c.value2),c.negate?0!==a:0===a;case "greater":return a=a.compare(a,c.value1,c.value2),c.negate?0>=a:0<a;case "less":return a=a.compare(a,c.value1,c.value2),c.negate?0<=a:0>a;case "not":return!a.getValue(c.value)}}}};k.exports=a},{}],3:[function(e,k,h){var g={A:{compile:function(a){a.compileVariable("browser","a",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Alert:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue();a.addCommand({domain:"browser",keyword:"alert",
    5353lino:b,value:c});return!0},run:function(a){var b=a.value.evaluate(a,a[a.pc].value).content;alert(b);return a[a.pc].pc+1}},Attach:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getProgram()[a.getSymbol().pc];switch(c.keyword){case "button":case "div":case "header":case "p":case "a":case "img":case "input":case "ul":case "li":case "select":case "span":case "pre":case "popup":a.next();if(a.tokenIs("to")){a.next();var d=a.getValue();a.addCommand({domain:"browser",
     
    5555function(b){a.popups.includes(b.target.id)&&(b.target.style.display="none")});return b.pc+1}},Audioclip:{compile:function(a){a.compileVariable("browser","audioclip");return!0},run:function(a){return a[a.pc].pc+1}},BUTTON:{compile:function(a){a.compileVariable("browser","button",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Create:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord(),d=c.name;a.next();switch(c.keyword){case "audioclip":a.tokenIs("from")&&
    5656a.next();var f=a.getValue();a.addCommand({domain:"browser",keyword:"create",type:"audioclip",name:c.name,lino:b,target:d,value:f});return!0;case "div":case "p":case "h1":case "h2":case "h3":case "h4":case "h5":case "h6":case "span":case "button":case "input":case "pre":if(d="","input"===c.keyword&&(a.tokenIs("type")?(a.next(),d=a.getToken(),a.next()):a.error.missingInputTypeError()),a.tokenIs("in")&&(a.next(),a.isSymbol())){f=a.getSymbolRecord();"dom"!==f.extra&&a.error.inappropriateTypeError(f.keyword);
    57 a.next();for(var e="",g="",h="",k=!0;k;){var p=a.getToken();if(!p)break;a.next();switch(p){case "class":e=a.getValue();break;case "style":g=a.getValue();break;case "text":h=a.getValue();break;default:a.prev(),k=!1}}a.addCommand({domain:"browser",keyword:"create",lino:b,type:c.keyword,name:c.name,inputType:d,className:e,style:g,text:h,parent:f.name});return!0}}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.name);switch(b.type){case "audioclip":c.value[c.index]=b.value;break;default:var d=
     57a.next();for(var e="",g="",h="",k=!0;k;){var n=a.getToken();if(!n)break;a.next();switch(n){case "class":e=a.getValue();break;case "style":g=a.getValue();break;case "text":h=a.getValue();break;default:a.prev(),k=!1}}a.addCommand({domain:"browser",keyword:"create",lino:b,type:c.keyword,name:c.name,inputType:d,className:e,style:g,text:h,parent:f.name});return!0}}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.name);switch(b.type){case "audioclip":c.value[c.index]=b.value;break;default:var d=
    5858a.getSymbolRecord(b.parent),f=document.getElementById(d.value[d.index].content);d=document.createElement(b.type);d.id="easycoder-"+c.name+"-"+c.index;c.value[c.index]={type:"constant",numeric:!1,content:d.id};f.appendChild(d);b.inputType&&d.setAttribute("type",b.inputType);b.className&&(d.className=b.className);c=a.value.evaluate(a,b.style).content;c=$jscomp.makeIterator(c.split(";"));for(f=c.next();!f.done;f=c.next())f=f.value.split(":"),d.style[f[0]]=f[1];b.text&&(d.textContent=a.value.evaluate(a,
    5959b.text).content)}return a[a.pc].pc+1}},DIV:{compile:function(a){a.compileVariable("browser","div",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Header:{compile:function(a){a.compileVariable("browser","header",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Hide:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"browser",keyword:"hide",lino:b,symbol:c});return!0}a.addWarning("Unrecognised syntax in 'hide'");
     
    61611}},Location:{compile:function(a){var b=a.getLino();a.getTokens();a.next();var c=a.getValue();a.addCommand({domain:"browser",keyword:"location",lino:b,location:c});return!0},run:function(a){a=a[a.pc];window.location=a.location.content;return a.pc+1}},On:{compile:function(a){var b=a.getLino();a.next();var c=a.getToken();switch(c){case "change":case "click":if(a.next(),a.isSymbol()){var d=a.getSymbolRecord();a.next();if("dom"!==d.extra)return!1;a.addCommand({domain:"browser",keyword:"on",lino:b,action:c,
    6262symbol:d.name});c=a.getPc();a.addCommand({domain:"basic",keyword:"goto",goto:0});a.compileOne();a.addCommand({domain:"basic",keyword:"stop",lino:b,next:0});a.getCommandAt(c).goto=a.getPc();return!0}}a.addWarning("Unrecognised syntax in 'on'");return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.symbol);switch(b.action){case "change":if("select"===c.keyword){var d=c.value[c.index].content;if(d){var f=document.getElementById(d);f.targetPc=b.pc+2;f.addEventListener("change",function(){try{a.run(a,
    63 f.targetPc)}catch(l){console.log(l.message),alert(l.message)}return!1})}}break;case "click":c.value.forEach(function(d,f){if(d=d.content)d=document.getElementById(d),d.targetPc=b.pc+2,d.targetIndex=f,d.onclick=function(b){b.target.blur();c.index=b.target.targetIndex;try{a.run(a,b.target.targetPc)}catch(m){console.log(m.message),alert(m.message)}return!1}})}return b.pc+1}},P:{compile:function(a){a.compileVariable("browser","p",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Play:{compile:function(a){var b=
    64 a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();"audioclip"===c.keyword&&(a.next(),a.addCommand({domain:"browser",keyword:"play",lino:b,target:c.name}))}return!0},run:function(a){var b=a.getSymbolRecord(a[a.pc].target);b=a.value.evaluate(a,b.value[b.index]).content;(new Audio(b)).play();return a[a.pc].pc+1}},Popup:{compile:function(a){a.compileVariable("browser","popup");return!0},run:function(a){return a[a.pc].pc+1}},PRE:{compile:function(a){a.compileVariable("browser","pre",!1,"dom");
    65 return!0},run:function(a){return a[a.pc].pc+1}},Remove:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"browser",keyword:"remove",lino:b,symbol:c});return!0}a.unrecognisedSymbol(a.getToken());return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.symbol);document.getElementById(a.value[a.index].content).style.display="none";return b.pc+1}},SELECT:{compile:function(a){a.compileVariable("browser","select",!1,"dom");
    66 return!0},run:function(a){return a[a.pc].pc+1}},Set:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getToken();a.next();if(a.tokenIs("from")&&(a.next(),a.isSymbol())){var d=a.getToken();a.next();a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContentVar",source:d,target:c});return!0}}else if(c=a.getToken(),"the"===c&&(a.next(),c=a.getToken()),"content"===c){if(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol())){c=a.getToken();a.next();if(a.tokenIs("from")&&(a.next(),
    67 a.isSymbol()))return d=a.getToken(),a.next(),a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContentVar",source:d,target:c}),!0;if(a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContent",value:d,target:c}),!0}}else if("text"===c){if(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol()))switch(c=a.getSymbolRecord(),c.keyword){case "button":case "input":if(a.next(),a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"browser",
     63f.targetPc)}catch(l){console.log(l.message),alert(l.message)}return!1})}}break;case "click":c.value.forEach(function(d,f){if(d=d.content)d=document.getElementById(d),d.targetPc=b.pc+2,d.targetIndex=f,d.onclick=function(b){var d=b.target;d.blur();c.index=d.targetIndex;try{setTimeout(function(){a.run(a,d.targetPc)},1)}catch(n){console.log(n.message),alert(n.message)}return!1}})}return b.pc+1}},P:{compile:function(a){a.compileVariable("browser","p",!1,"dom");return!0},run:function(a){return a[a.pc].pc+
     641}},Play:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();"audioclip"===c.keyword&&(a.next(),a.addCommand({domain:"browser",keyword:"play",lino:b,target:c.name}))}return!0},run:function(a){var b=a.getSymbolRecord(a[a.pc].target);b=a.value.evaluate(a,b.value[b.index]).content;(new Audio(b)).play();return a[a.pc].pc+1}},Popup:{compile:function(a){a.compileVariable("browser","popup");return!0},run:function(a){return a[a.pc].pc+1}},PRE:{compile:function(a){a.compileVariable("browser",
     65"pre",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Remove:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"browser",keyword:"remove",lino:b,symbol:c});return!0}a.unrecognisedSymbol(a.getToken());return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.symbol);document.getElementById(a.value[a.index].content).style.display="none";return b.pc+1}},SELECT:{compile:function(a){a.compileVariable("browser",
     66"select",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Set:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getToken();a.next();if(a.tokenIs("from")&&(a.next(),a.isSymbol())){var d=a.getToken();a.next();a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContentVar",source:d,target:c});return!0}}else if(c=a.getToken(),"the"===c&&(a.next(),c=a.getToken()),"content"===c){if(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol())){c=a.getToken();a.next();if(a.tokenIs("from")&&
     67(a.next(),a.isSymbol()))return d=a.getToken(),a.next(),a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContentVar",source:d,target:c}),!0;if(a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setContent",value:d,target:c}),!0}}else if("text"===c){if(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol()))switch(c=a.getSymbolRecord(),c.keyword){case "button":case "input":if(a.next(),a.tokenIs("to"))return a.next(),d=a.getValue(),a.addCommand({domain:"browser",
    6868keyword:"set",lino:b,type:"setText",symbolName:c.name,value:d}),!0}}else if("attribute"===c){if(a.next(),c=a.getValue(),a.tokenIs("of")&&(a.next(),a.isSymbol()&&(d=a.getToken(),a.next(),a.tokenIs("to")))){a.next();var f=a.getValue();a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setAttribute",symbolName:d,attributeName:c,attributeValue:f});return!0}}else if("style"===c&&(a.next(),c=a.getValue(),a.tokenIs("of")&&(a.next(),a.isSymbol()&&(d=a.getToken(),a.next(),a.tokenIs("to")&&(a.next(),
    6969f=a.getValue())))))return a.addCommand({domain:"browser",keyword:"set",lino:b,type:"setStyle",symbolName:d,styleName:c,styleValue:f}),!0;a.addWarning("Unrecognised syntax in 'set'");return!1},run:function(a){var b=a[a.pc];switch(b.type){case "setContentVar":var c=a.getSymbolRecord(b.source);a=a.getSymbolRecord(b.target);c=document.getElementById(c.value[c.index].content);var d=document.getElementById(a.value[a.index].content);d.innerHTML=c.innerHTML;break;case "setContent":c=a.value.evaluate(a,b.value);
     
    8080a}}}},condition:{compile:function(a){},test:function(a,b){}},setStyles:function(a,b){a=document.getElementById(a);b=b.split(";");b=$jscomp.makeIterator(b);for(var c=b.next();!c.done;c=b.next())c=c.value.split(":"),a.setAttribute(c[0],c[1])}};k.exports=g},{}],4:[function(e,k,h){var g={Json:{compile:function(a){var b=a.getLino();a.getTokens();a.next();switch(a.getToken()){case "get":a.next();if(a.tokenIs("item")){a.next();var c=a.getValue();if(a.tokenIs("of")&&(a.next(),a.isSymbol())){var d=a.getToken();
    8181a.next();if(a.tokenIs("as")&&(a.next(),a.isSymbol())){var f=a.getSymbolRecord();if("variable"===f.keyword)return a.next(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"getItem",target:f.name,item:c,source:d}),!0}}a.error.expectedError("of",a.getToken())}else if(a.tokenIs("element")){a.next();c=a.getValue();if(a.tokenIs("of")&&(a.next(),a.isSymbol()&&(d=a.getToken(),a.next(),a.tokenIs("as")&&(a.next(),a.isSymbol()&&(f=a.getSymbolRecord(),"variable"===f.keyword)))))return a.next(),a.addCommand({domain:"json",
    82 keyword:"json",lino:b,request:"getElement",target:f.name,element:c,source:d}),!0;a.error.expectedError("of",a.getToken())}if(a.isSymbol()&&(c=a.getSymbolRecord(),"variable"===c.keyword&&(a.next(),a.tokenIs("from"))))return a.next(),d=a.getValue(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"get",target:c.name,value:d}),!0;break;case "set":a.next();if(a.tokenIs("encoding")){a.next();if(a.tokenIs("to"))return a.next(),c=a.getValue(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"encoding",
    83 encoding:c}),!0;a.addWarning("Unknown encoding option");return!1}if(a.isSymbol()){c=a.getSymbolRecord();if("select"===c.keyword&&(a.next(),a.tokenIs("from")&&(a.next(),a.isSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword))))return a.next(),f=null,a.tokenIs("as")&&(a.next(),f=a.getValue()),a.addCommand({domain:"json",keyword:"json",lino:b,request:"setList",target:c.name,source:d.name,display:f}),!0;break}case "shuffle":return a.next(),a.isSymbol()&&(c=a.getSymbolRecord(),"variable"===c.keyword)?
    84 (a.next(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"shuffle",target:c.name}),!0):!1}a.addWarning("Unrecognised syntax in 'json'");return!1},run:function(a){var b=a[a.pc];switch(b.request){case "get":a.ajaxCommand=b;var c=new XMLHttpRequest;c.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var b=a.ajaxCommand,c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:this.responseText};a.run(a,b.pc+1)}};b=a.getValue(b.value);c.open("GET",
    85 b,!0);c.send();return 0;case "getItem":c=a.getSymbolRecord(b.source);var d=JSON.parse(c.value[c.index].content)[a.getValue(b.item)];c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};break;case "getElement":c=a.getSymbolRecord(b.source);d=JSON.parse(c.value[c.index].content)[a.getValue(b.element)];c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};break;
    86 case "setList":c=a.getSymbolRecord(b.source);c=a.getValue(c.value[c.index]);d=JSON.parse(c);c=a.getSymbolRecord(b.target);var f=document.getElementById(c.value[c.index].content);f.options.length=0;var e=a.getValue(b.display);d.forEach(function(b){var c=e?a.decode(b[e]):null,d=document.createElement("option");d.innerHTML=c?c:b;b=c?JSON.stringify(b):b;d.value=b;f.appendChild(d)});f.selectedIndex=-1;break;case "encoding":a.encoding=a.getValue(b.encoding);break;case "shuffle":c=a.getSymbolRecord(b.target);
    87 d=JSON.parse(a.getValue(c.value[c.index]));for(var g=d.length-1;0<g;g--){var h=Math.floor(Math.random()*(g+1)),k=$jscomp.makeIterator([d[h],d[g]]);d[g]=k.next().value;d[h]=k.next().value}c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)}}return b.pc+1}},getHandler:function(a){switch(a){case "json":return g.Json;default:return!1}},run:function(a){var b=a[a.pc],c=g.getHandler(b.keyword);c||a.error.runtimeError("Unknown keyword '"+b.keyword+"' in 'json' package");return c.run(a)},
    88 value:{compile:function(a){},get:function(a,b){}},condition:{compile:function(a){},test:function(a,b){}}};k.exports=g},{}],5:[function(e,k,h){var g={Attach:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getProgram()[a.getSymbol().pc];switch(c.keyword){case "shape":case "svg":a.next();if(a.tokenIs("to")){a.next();var d=a.getValue();a.addCommand({domain:"svg",keyword:"attach",lino:b,type:c.keyword,symbol:c.name,cssId:d});return!0}break;default:compile.error.InappropriateVariableTypeError(c.keyword)}}a.addWarning("Unrecognised syntax in 'attach'");
    89 return!1},run:function(a){var b=a[a.pc],c=a.value.evaluate(a,b.cssId).content;document.getElementById(c)||a.error.noSuchElementError(c);a=a.getSymbolRecord(b.symbol);a.value[a.index]={type:"constant",numeric:"false",content:c};return b.pc+1}},Circle:{compile:function(a){a.compileVariable("svg","circle",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Create:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();a.next();switch(c.keyword){case "svg":if(a.tokenIs("in")&&
    90 (a.next(),a.isSymbol())){var d=a.getToken();a.next();for(var f=null,e=!0;e;){var g=a.getToken();a.next();switch(g){case "style":f=a.getValue();break;default:a.prev(),e=!1}}f||(f={type:"constant",numeric:!1,content:"width:100%;height:100%"});a.addCommand({domain:"svg",keyword:"create",lino:b,type:"svg",name:c.name,style:f,parent:d});return!0}break;case "group":if(a.tokenIs("in")&&(a.next(),a.isSymbol()))return f=a.getSymbolRecord(),["svg","group"].includes(f.keyword)||a.error.inappropriateTypeError(f.keyword),
    91 a.next(),a.addCommand({domain:"svg",keyword:"create",lino:b,type:"group",name:c.name,parent:f.name}),!0;break;case "circle":case "ellipse":case "line":case "rect":case "text":if(a.tokenIs("in")&&(a.next(),a.isSymbol())){d=a.getSymbolRecord();["svg","group"].includes(d.keyword)||a.error.inappropriateTypeError(d.keyword);a.next();for(e=!0;e;){var h=a.getToken();a.next();switch(h){case "style":f=a.getValue();break;case "text":g=a.getValue();break;default:a.prev(),e=!1}}a.addCommand({domain:"svg",keyword:"create",
    92 lino:b,type:c.keyword,name:c.name,style:f,text:g,parent:d.name});return!0}}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.parent),d=a.getSymbolRecord(b.name);if("group"===b.type)d.parent=b.parent,d.x=0,d.y=0;else{if("group"===c.keyword){var f=c;var e=f.value[f.index];e.content||(e.content=[]);for(e.content.push({name:d.name,index:d.index});"group"===c.keyword;)c=a.getSymbolRecord(c.parent)}e=document.getElementById(c.value[c.index].content);c=document.createElementNS("http://www.w3.org/2000/svg",
    93 b.type);e.appendChild(c);e="ec-"+d.name+"-"+d.index;c.setAttribute("id",e);"text"===d.keyword&&(c.textContent=a.value.evaluate(a,b.text).content);d.value[d.index]={type:"constant",numeric:!1,content:e};if(b.style){b=a.value.evaluate(a,b.style).content;a.domain.browser.setStyles(e,b);b=d.value[d.index];switch(d.keyword){case "circle":case "ellipse":b.x=c.getAttribute("cx");b.y=c.getAttribute("cy");break;case "line":b.x=c.getAttribute("x1");b.y=c.getAttribute("y1");b.x2=c.getAttribute("x2");b.y2=c.getAttribute("y2");
    94 break;case "rect":case "text":b.x=c.getAttribute("x"),b.y=c.getAttribute("y")}f&&(b.groupName=f.name,b.groupIndex=f.index)}}return a[a.pc].pc+1}},Ellipse:{compile:function(a){a.compileVariable("svg","ellipse",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Group:{compile:function(a){a.compileVariable("svg","group");return!0},run:function(a){return a[a.pc].pc+1}},Line:{compile:function(a){a.compileVariable("svg","line",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Move:{compile:function(a){var b=
    95 a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();a.next();if(a.tokenIs("to")){a.next();var d=a.getValue(),f=a.getValue();a.addCommand({domain:"svg",keyword:"move",lino:b,type:"moveTo",name:c.name,x:d,y:f});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.value.evaluate(a,b.x).content,d=a.value.evaluate(a,b.y).content;b=a.getSymbolRecord(b.name);switch(b.keyword){case "group":for(var f=$jscomp.makeIterator(b.value[b.index].content),e=f.next();!e.done;e=f.next()){var g=e.value;e=
    96 a.getSymbolRecord(g.name);g=e.value[g.index];var h=document.getElementById(g.content),k=parseInt(g.x)+c,p=parseInt(g.y)+d;switch(e.keyword){case "circle":case "ellipse":h.setAttribute("cx",k);h.setAttribute("cy",p);break;case "line":h.setAttribute("x1",k);h.setAttribute("y1",p);h.setAttribute("x2",parseInt(g.x2)+c);h.setAttribute("y2",parseInt(g.y2)+d);break;case "rect":case "text":h.setAttribute("x",k),h.setAttribute("y",p)}}b.x=c;b.y=d;break;case "circle":case "ellipse":case "line":case "rect":case "text":e=
    97 f=0;g=b.value[b.index];g.groupName&&(e=a.getSymbolRecord(g.groupName),f=e.x,e=e.y);g=b.value[b.index];h=document.getElementById(b.value[b.index].content);switch(b.keyword){case "circle":case "ellipse":h.setAttribute("cx",f+c);h.setAttribute("cy",e+d);break;case "line":h.setAttribute("x1",f+c);h.setAttribute("y1",e+d);b=parseInt(g.x2)-parseInt(g.x1);k=parseInt(g.y2)-parseInt(g.y1);h.setAttribute("x2",f+b+c);h.setAttribute("y2",e+k+d);break;case "rect":case "text":h.setAttribute("x",f+c),h.setAttribute("y",
    98 e+d)}g.x=c;g.y=d}return a[a.pc].pc+1}},On:{compile:function(a){var b=a.getLino();a.next();var c=a.getToken();switch(c){case "click":if(a.next(),a.isSymbol()){var d=a.getSymbolRecord();a.next();if("group"!==d.keyword)return!1;a.addCommand({domain:"svg",keyword:"on",lino:b,action:c,symbol:d.name});b=a.getPc();a.addCommand({domain:"basic",keyword:"goto",goto:0});a.compileOne();a.getCommandAt(b).goto=a.getPc();return!0}}a.addWarning("Unrecognised syntax in 'on'");return!1},run:function(a){var b=a[a.pc],
    99 c=a.getSymbolRecord(b.symbol);switch(b.action){case "click":if("group"===c.keyword)for(var d=$jscomp.makeIterator(c.value),f=d.next();!f.done;f=d.next())if(f=f.value,f.content){f=$jscomp.makeIterator(f.content);for(var e=f.next();!e.done;e=f.next()){e=e.value;var g=a.getSymbolRecord(e.name),h=g.value[e.index];h.content&&(h=document.getElementById(h.content),h.targetPc=b.pc+2,h.contentItem=g,h.contentIndex=e.index,h.onclick=function(b){b.target.blur();var d=b.target.contentItem;d.index=b.target.contentIndex;
    100 d=d.value[d.index];if(d.groupName){c.index=d.groupIndex;d=$jscomp.makeIterator(c.value[c.index].content);for(var e=d.next();!e.done;e=d.next())e=e.value,a.getSymbolRecord(e.name).index=e.index}try{a.run(a,b.target.targetPc)}catch(u){a.reportError(a.source,u)}return!1})}}}return b.pc+1}},Rect:{compile:function(a){a.compileVariable("svg","rect",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Set:{compile:function(a){var b=a.getLino();a.next();var c=a.getToken();"the"===c&&(a.next(),c=a.getToken());
    101 if("text"===c&&(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol())))switch(c=a.getSymbolRecord(),c.keyword){case "text":if(a.next(),a.tokenIs("to")){a.next();var d=a.getValue();a.addCommand({domain:"svg",keyword:"set",lino:b,type:"setText",symbolName:c.name,value:d});return!0}}return!1},run:function(a){var b=a[a.pc];switch(b.type){case "setText":var c=a.getSymbolRecord(b.symbolName);var d=document.getElementById(c.value[c.index].content);a=a.value.evaluate(a,b.value).content;switch(c.keyword){case "text":d.innerHTML=
    102 a}}return b.pc+1}},SVG:{compile:function(a){a.compileVariable("svg","svg");return!0},run:function(a){return a[a.pc].pc+1}},Text:{compile:function(a){a.compileVariable("svg","text",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},getHandler:function(a){switch(a){case "attach":return g.Attach;case "circle":return g.Circle;case "create":return g.Create;case "ellipse":return g.Ellipse;case "group":return g.Group;case "line":return g.Line;case "move":return g.Move;case "on":return g.On;case "rect":return g.Rect;
    103 case "set":return g.Set;case "svg":return g.SVG;case "text":return g.Text;default:return!1}},run:function(a){var b=a[a.pc],c=g.getHandler(b.keyword);c||a.error.runtimeError("Unknown keyword '"+b.keyword+"' in 'svg' package");return c.run(a)},value:{compile:function(a){a.tokenIs("the")&&a.next();if(a.tokenIs("text")&&(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol()))){var b=a.getSymbolRecord();a.next();if("text"===b.keyword)return{domain:"svg",type:"text",name:b.name}}return null},get:function(a,
    104 b){switch(b.type){case "text":return a=a.getSymbolRecord(b.name),{type:"constant",numeric:!1,content:document.getElementById(a.value[a.index].content).innerHTML}}}},condition:{compile:function(a){},test:function(a,b){}}};k.exports=g},{}],6:[function(e,k,h){k.exports=function(e,a,b){a=e.value.evaluate(e,a);b=e.value.evaluate(e,b);a.numeric!==b.numeric&&e.error.dataTypeMismatchError();e=a.content;b=b.content;return e>b?1:e<b?-1:0}},{}],7:[function(e,k,h){var g=Object.assign||function(a){for(var b=1;b<
    105 arguments.length;b++){var c=arguments[b],e;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(a[e]=c[e])}return a},a=this,b={getTokens:function(){return a.tokens},addWarning:function(b){a.warnings.push(b)},warning:function(a){b.addWarning(a);throw Error();},unrecognisedSymbol:function(a){b.addWarning("Unrecognised symbol '"+a+"'")},getWarnings:function(){return a.warnings},getIndex:function(){return a.index},next:function(b){a.index+=void 0===b?1:b},peek:function(){return a.tokens[a.index+1].token},
    106 getToken:function(){return a.index>=a.tokens.length?null:a.tokens[a.index]?a.tokens[a.index].token:null},nextToken:function(){b.next();return b.getToken()},skip:function(c){if(a.index>=a.tokens.length)return null;b.next();b.tokenIs(c)&&b.next()},prev:function(){a.index--},getLino:function(){return a.index>=a.tokens.length?0:a.tokens[a.index].lino},tokenIs:function(b){return a.index>=a.tokens.length?!1:b===a.tokens[a.index].token},getTarget:function(b){b=void 0===b?a.index:b;return a.tokens[b].token},
    107 getTargetPc:function(c){c=void 0===c?a.index:c;return a.symbols[b.getTarget(c)].pc},getCommandAt:function(b){return a.program[b]},isSymbol:function(){return b.getTarget()in a.symbols},getSymbol:function(){return a.symbols[b.getToken()]},getSymbolPc:function(){return b.getSymbol().pc},getSymbolRecord:function(){return a.program[b.getSymbolPc()]},getSymbols:function(){return a.symbols},getProgram:function(){return a.program},getPc:function(){return a.program.length},getValue:function(){return b.value.compile(b)},
    108 getCondition:function(){return b.condition.compile(b)},constant:function(a){return b.value.constant(a)},addCommand:function(b){a.program.push(g({pc:a.program.length},b))},addSymbol:function(b,d){a.symbols[b]={pc:d}},mark:function(){a.savedMark=a.index},rewind:function(){a.index=a.savedMark},compileVariable:function(c,d,e,g){e=void 0===e?!1:e;g=void 0===g?null:g;b.next();var f=b.getLino(),h=b.getTokens()[b.getIndex()];a.symbols[h.token]&&b.error.duplicateSymbolError(h.token);var k=b.getPc();b.next();
    109 b.addSymbol(h.token,k);b.addCommand({domain:c,keyword:d,lino:f,isSymbol:!0,isValueHolder:e,name:h.token,elements:1,index:0,value:[{}],extra:g})},compileToken:function(){var a=b.getToken();if(a){var d=b.getIndex();b.mark();for(var e=$jscomp.makeIterator(Object.keys(b.domain)),g=e.next();!g.done;g=e.next()){if((g=b.domain[g.value])&&(g=g.getHandler(a))&&g.compile(b))return;b.rewind()}console.log("No handler found");b.error.dontUnderstandError(a,d)}},compileOne:function(){var c=b.getToken();if(c){a.warnings=
    110 [];var d=a.program.length;c.endsWith(":")?(a.symbols[c.substring(0,c.length-1)]={pc:d},a.index++):b.compileToken()}},compileFromHere:function(c){for(;a.index<a.tokens.length;){var d=a.tokens[a.index].token;if("else"===d)return a.program;b.compileOne();if(-1<c.indexOf(d))break}},compile:function(c){a.tokens=c;a.index=0;a.program=[];a.symbols={};a.warnings=[];b.compileFromHere([]);b.addCommand({domain:"basic",keyword:"stop",lino:b.getLino(),next:0});return a.program}};k.exports=b},{}],8:[function(e,
    111 k,h){var g=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],d;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a};k.exports={compile:function(a){a.mark();for(var b=$jscomp.makeIterator(Object.keys(a.domain)),c=b.next();!c.done;c=b.next()){if(c=a.domain[c.value].condition.compile(a))return g({domain:name},c);a.rewind()}},test:function(a,b){return a.domain[b.domain].condition.test(a,b)}}},{}],9:[function(e,k,h){var g=this,a=e("./Tokenise"),b=
    112 e("./Compile"),c=e("./Run"),d=e("./Value"),f=e("./Condition"),l=e("./Compare");h=e("../domain/Basic");var t=e("../domain/Browser"),n=e("../domain/Json");e=e("../domain/Svg");var m={domain:{basic:h,browser:t,json:n,svg:e},compileError:{dontUnderstandError:function(a){throw Error("I don't understand '"+a+"'");},duplicateSymbolError:function(a){throw Error("Symbol '"+a+"' is a duplicate");},inappropriateTypeError:function(a){throw Error("Inappropriate type '"+a+"'");},inappropriateVariableTypeError:function(a){throw Error("Inappropriate variable type '"+
    113 a+"'");},missingInputTypeError:function(){throw Error("Missing input type");},noSuchVariableError:function(a){throw Error("No such variable: "+a);},notAnIntegerError:function(a){throw Error("Value is not an integer: "+a);},undefinedValueError:function(a){throw Error("Undefined value: "+a);},unknownTypeError:function(a){throw Error("Unknown type: "+a);},unknownVariableError:function(a){throw Error("Unknown variable: "+a);},unrecognisedValueError:function(a){throw Error("I don't understand this value: "+
    114 a);},variableDoesNotHoldAValueError:function(a){throw Error("Variable '"+a+"' does not hold a value");},expectedError:function(a,b){throw Error("Expected '"+a+"' but saw '"+b+"'");}},runtimeError:{arrayIndexOutOfRangeError:function(a){throw Error("Array index out of range for "+a);},cantDecodeValueError:function(){throw Error("Can't decode value");},dataTypeMismatchError:function(){throw Error("Data type mismatch");},nonNumericValueError:function(){throw Error("Non-numeric value");},noSuchElementError:function(a){throw Error("No such element: "+
    115 a);},runtimeError:function(a){throw Error(a);},undefinedValueError:function(a,b){g.errorPc=b;throw Error("Undefined value: "+a);},variableDoesNotHoldAValueError:function(a){throw Error("Variable '"+a+"' does not hold a value");}},setupTracer:function(){var a=document.getElementById("easycoder-tracer");a&&(a.innerHTML='<div><input id="easycoder-run-button" type="button" value="Run" /><input id="easycoder-step-button" type="button" value="Step" /><div id="easycoder-tracer-content" style="border:1px solid black;padding:4px";width:100%></div>',
     82keyword:"json",lino:b,request:"getElement",target:f.name,element:c,source:d}),!0;a.error.expectedError("of",a.getToken())}if(a.isSymbol()&&(c=a.getSymbolRecord(),"variable"===c.keyword&&(a.next(),a.tokenIs("from"))))return a.next(),d=a.getValue(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"get",target:c.name,value:d}),!0;break;case "set":if(a.next(),a.isSymbol()){c=a.getSymbolRecord();if("select"===c.keyword&&(a.next(),a.tokenIs("from")&&(a.next(),a.isSymbol()&&(d=a.getSymbolRecord(),
     83"variable"===d.keyword))))return a.next(),f=null,a.tokenIs("as")&&(a.next(),f=a.getValue()),a.addCommand({domain:"json",keyword:"json",lino:b,request:"setList",target:c.name,source:d.name,display:f}),!0;break}case "shuffle":return a.next(),a.isSymbol()&&(c=a.getSymbolRecord(),"variable"===c.keyword)?(a.next(),a.addCommand({domain:"json",keyword:"json",lino:b,request:"shuffle",target:c.name}),!0):!1}a.addWarning("Unrecognised syntax in 'json'");return!1},run:function(a){var b=a[a.pc];switch(b.request){case "get":a.ajaxCommand=
     84b;var c=new XMLHttpRequest;c.onreadystatechange=function(){if(4===this.readyState&&200===this.status){var b=a.ajaxCommand,c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:this.responseText};a.run(a,b.pc+1)}};b=a.getValue(b.value);c.open("GET",b,!0);c.send();return 0;case "getItem":c=a.getSymbolRecord(b.source);var d=JSON.parse(c.value[c.index].content)[a.getValue(b.item)];c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:"object"===
     85typeof d?JSON.stringify(d):d};break;case "getElement":c=a.getSymbolRecord(b.source);d=JSON.parse(c.value[c.index].content)[a.getValue(b.element)];c=a.getSymbolRecord(b.target);c.value[c.index]={type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};break;case "setList":c=a.getSymbolRecord(b.source);c=a.getValue(c.value[c.index]);d=JSON.parse(c);c=a.getSymbolRecord(b.target);var f=document.getElementById(c.value[c.index].content);f.options.length=0;var e=a.getValue(b.display);
     86d.forEach(function(b){var c=e?a.decode(b[e]):null,d=document.createElement("option");d.innerHTML=c?c:b;b=c?JSON.stringify(b):b;d.value=b;f.appendChild(d)});f.selectedIndex=-1;break;case "shuffle":c=a.getSymbolRecord(b.target);d=JSON.parse(a.getValue(c.value[c.index]));for(var g=d.length-1;0<g;g--){var h=Math.floor(Math.random()*(g+1)),k=$jscomp.makeIterator([d[h],d[g]]);d[g]=k.next().value;d[h]=k.next().value}c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)}}return b.pc+1}},
     87getHandler:function(a){switch(a){case "json":return g.Json;default:return!1}},run:function(a){var b=a[a.pc],c=g.getHandler(b.keyword);c||a.error.runtimeError("Unknown keyword '"+b.keyword+"' in 'json' package");return c.run(a)},value:{compile:function(a){a.tokenIs("the")&&a.next();if(a.tokenIs("json")&&(a.next(),["size","count"].includes(a.getToken())&&(a.skip("of"),a.isSymbol()))){var b=a.getSymbolRecord();a.next();if(b.isValueHolder)return{domain:"json",type:"size",name:b.name}}return null},get:function(a,
     88b){switch(b.type){case "size":return b=a.getSymbolRecord(b.name),a=a.getValue(b.value[b.index]),{type:"constant",numeric:!0,content:JSON.parse(a).length}}}},condition:{compile:function(a){},test:function(a,b){}}};k.exports=g},{}],5:[function(e,k,h){var g={Attach:{compile:function(a){var b=a.getLino();a.getTokens();a.next();if(a.isSymbol()){var c=a.getProgram()[a.getSymbol().pc];switch(c.keyword){case "shape":case "svg":a.next();if(a.tokenIs("to")){a.next();var d=a.getValue();a.addCommand({domain:"svg",
     89keyword:"attach",lino:b,type:c.keyword,symbol:c.name,cssId:d});return!0}break;default:compile.error.InappropriateVariableTypeError(c.keyword)}}a.addWarning("Unrecognised syntax in 'attach'");return!1},run:function(a){var b=a[a.pc],c=a.value.evaluate(a,b.cssId).content;document.getElementById(c)||a.error.noSuchElementError(c);a=a.getSymbolRecord(b.symbol);a.value[a.index]={type:"constant",numeric:"false",content:c};return b.pc+1}},Circle:{compile:function(a){a.compileVariable("svg","circle",!1,"dom");
     90return!0},run:function(a){return a[a.pc].pc+1}},Create:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();a.next();switch(c.keyword){case "svg":if(a.tokenIs("in")&&(a.next(),a.isSymbol())){var d=a.getToken();a.next();for(var f=null,e=!0;e;){var g=a.getToken();a.next();switch(g){case "style":f=a.getValue();break;default:a.prev(),e=!1}}f||(f={type:"constant",numeric:!1,content:"width:100%;height:100%"});a.addCommand({domain:"svg",keyword:"create",lino:b,type:"svg",
     91name:c.name,style:f,parent:d});return!0}break;case "group":if(a.tokenIs("in")&&(a.next(),a.isSymbol()))return f=a.getSymbolRecord(),["svg","group"].includes(f.keyword)||a.error.inappropriateTypeError(f.keyword),a.next(),a.addCommand({domain:"svg",keyword:"create",lino:b,type:"group",name:c.name,parent:f.name}),!0;break;case "circle":case "ellipse":case "line":case "rect":case "text":if(a.tokenIs("in")&&(a.next(),a.isSymbol())){d=a.getSymbolRecord();["svg","group"].includes(d.keyword)||a.error.inappropriateTypeError(d.keyword);
     92a.next();for(e=!0;e;){var h=a.getToken();a.next();switch(h){case "style":f=a.getValue();break;case "text":g=a.getValue();break;default:a.prev(),e=!1}}a.addCommand({domain:"svg",keyword:"create",lino:b,type:c.keyword,name:c.name,style:f,text:g,parent:d.name});return!0}}}return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.parent),d=a.getSymbolRecord(b.name);if("group"===b.type)d.parent=b.parent,d.x=0,d.y=0;else{if("group"===c.keyword){var f=c;var e=f.value[f.index];e.content||(e.content=[]);
     93for(e.content.push({name:d.name,index:d.index});"group"===c.keyword;)c=a.getSymbolRecord(c.parent)}e=document.getElementById(c.value[c.index].content);c=document.createElementNS("http://www.w3.org/2000/svg",b.type);e.appendChild(c);e="ec-"+d.name+"-"+d.index;c.setAttribute("id",e);"text"===d.keyword&&(c.textContent=a.value.evaluate(a,b.text).content);d.value[d.index]={type:"constant",numeric:!1,content:e};if(b.style){b=a.value.evaluate(a,b.style).content;a.domain.browser.setStyles(e,b);b=d.value[d.index];
     94switch(d.keyword){case "circle":case "ellipse":b.x=c.getAttribute("cx");b.y=c.getAttribute("cy");break;case "line":b.x=c.getAttribute("x1");b.y=c.getAttribute("y1");b.x2=c.getAttribute("x2");b.y2=c.getAttribute("y2");break;case "rect":case "text":b.x=c.getAttribute("x"),b.y=c.getAttribute("y")}f&&(b.groupName=f.name,b.groupIndex=f.index)}}return a[a.pc].pc+1}},Ellipse:{compile:function(a){a.compileVariable("svg","ellipse",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Group:{compile:function(a){a.compileVariable("svg",
     95"group");return!0},run:function(a){return a[a.pc].pc+1}},Line:{compile:function(a){a.compileVariable("svg","line",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Move:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolRecord();a.next();if(a.tokenIs("to")){a.next();var d=a.getValue(),f=a.getValue();a.addCommand({domain:"svg",keyword:"move",lino:b,type:"moveTo",name:c.name,x:d,y:f});return!0}}return!1},run:function(a){var b=a[a.pc],c=a.value.evaluate(a,b.x).content,
     96d=a.value.evaluate(a,b.y).content;b=a.getSymbolRecord(b.name);switch(b.keyword){case "group":for(var f=$jscomp.makeIterator(b.value[b.index].content),e=f.next();!e.done;e=f.next()){var g=e.value;e=a.getSymbolRecord(g.name);g=e.value[g.index];var h=document.getElementById(g.content),k=parseInt(g.x)+c,n=parseInt(g.y)+d;switch(e.keyword){case "circle":case "ellipse":h.setAttribute("cx",k);h.setAttribute("cy",n);break;case "line":h.setAttribute("x1",k);h.setAttribute("y1",n);h.setAttribute("x2",parseInt(g.x2)+
     97c);h.setAttribute("y2",parseInt(g.y2)+d);break;case "rect":case "text":h.setAttribute("x",k),h.setAttribute("y",n)}}b.x=c;b.y=d;break;case "circle":case "ellipse":case "line":case "rect":case "text":e=f=0;g=b.value[b.index];g.groupName&&(e=a.getSymbolRecord(g.groupName),f=e.x,e=e.y);g=b.value[b.index];h=document.getElementById(b.value[b.index].content);switch(b.keyword){case "circle":case "ellipse":h.setAttribute("cx",f+c);h.setAttribute("cy",e+d);break;case "line":h.setAttribute("x1",f+c);h.setAttribute("y1",
     98e+d);b=parseInt(g.x2)-parseInt(g.x1);k=parseInt(g.y2)-parseInt(g.y1);h.setAttribute("x2",f+b+c);h.setAttribute("y2",e+k+d);break;case "rect":case "text":h.setAttribute("x",f+c),h.setAttribute("y",e+d)}g.x=c;g.y=d}return a[a.pc].pc+1}},On:{compile:function(a){var b=a.getLino();a.next();var c=a.getToken();switch(c){case "click":if(a.next(),a.isSymbol()){var d=a.getSymbolRecord();a.next();if("group"!==d.keyword)return!1;a.addCommand({domain:"svg",keyword:"on",lino:b,action:c,symbol:d.name});b=a.getPc();
     99a.addCommand({domain:"basic",keyword:"goto",goto:0});a.compileOne();a.getCommandAt(b).goto=a.getPc();return!0}}a.addWarning("Unrecognised syntax in 'on'");return!1},run:function(a){var b=a[a.pc],c=a.getSymbolRecord(b.symbol);switch(b.action){case "click":if("group"===c.keyword)for(var d=$jscomp.makeIterator(c.value),f=d.next();!f.done;f=d.next())if(f=f.value,f.content){f=$jscomp.makeIterator(f.content);for(var e=f.next();!e.done;e=f.next()){e=e.value;var g=a.getSymbolRecord(e.name),h=g.value[e.index];
     100h.content&&(h=document.getElementById(h.content),h.targetPc=b.pc+2,h.contentItem=g,h.contentIndex=e.index,h.onclick=function(b){b.target.blur();var d=b.target.contentItem;d.index=b.target.contentIndex;d=d.value[d.index];if(d.groupName){c.index=d.groupIndex;d=$jscomp.makeIterator(c.value[c.index].content);for(var e=d.next();!e.done;e=d.next())e=e.value,a.getSymbolRecord(e.name).index=e.index}try{a.run(a,b.target.targetPc)}catch(u){a.reportError(a.source,u)}return!1})}}}return b.pc+1}},Rect:{compile:function(a){a.compileVariable("svg",
     101"rect",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},Set:{compile:function(a){var b=a.getLino();a.next();var c=a.getToken();"the"===c&&(a.next(),c=a.getToken());if("text"===c&&(a.next(),a.tokenIs("of")&&(a.next(),a.isSymbol())))switch(c=a.getSymbolRecord(),c.keyword){case "text":if(a.next(),a.tokenIs("to")){a.next();var d=a.getValue();a.addCommand({domain:"svg",keyword:"set",lino:b,type:"setText",symbolName:c.name,value:d});return!0}}return!1},run:function(a){var b=a[a.pc];switch(b.type){case "setText":var c=
     102a.getSymbolRecord(b.symbolName);var d=document.getElementById(c.value[c.index].content);a=a.value.evaluate(a,b.value).content;switch(c.keyword){case "text":d.innerHTML=a}}return b.pc+1}},SVG:{compile:function(a){a.compileVariable("svg","svg");return!0},run:function(a){return a[a.pc].pc+1}},Text:{compile:function(a){a.compileVariable("svg","text",!1,"dom");return!0},run:function(a){return a[a.pc].pc+1}},getHandler:function(a){switch(a){case "attach":return g.Attach;case "circle":return g.Circle;case "create":return g.Create;
     103case "ellipse":return g.Ellipse;case "group":return g.Group;case "line":return g.Line;case "move":return g.Move;case "on":return g.On;case "rect":return g.Rect;case "set":return g.Set;case "svg":return g.SVG;case "text":return g.Text;default:return!1}},run:function(a){var b=a[a.pc],c=g.getHandler(b.keyword);c||a.error.runtimeError("Unknown keyword '"+b.keyword+"' in 'svg' package");return c.run(a)},value:{compile:function(a){a.tokenIs("the")&&a.next();if(a.tokenIs("text")&&(a.next(),a.tokenIs("of")&&
     104(a.next(),a.isSymbol()))){var b=a.getSymbolRecord();a.next();if("text"===b.keyword)return{domain:"svg",type:"text",name:b.name}}return null},get:function(a,b){switch(b.type){case "text":return a=a.getSymbolRecord(b.name),{type:"constant",numeric:!1,content:document.getElementById(a.value[a.index].content).innerHTML}}}},condition:{compile:function(a){},test:function(a,b){}}};k.exports=g},{}],6:[function(e,k,h){k.exports=function(e,a,b){a=e.value.evaluate(e,a);b=e.value.evaluate(e,b);a.numeric!==b.numeric&&
     105e.error.dataTypeMismatchError();e=a.content;b=b.content;return e>b?1:e<b?-1:0}},{}],7:[function(e,k,h){var g=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],e;for(e in c)Object.prototype.hasOwnProperty.call(c,e)&&(a[e]=c[e])}return a},a=this,b={getTokens:function(){return a.tokens},addWarning:function(b){a.warnings.push(b)},warning:function(a){b.addWarning(a);throw Error();},unrecognisedSymbol:function(a){b.addWarning("Unrecognised symbol '"+a+"'")},getWarnings:function(){return a.warnings},
     106getIndex:function(){return a.index},next:function(b){a.index+=void 0===b?1:b},peek:function(){return a.tokens[a.index+1].token},getToken:function(){return a.index>=a.tokens.length?null:a.tokens[a.index]?a.tokens[a.index].token:null},nextToken:function(){b.next();return b.getToken()},skip:function(c){if(a.index>=a.tokens.length)return null;b.next();b.tokenIs(c)&&b.next()},prev:function(){a.index--},getLino:function(){return a.index>=a.tokens.length?0:a.tokens[a.index].lino},tokenIs:function(b){return a.index>=
     107a.tokens.length?!1:b===a.tokens[a.index].token},getTarget:function(b){b=void 0===b?a.index:b;return a.tokens[b].token},getTargetPc:function(c){c=void 0===c?a.index:c;return a.symbols[b.getTarget(c)].pc},getCommandAt:function(b){return a.program[b]},isSymbol:function(){return b.getTarget()in a.symbols},getSymbol:function(){return a.symbols[b.getToken()]},getSymbolPc:function(){return b.getSymbol().pc},getSymbolRecord:function(){return a.program[b.getSymbolPc()]},getSymbols:function(){return a.symbols},
     108getProgram:function(){return a.program},getPc:function(){return a.program.length},getValue:function(){return b.value.compile(b)},getCondition:function(){return b.condition.compile(b)},constant:function(a){return b.value.constant(a)},addCommand:function(b){a.program.push(g({pc:a.program.length},b))},addSymbol:function(b,d){a.symbols[b]={pc:d}},mark:function(){a.savedMark=a.index},rewind:function(){a.index=a.savedMark},compileVariable:function(c,d,e,g){e=void 0===e?!1:e;g=void 0===g?null:g;b.next();
     109var f=b.getLino(),h=b.getTokens()[b.getIndex()];a.symbols[h.token]&&b.error.duplicateSymbolError(h.token);var k=b.getPc();b.next();b.addSymbol(h.token,k);b.addCommand({domain:c,keyword:d,lino:f,isSymbol:!0,isValueHolder:e,name:h.token,elements:1,index:0,value:[{}],extra:g})},compileToken:function(){var a=b.getToken();if(a){var d=b.getIndex();b.mark();for(var e=$jscomp.makeIterator(Object.keys(b.domain)),g=e.next();!g.done;g=e.next()){if((g=b.domain[g.value])&&(g=g.getHandler(a))&&g.compile(b))return;
     110b.rewind()}console.log("No handler found");b.error.dontUnderstandError(a,d)}},compileOne:function(){var c=b.getToken();if(c){a.warnings=[];var d=a.program.length;c.endsWith(":")?(a.symbols[c.substring(0,c.length-1)]={pc:d},a.index++):b.compileToken()}},compileFromHere:function(c){for(;a.index<a.tokens.length;){var d=a.tokens[a.index].token;if("else"===d)return a.program;b.compileOne();if(-1<c.indexOf(d))break}},compile:function(c){a.tokens=c;a.index=0;a.program=[];a.symbols={};a.warnings=[];b.compileFromHere([]);
     111b.addCommand({domain:"basic",keyword:"stop",lino:b.getLino(),next:0});return a.program}};k.exports=b},{}],8:[function(e,k,h){var g=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],d;for(d in c)Object.prototype.hasOwnProperty.call(c,d)&&(a[d]=c[d])}return a};k.exports={compile:function(a){a.mark();for(var b=$jscomp.makeIterator(Object.keys(a.domain)),c=b.next();!c.done;c=b.next()){if(c=a.domain[c.value].condition.compile(a))return g({domain:name},c);a.rewind()}},test:function(a,
     112b){return a.domain[b.domain].condition.test(a,b)}}},{}],9:[function(e,k,h){var g=this,a=e("./Tokenise"),b=e("./Compile"),c=e("./Run"),d=e("./Value"),f=e("./Condition"),l=e("./Compare");h=e("../domain/Basic");var t=e("../domain/Browser"),p=e("../domain/Json");e=e("../domain/Svg");var m={domain:{basic:h,browser:t,json:p,svg:e},compileError:{dontUnderstandError:function(a){throw Error("I don't understand '"+a+"'");},duplicateSymbolError:function(a){throw Error("Symbol '"+a+"' is a duplicate");},inappropriateTypeError:function(a){throw Error("Inappropriate type '"+
     113a+"'");},inappropriateVariableTypeError:function(a){throw Error("Inappropriate variable type '"+a+"'");},missingInputTypeError:function(){throw Error("Missing input type");},noSuchVariableError:function(a){throw Error("No such variable: "+a);},notAnIntegerError:function(a){throw Error("Value is not an integer: "+a);},undefinedValueError:function(a){throw Error("Undefined value: "+a);},unknownTypeError:function(a){throw Error("Unknown type: "+a);},unknownVariableError:function(a){throw Error("Unknown variable: "+
     114a);},unrecognisedValueError:function(a){throw Error("I don't understand this value: "+a);},variableDoesNotHoldAValueError:function(a){throw Error("Variable '"+a+"' does not hold a value");},expectedError:function(a,b){throw Error("Expected '"+a+"' but saw '"+b+"'");}},runtimeError:{arrayIndexOutOfRangeError:function(a){throw Error("Array index out of range for "+a);},cantDecodeValueError:function(){throw Error("Can't decode value");},dataTypeMismatchError:function(){throw Error("Data type mismatch");
     115},nonNumericValueError:function(){throw Error("Non-numeric value");},noSuchElementError:function(a){throw Error("No such element: "+a);},runtimeError:function(a){throw Error(a);},undefinedValueError:function(a,b){g.errorPc=b;throw Error("Undefined value: "+a);},variableDoesNotHoldAValueError:function(a){throw Error("Variable '"+a+"' does not hold a value");}},setupTracer:function(){var a=document.getElementById("easycoder-tracer");a&&(a.innerHTML='<div><input id="easycoder-run-button" type="button" value="Run" /><input id="easycoder-step-button" type="button" value="Step" /><div id="easycoder-tracer-content" style="border:1px solid black;padding:4px";width:100%></div>',
    116116a.style.display="none")},reportError:function(a,c){var d=b.getProgram(),e=a.tokens;a=a.scriptLines;e=g.compiling?e[b.getIndex()].lino:d.pc.lino;d="";var f=e-5;for(f=0>f?0:f;f<e;f++){for(var h=""+f;4>h.length;)h=" "+h;d+=h+" "+a[f].line+"\n"}d+=c.message+"\n";c=b.getWarnings();if(c.length)for(d+="Warnings:\n",c=$jscomp.makeIterator(c),a=c.next();!a.done;a=c.next())d+=a.value+"\n";console.log(d);alert(d)},getSymbolRecord:function(a){a=g.program[g.program.symbols[a].pc];return a.alias?g.program[g.program.symbols[a.alias].pc]:
    117 a},evaluate:function(a){return d.evaluate(g.program,a)},encode:function(a){return d.encode(a,g.program.encoding)},decode:function(a){return d.decode(a,g.program.encoding)},getValue:function(a){return d.getValue(g.program,a)},compileScript:function(a,e){m.domain.ext=e;e=a.tokens;try{g.compiling=!0;var h=Date.now();b.value=d;b.condition=f;b.domain=m.domain;b.error=m.compileError;var k=b.compile(e);g.program=k;var v=Date.now();console.log("Compiled "+e.length+" tokens in "+(v-h)+"ms");g.compiling=!1;
     117a},evaluate:function(a){return d.evaluate(g.program,a)},encode:function(a){return d.encode(a,g.program.encoding)},decode:function(a){return d.decode(a,g.program.encoding)},getValue:function(a){return d.getValue(g.program,a)},compileScript:function(a,e){m.domain.ext=e;e=a.tokens;try{g.compiling=!0;var h=Date.now();b.value=d;b.condition=f;b.domain=m.domain;b.error=m.compileError;var k=b.compile(e);g.program=k;var n=Date.now();console.log("Compiled "+e.length+" tokens in "+(n-h)+"ms");g.compiling=!1;
    118118k.source=a;k.run=c;k.value=d;k.evaluate=m.evaluate;k.getValue=m.getValue;k.encode=m.encode;k.decode=m.decode;k.condition=f;k.compare=l;k.domain=m.domain;k.getSymbolRecord=m.getSymbolRecord;k.error=m.runtimeError;k.reportError=m.reportError;k.symbols=b.getSymbols();k.encoding="none";k.popups=[];k.stack=[];k.queue=[0];m.setupTracer();console.log("Run the script");k.run(k,0)}catch(r){m.reportError(a,r)}},start:function(b,c){c=void 0===c?null:c;try{var d=Date.now(),e=a.tokenise(b),f=Date.now();console.log("Tokenised "+
    119119e.scriptLines.length+" lines in "+(f-d)+"ms");m.compileScript(e,c)}catch(r){console.log(r)}}};k.exports=m},{"../domain/Basic":2,"../domain/Browser":3,"../domain/Json":4,"../domain/Svg":5,"./Compare":6,"./Compile":7,"./Condition":8,"./Run":10,"./Tokenise":11,"./Value":12}],10:[function(e,k,h){var g=function(a,b){var c=function(a){var b=9999;a.forEach(function(a){a=a.line;for(var c=0;c<a.length&&" "===a[c];)c++;0<c&&c<b&&(b=c)});return b},d=[];if(d.length)d.push(b);else for(d.push(b);0<d.length;)for(a.pc=
    120 d.shift(),b={};;){a.pc=a.domain[a[a.pc].domain].run(a);if(!a.pc)break;if(a.stop){a.tracing=!1;return}if(a.tracing){var e=a[a.pc],h=a.source.scriptLines,k=c(h),n=document.getElementById("easycoder-tracer");if(n){n.style.display="block";n.style.visibility="visible";var m="";if(a.tracer){a.tracer.variables.forEach(function(b,c,d){var e=a.getSymbolRecord(b);m=(e=e.value[e.index])?m+(b+": "+e.content):m+(b+": undefined");switch(a.tracer.alignment){case "horizontal":c<d.length-1&&(m+=", ");break;case "vertical":m+=
    121 "<br>"}});m+="<hr>";n="";for(var p=5;0<p;p--)e.lino&&(n+='<input type="text" name="'+p+'" value="'+h[e.lino-p].line.substr(k)+'"style=width:100%;border:none;enabled="false">'),n+="<br>";e=document.getElementById("easycoder-tracer-content");e.innerHTML=m+n;e.style.display="block";b.run=document.getElementById("easycoder-run-button");b.step=document.getElementById("easycoder-step-button");b.run.onclick=function(b){return function(c){b.run.blur();a.tracing=!1;document.getElementById("easycoder-tracer-content").style.display=
     120d.shift(),b={};;){a.pc=a.domain[a[a.pc].domain].run(a);if(!a.pc)break;if(a.stop){a.tracing=!1;return}if(a.tracing){var e=a[a.pc],h=a.source.scriptLines,k=c(h),p=document.getElementById("easycoder-tracer");if(p){p.style.display="block";p.style.visibility="visible";var m="";if(a.tracer){a.tracer.variables.forEach(function(b,c,d){var e=a.getSymbolRecord(b);m=(e=e.value[e.index])?m+(b+": "+e.content):m+(b+": undefined");switch(a.tracer.alignment){case "horizontal":c<d.length-1&&(m+=", ");break;case "vertical":m+=
     121"<br>"}});m+="<hr>";p="";for(var n=5;0<n;n--)e.lino&&(p+='<input type="text" name="'+n+'" value="'+h[e.lino-n].line.substr(k)+'"style=width:100%;border:none;enabled="false">'),p+="<br>";e=document.getElementById("easycoder-tracer-content");e.innerHTML=m+p;e.style.display="block";b.run=document.getElementById("easycoder-run-button");b.step=document.getElementById("easycoder-step-button");b.run.onclick=function(b){return function(c){b.run.blur();a.tracing=!1;document.getElementById("easycoder-tracer-content").style.display=
    122122"none";try{g(a,a.resume)}catch(q){c="Error in run handler: "+q.message,console.log(c),alert(c)}}}(b);b.step.onclick=function(b){return function(c){console.log("step");b.step.blur();a.tracing=!0;document.getElementById("easycoder-tracer-content").style.display="block";try{g(a,a.resume)}catch(q){c="Error in step handler: "+q.message,console.log(c),alert(c)}}}(b);a.resume=a.pc;a.pc=0}}break}b={run:b.run,step:b.step}}};k.exports=g},{}],11:[function(e,k,h){var g={markComments:function(a){var b=a.list,
    123123c=void 0===a.index?0:a.index,d=void 0===a.inComment?!1:a.inComment,e=void 0===a.newList?[]:a.newList;if(c>=b.length)return e;var h=b[c];a=h.lino;h=h.token;var k={list:b,index:c+1,inComment:!1,newList:e.concat({lino:a,index:c,token:h})};e={list:b,index:c+1,inComment:!0,newList:e.concat({lino:a,index:c,comment:!0,token:h})};return d&&0<c&&a===b[c-1].lino?g.markComments(e):"!"===h.charAt(0)?g.markComments(e):g.markComments(k)},markSpacesInStrings:function(a){var b=a.line,c=void 0===a.inComment?!1:a.inComment;
  • easycoder/trunk/easycoder.js

    r1949336 r1952358  
    16491649            type: 'constant',
    16501650            numeric: true,
    1651             content: program.getValue(value.value)
     1651            content: parseInt(program.getValue(value.value))
    16521652          };
    16531653        case 'lengthOf':
     
    22772277              target.targetIndex = index;
    22782278              target.onclick = function (event) {
    2279                 event.target.blur();
    2280                 targetItem.index = event.target.targetIndex;
     2279                const eventTarget = event.target;
     2280                eventTarget.blur();
     2281                targetItem.index = eventTarget.targetIndex;
    22812282                try {
    2282                   program.run(program, event.target.targetPc);
     2283                  setTimeout(function () {
     2284                    program.run(program, eventTarget.targetPc);
     2285                  }, 1);
    22832286                } catch (err) {
    22842287                  console.log(err.message);
     
    30903093        case 'set':
    30913094          compiler.next();
    3092           if (compiler.tokenIs('encoding')) {
    3093             compiler.next();
    3094             if (compiler.tokenIs('to')) {
    3095               compiler.next();
    3096               const encoding = compiler.getValue();
    3097               compiler.addCommand({
    3098                 domain: 'json',
    3099                 keyword: 'json',
    3100                 lino,
    3101                 request: 'encoding',
    3102                 encoding
    3103               });
    3104               return true;
    3105             }
    3106             compiler.addWarning('Unknown encoding option');
    3107             return false;
    3108           }
    31093095          if (compiler.isSymbol()) {
    31103096            const targetRecord = compiler.getSymbolRecord();
     
    32293215          target.selectedIndex = -1;
    32303216          break;
    3231         case 'encoding':
    3232           program.encoding = program.getValue(command.encoding);
    3233           break;
    32343217        case 'shuffle':
    32353218          targetRecord = program.getSymbolRecord(command.target);
     
    32693252  value: {
    32703253
    3271     compile: compiler => {},
    3272 
    3273     get: (program, value) => {}
     3254    compile: compiler => {
     3255      if (compiler.tokenIs('the')) {
     3256        compiler.next();
     3257      }
     3258      if (compiler.tokenIs('json')) {
     3259        compiler.next();
     3260        if (['size', 'count'].includes(compiler.getToken())) {
     3261          compiler.skip('of');
     3262          if (compiler.isSymbol()) {
     3263            const target = compiler.getSymbolRecord();
     3264            compiler.next();
     3265            if (target.isValueHolder) {
     3266              return {
     3267                domain: 'json',
     3268                type: 'size',
     3269                name: target.name
     3270              };
     3271            }
     3272          }
     3273        }
     3274      }
     3275      return null;
     3276    },
     3277
     3278    get: (program, value) => {
     3279      switch (value.type) {
     3280        case 'size':
     3281          const symbolRecord = program.getSymbolRecord(value.name);
     3282          const data = program.getValue(symbolRecord.value[symbolRecord.index]);
     3283          const array = JSON.parse(data);
     3284          return {
     3285            type: 'constant',
     3286            numeric: true,
     3287            content: array.length
     3288          };
     3289      }
     3290    }
    32743291  },
    32753292
  • easycoder/trunk/easycoder.php

    r1949336 r1952358  
    44   * Plugin URI: https://easycoder.software
    55   * 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: 1.5.1
     6   * Version: 1.5.2
    77   * Author: EasyCoder Software
    88   */
     
    1010   // The EasyCoder library
    1111   function easycoder_enqueue_script() {   
    12       wp_enqueue_script('easycoder_script', plugin_dir_url( __FILE__ ) . 'easycoder-min.js', array(), '1.5.1');
     12      wp_enqueue_script('easycoder_script', plugin_dir_url( __FILE__ ) . 'easycoder-min.js', array(), '1.5.2');
    1313   }
    1414
  • easycoder/trunk/readme.txt

    r1949336 r1952358  
    4545== Changelog ==
    4646
     47= 1.5.2 =
     48* Added some minor features, fixed bugs.
     49
    4750= 1.5.1 =
    4851* Fix some REST bugs.
Note: See TracChangeset for help on using the changeset viewer.