Changeset 2148361
- Timestamp:
- 08/30/2019 10:44:43 AM (7 years ago)
- Location:
- easycoder/trunk
- Files:
-
- 6 edited
-
easycoder-min.js (modified) (4 diffs)
-
easycoder.js (modified) (5 diffs)
-
easycoder.php (modified) (2 diffs)
-
plugins/browser.js (modified) (2 diffs)
-
plugins/rest.js (modified) (2 diffs)
-
readme.txt (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
easycoder/trunk/easycoder-min.js
r2145506 r2148361 3 3 $jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var d=$jscomp.global.Symbol.iterator;d||(d=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[d]&&$jscomp.defineProperty(Array.prototype,d,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(d){var k=0;return $jscomp.iteratorPrototype(function(){return k<d.length?{done:!1,value:d[k++]}:{done:!0}})}; 4 4 $jscomp.iteratorPrototype=function(d){$jscomp.initSymbolIterator();d={next:d};d[$jscomp.global.Symbol.iterator]=function(){return this};return d};$jscomp.makeIterator=function(d){$jscomp.initSymbolIterator();var k=d[Symbol.iterator];return k?k.call(d):$jscomp.arrayIterator(d)};$jscomp.owns=function(d,k){return Object.prototype.hasOwnProperty.call(d,k)}; 5 $jscomp.assign="function"==typeof Object.assign?Object.assign:function(d,k){for(var h=1;h<arguments.length;h++){var f=arguments[h];if(f)for(var c in f)$jscomp.owns(f,c)&&(d[c]=f[c])}return d};$jscomp.polyfill=function(d,k,h,f){if(k){h=$jscomp.global;d=d.split(".");for(f=0;f<d.length-1;f++){var c=d[f];c in h||(h[c]={});h=h[c]}d=d[d.length-1];f=h[d];k=k(f);k!=f&&null!=k&&$jscomp.defineProperty(h,d,{configurable:!0,writable:!0,value:k})}};6 $jscomp.polyfill("Object.assign",function(d){return d||$jscomp.assign},"es6","es3");$jscomp.iteratorFromArray=function(d,k){$jscomp.initSymbolIterator();d instanceof String&&(d+="");var h=0, f={next:function(){if(h<d.length){var c=h++;return{value:k(c,d[c]),done:!1}}f.next=function(){return{done:!0,value:void 0}};return f.next()}};f[Symbol.iterator]=function(){return f};return f};5 $jscomp.assign="function"==typeof Object.assign?Object.assign:function(d,k){for(var h=1;h<arguments.length;h++){var g=arguments[h];if(g)for(var c in g)$jscomp.owns(g,c)&&(d[c]=g[c])}return d};$jscomp.polyfill=function(d,k,h,g){if(k){h=$jscomp.global;d=d.split(".");for(g=0;g<d.length-1;g++){var c=d[g];c in h||(h[c]={});h=h[c]}d=d[d.length-1];g=h[d];k=k(g);k!=g&&null!=k&&$jscomp.defineProperty(h,d,{configurable:!0,writable:!0,value:k})}}; 6 $jscomp.polyfill("Object.assign",function(d){return d||$jscomp.assign},"es6","es3");$jscomp.iteratorFromArray=function(d,k){$jscomp.initSymbolIterator();d instanceof String&&(d+="");var h=0,g={next:function(){if(h<d.length){var c=h++;return{value:k(c,d[c]),done:!1}}g.next=function(){return{done:!0,value:void 0}};return g.next()}};g[Symbol.iterator]=function(){return g};return g}; 7 7 $jscomp.polyfill("Array.prototype.keys",function(d){return d?d:function(){return $jscomp.iteratorFromArray(this,function(d){return d})}},"es6","es3");$jscomp.checkStringArgs=function(d,k,h){if(null==d)throw new TypeError("The 'this' value for String.prototype."+h+" must not be null or undefined");if(k instanceof RegExp)throw new TypeError("First argument to String.prototype."+h+" must not be a regular expression");return d+""}; 8 $jscomp.polyfill("String.prototype.endsWith",function(d){return d?d:function(d,h){var f=$jscomp.checkStringArgs(this,d,"endsWith");d+="";void 0===h&&(h=f.length);h=Math.max(0,Math.min(h|0,f.length));for(var c=d.length;0<c&&0<h;)if(f[--h]!=d[--c])return!1;return 0>=c}},"es6","es3");$jscomp.polyfill("Object.is",function(d){return d?d:function(d,h){return d===h?0!==d||1/d===1/h:d!==d&&h!==h}},"es6","es3");9 $jscomp.polyfill("Array.prototype.includes",function(d){return d?d:function(d,h){var f=this;f instanceof String&&(f=String(f));var c=f.length;h=h||0;for(0>h&&(h=Math.max(h+c,0));h<c;h++){var a=f[h];if(a===d||Object.is(a,d))return!0}return!1}},"es7","es3");$jscomp.polyfill("String.prototype.includes",function(d){return d?d:function(d,h){return-1!==$jscomp.checkStringArgs(this,d,"includes").indexOf(d,h||0)}},"es6","es3");10 $jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var k=Math.floor(Math.abs(d));return 0>d?-k:k}},"es6","es3");$jscomp.polyfill("String.prototype.repeat",function(d){return d?d:function(d){var k=$jscomp.checkStringArgs(this,null,"repeat");if(0>d||1342177279<d)throw new RangeError("Invalid count value");d|=0;for(var f="";d;)if(d&1&&(f+=k),d>>>=1)k+=k;return f}},"es6","es3");11 $jscomp.stringPadding=function(d,k){d=void 0!==d?String(d):" ";return 0<k&&d?d.repeat(Math.ceil(k/d.length)).substring(0,k):""};$jscomp.polyfill("String.prototype.padStart",function(d){return d?d:function(d,h){var f=$jscomp.checkStringArgs(this,null,"padStart");return $jscomp.stringPadding(h,d-f.length)+f}},"es8","es3");$jscomp.polyfill("Number.isFinite",function(d){return d?d:function(d){return"number"!==typeof d?!1:!isNaN(d)&&Infinity!==d&&-Infinity!==d}},"es6","es3");8 $jscomp.polyfill("String.prototype.endsWith",function(d){return d?d:function(d,h){var g=$jscomp.checkStringArgs(this,d,"endsWith");d+="";void 0===h&&(h=g.length);h=Math.max(0,Math.min(h|0,g.length));for(var c=d.length;0<c&&0<h;)if(g[--h]!=d[--c])return!1;return 0>=c}},"es6","es3");$jscomp.polyfill("Object.is",function(d){return d?d:function(d,h){return d===h?0!==d||1/d===1/h:d!==d&&h!==h}},"es6","es3"); 9 $jscomp.polyfill("Array.prototype.includes",function(d){return d?d:function(d,h){var g=this;g instanceof String&&(g=String(g));var c=g.length;h=h||0;for(0>h&&(h=Math.max(h+c,0));h<c;h++){var a=g[h];if(a===d||Object.is(a,d))return!0}return!1}},"es7","es3");$jscomp.polyfill("String.prototype.includes",function(d){return d?d:function(d,h){return-1!==$jscomp.checkStringArgs(this,d,"includes").indexOf(d,h||0)}},"es6","es3"); 10 $jscomp.polyfill("Math.trunc",function(d){return d?d:function(d){d=Number(d);if(isNaN(d)||Infinity===d||-Infinity===d||0===d)return d;var k=Math.floor(Math.abs(d));return 0>d?-k:k}},"es6","es3");$jscomp.polyfill("String.prototype.repeat",function(d){return d?d:function(d){var k=$jscomp.checkStringArgs(this,null,"repeat");if(0>d||1342177279<d)throw new RangeError("Invalid count value");d|=0;for(var g="";d;)if(d&1&&(g+=k),d>>>=1)k+=k;return g}},"es6","es3"); 11 $jscomp.stringPadding=function(d,k){d=void 0!==d?String(d):" ";return 0<k&&d?d.repeat(Math.ceil(k/d.length)).substring(0,k):""};$jscomp.polyfill("String.prototype.padStart",function(d){return d?d:function(d,h){var g=$jscomp.checkStringArgs(this,null,"padStart");return $jscomp.stringPadding(h,d-g.length)+g}},"es8","es3");$jscomp.polyfill("Number.isFinite",function(d){return d?d:function(d){return"number"!==typeof d?!1:!isNaN(d)&&Infinity!==d&&-Infinity!==d}},"es6","es3"); 12 12 $jscomp.polyfill("Number.isInteger",function(d){return d?d:function(d){return Number.isFinite(d)?d===Math.floor(d):!1}},"es6","es3"); 13 (function(){function d(k,h, f){function c(b,q){if(!h[b]){if(!k[b]){var e="function"==typeof require&&require;if(!q&&e)return e(b,!0);if(a)return a(b,!0);q=Error("Cannot find module '"+b+"'");throw q.code="MODULE_NOT_FOUND",q;}q=h[b]={exports:{}};k[b][0].call(q.exports,function(a){return c(k[b][1][a]||a)},q,q.exports,d,k,h,f)}return h[b].exports}for(var a="function"==typeof require&&require,b=0;b<f.length;b++)c(f[b]);return c}return d})()({1:[function(d,k,h){var f=d("./easycoder/Main");f.version="2.5.0";14 f.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page");window.onload=function(){console.log(Date.now()-f.timestamp+" ms: Page loaded; reset timer & start EasyCoder");f.timestamp=Date.now();f.scripts={};window.EasyCoder=f;var c=document.getElementById("easycoder-script");if(c){c.style.display="none";try{f.start(c.innerText)}catch(a){f.reportError(a)}}}},{"./easycoder/Main":6}],2:[function(d,k,h){k.exports=function(d,c,a){c=d.value.evaluate(d,c);d=d.value.evaluate(d,a);a=c.content;15 var b=d.content;a&&c.numeric?d.numeric||(b="undefined"===typeof b?0:parseInt(b)):(b&&d.numeric&&(b=b.toString()),"undefined"===typeof a&&(a=""),"undefined"===typeof b&&(b=""));return a>b?1:a<b?-1:0}},{}],3:[function(d,k,h){var f=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},c=this,a={getTokens:function(){return c.tokens},addWarning:function(a){c.warnings.push(a)},warning:function(b){a.addWarning(b)},13 (function(){function d(k,h,g){function c(b,p){if(!h[b]){if(!k[b]){var e="function"==typeof require&&require;if(!p&&e)return e(b,!0);if(a)return a(b,!0);p=Error("Cannot find module '"+b+"'");throw p.code="MODULE_NOT_FOUND",p;}p=h[b]={exports:{}};k[b][0].call(p.exports,function(a){return c(k[b][1][a]||a)},p,p.exports,d,k,h,g)}return h[b].exports}for(var a="function"==typeof require&&require,b=0;b<g.length;b++)c(g[b]);return c}return d})()({1:[function(d,k,h){var g=d("./easycoder/Main");g.version="2.5.1"; 14 g.timestamp=Date.now();console.log("EasyCoder loaded; waiting for page");window.onload=function(){console.log(Date.now()-g.timestamp+" ms: Page loaded; reset timer & start EasyCoder");g.timestamp=Date.now();g.scripts={};window.EasyCoder=g;var c=document.getElementById("easycoder-script");if(c){c.style.display="none";try{g.start(c.innerText)}catch(a){g.reportError(a)}}}},{"./easycoder/Main":6}],2:[function(d,k,h){k.exports=function(d,c,a){c=d.value.evaluate(d,c);d=d.value.evaluate(d,a);a=c.content; 15 var b=d.content;a&&c.numeric?d.numeric||(b="undefined"===typeof b?0:parseInt(b)):(b&&d.numeric&&(b=b.toString()),"undefined"===typeof a&&(a=""),"undefined"===typeof b&&(b=""));return a>b?1:a<b?-1:0}},{}],3:[function(d,k,h){var g=Object.assign||function(a){for(var b=1;b<arguments.length;b++){var c=arguments[b],f;for(f in c)Object.prototype.hasOwnProperty.call(c,f)&&(a[f]=c[f])}return a},c=this,a={getTokens:function(){return c.tokens},addWarning:function(a){c.warnings.push(a)},warning:function(b){a.addWarning(b)}, 16 16 unrecognisedSymbol:function(b){a.addWarning("Unrecognised symbol '"+b+"'")},getWarnings:function(){return c.warnings},getIndex:function(){return c.index},next:function(a){c.index+=void 0===a?1:a},peek:function(){return c.tokens[c.index+1].token},more:function(){return c.index<c.tokens.length},getToken:function(){return c.index>=c.tokens.length?null:c.tokens[c.index]?c.tokens[c.index].token:null},nextToken:function(){a.next();return a.getToken()},tokenIs:function(a){return c.index>=c.tokens.length? 17 17 !1:a===c.tokens[c.index].token},nextTokenIs:function(b){a.next();return a.tokenIs(b)},skip:function(b){if(c.index>=c.tokens.length)return null;a.next();a.tokenIs(b)&&a.next()},prev:function(){c.index--},getLino:function(){return c.index>=c.tokens.length?0:c.tokens[c.index].lino},getTarget:function(a){a=void 0===a?c.index:a;return c.tokens[a].token},getTargetPc:function(b){b=void 0===b?c.index:b;return c.symbols[a.getTarget(b)].pc},getCommandAt:function(a){return c.program[a]},isSymbol:function(b){b= 18 18 void 0===b?!1:b;if(a.getTarget()in c.symbols)return!0;if(b)throw Error("Unknown symbol: '"+a.getTarget()+"'");return!1},nextIsSymbol:function(b){b=void 0===b?!1:b;a.next();return a.isSymbol(b)},getSymbol:function(){return c.symbols[a.getToken()]},getSymbolPc:function(){return a.getSymbol().pc},getSymbolRecord:function(){var b=c.program[a.getSymbolPc()];b.used=!0;return b},getSymbols:function(){return c.symbols},getProgram:function(){return c.program},getPc:function(){return c.program.length},getValue:function(){return a.value.compile(a)}, 19 getNextValue:function(){a.next();return a.getValue()},getCondition:function(){return a.condition.compile(a)},constant:function(b,e){return a.value.constant(b,void 0===e?!1:e)},addCommand:function(a){c.program.push( f({pc:c.program.length},a))},addSymbol:function(a,e){c.symbols[a]={pc:e}},mark:function(){c.savedMark=c.index},rewind:function(){c.index=c.savedMark},rewindTo:function(a){c.index=a},completeHandler:function(){var b=a.getLino(),e=a.getPc();a.addCommand({domain:"core",keyword:"goto",lino:b,20 goto:0});a.compileOne();a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});a.getCommandAt(e).goto=a.getPc();return!0},compileVariable:function(b,e, q,d){q=void 0===q?!1:q;d=void 0===d?null:d;a.next();var l=a.getLino(),g=a.getTokens()[a.getIndex()];if(c.symbols[g.token])throw Error("Duplicate variable name '"+g.token+"'");var f=a.getPc();a.next();a.addSymbol(g.token,f);b={domain:b,keyword:e,lino:l,isSymbol:!0,used:!1,isValueHolder:q,name:g.token,elements:1,index:0,value:[{}],element:[],extra:d};21 "dom"=== d&&(b.element=[]);a.addCommand(b);return b},compileToken:function(){var b=a.getToken();if(b){a.mark();for(var e=$jscomp.makeIterator(Object.keys(a.domain)),c=e.next();!c.done;c=e.next()){if((c=a.domain[c.value])&&(c=c.getHandler(b))&&c.compile(a))return;a.rewind()}console.log("No handler found");throw Error("I don't understand '"+b+"...'");}},compileOne:function(){var b=a.getToken();if(b){c.warnings=[];var e=c.program.length;if(b.endsWith(":")){b=b.substring(0,b.length-1);if(c.symbols[b])throw Error("Duplicate symbol: '"+19 getNextValue:function(){a.next();return a.getValue()},getCondition:function(){return a.condition.compile(a)},constant:function(b,e){return a.value.constant(b,void 0===e?!1:e)},addCommand:function(a){c.program.push(g({pc:c.program.length},a))},addSymbol:function(a,e){c.symbols[a]={pc:e}},mark:function(){c.savedMark=c.index},rewind:function(){c.index=c.savedMark},rewindTo:function(a){c.index=a},completeHandler:function(){var b=a.getLino(),e=a.getPc();a.addCommand({domain:"core",keyword:"goto",lino:b, 20 goto:0});a.compileOne();a.addCommand({domain:"core",keyword:"stop",lino:b,next:0});a.getCommandAt(e).goto=a.getPc();return!0},compileVariable:function(b,e,p,f){p=void 0===p?!1:p;f=void 0===f?null:f;a.next();var l=a.getLino(),d=a.getTokens()[a.getIndex()];if(c.symbols[d.token])throw Error("Duplicate variable name '"+d.token+"'");var g=a.getPc();a.next();a.addSymbol(d.token,g);b={domain:b,keyword:e,lino:l,isSymbol:!0,used:!1,isValueHolder:p,name:d.token,elements:1,index:0,value:[{}],element:[],extra:f}; 21 "dom"===f&&(b.element=[]);a.addCommand(b);return b},compileToken:function(){var b=a.getToken();if(b){a.mark();for(var e=$jscomp.makeIterator(Object.keys(a.domain)),c=e.next();!c.done;c=e.next()){if((c=a.domain[c.value])&&(c=c.getHandler(b))&&c.compile(a))return;a.rewind()}console.log("No handler found");throw Error("I don't understand '"+b+"...'");}},compileOne:function(){var b=a.getToken();if(b){c.warnings=[];var e=c.program.length;if(b.endsWith(":")){b=b.substring(0,b.length-1);if(c.symbols[b])throw Error("Duplicate symbol: '"+ 22 22 b+"'");c.symbols[b]={pc:e};c.index++}else a.compileToken()}},compileFromHere:function(b){for(;c.index<c.tokens.length;){var e=c.tokens[c.index].token;if("else"===e)return c.program;a.compileOne();if(-1<b.indexOf(e))break}},compile:function(b){c.tokens=b;c.index=0;c.program=[];c.symbols={};c.warnings=[];a.compileFromHere([]);a.addCommand({domain:"core",keyword:"exit",lino:a.getLino(),next:0});for(var e in c.symbols)b=c.program[c.symbols[e].pc],b.isSymbol&&!b.used&&console.log("Symbol '"+b.name+"' has not been used."); 23 return c.program}};k.exports=a},{}],4:[function(d,k,h){var f=Object.assign||function(c){for(var a=1;a<arguments.length;a++){var b=arguments[a],e;for(e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};k.exports={compile:function(c){c.mark();for(var a=$jscomp.makeIterator(Object.keys(c.domain)),b=a.next();!b.done;b=a.next()){if(b=c.domain[b.value].condition.compile(c))return f({domain:name},b);c.rewind()}},test:function(c,a){return c.domain[a.domain].condition.test(c,a)}}},{}],24 5:[function(d,k,h){var f=this,c={Add:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();if(a.tokenIs("to"))if(a.next(),a.isSymbol()){var c=a.getSymbol();if(a.getCommandAt(c.pc).isValueHolder){if("giving"===a.peek()){c=a.getValue();a.next();var d=a.getToken();a.next();a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d})}else c=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,target:c});return!0}a.warning("core "+f.name+": Expected value holder")}else{c=25 a.getValue();if(a.tokenIs("giving"))return a.next(),d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d}),!0;a.warning("core "+ f.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];c?(a=a.getValue(c)+a.getValue(e),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(l.content)+23 return c.program}};k.exports=a},{}],4:[function(d,k,h){var g=Object.assign||function(c){for(var a=1;a<arguments.length;a++){var b=arguments[a],e;for(e in b)Object.prototype.hasOwnProperty.call(b,e)&&(c[e]=b[e])}return c};k.exports={compile:function(c){c.mark();for(var a=$jscomp.makeIterator(Object.keys(c.domain)),b=a.next();!b.done;b=a.next()){if(b=c.domain[b.value].condition.compile(c))return g({domain:name},b);c.rewind()}},test:function(c,a){return c.domain[a.domain].condition.test(c,a)}}},{}], 24 5:[function(d,k,h){var g=this,c={Add:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();if(a.tokenIs("to"))if(a.next(),a.isSymbol()){var c=a.getSymbol();if(a.getCommandAt(c.pc).isValueHolder){if("giving"===a.peek()){c=a.getValue();a.next();var d=a.getToken();a.next();a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d})}else c=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,target:c});return!0}a.warning("core "+g.name+": Expected value holder")}else{c= 25 a.getValue();if(a.tokenIs("giving"))return a.next(),d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"add",lino:b,value1:e,value2:c,target:d}),!0;a.warning("core "+g.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];c?(a=a.getValue(c)+a.getValue(e),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(l.content)+ 26 26 parseInt(a.getValue(e)),d.value[d.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,d.name);return b.pc+1}},Alias:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getToken();a.next();if(a.tokenIs("to")&&(a.next(),a.isSymbol())){var c=a.getSymbolRecord();c.used=!0;a.next();a.addCommand({domain:"core",keyword:"alias",lino:b,alias:e,symbol:c.name});return!0}}return!1},run:function(a){var b=a[a.pc],e=a.symbols[b.alias].pc,c=a[e],d=a.getSymbolRecord(b.symbol); 27 27 a[e]={pc:c.pc,domain:d.domain,keyword:d.keyword,lino:c.lino,name:c.name,alias:b.symbol};return b.pc+1}},Append:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("to")&&a.nextIsSymbol()){var c=a.getSymbolRecord();if(c.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"append",lino:b,value:e,select:c.name}),!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.select);try{var c=a.getValue(b.value),d=["{","["].includes(c[0])?JSON.parse(c):c,l=e.value[e.index], 28 n=l.content;n=n?JSON.parse(n):[];n.push(d);l.content=JSON.stringify(n);return b.pc+1}catch(p){return a.runtimeError(b.lino,"JSON: Unable to parse value"),!1}}},Begin:{compile:function(a){a.next();a.compileFromHere(["end"]);return!0},run:function(a){return a[a.pc].pc+1}},Callback:{compile:function(a){a.compileVariable("core","callback");return!0},run:function(a){return a[a.pc].pc+1}},Clear:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getSymbolRecord();if(e.isValueHolder)return e=28 q=l.content;q=q?JSON.parse(q):[];q.push(d);l.content=JSON.stringify(q);return b.pc+1}catch(n){return a.runtimeError(b.lino,"JSON: Unable to parse value"),!1}}},Begin:{compile:function(a){a.next();a.compileFromHere(["end"]);return!0},run:function(a){return a[a.pc].pc+1}},Callback:{compile:function(a){a.compileVariable("core","callback");return!0},run:function(a){return a[a.pc].pc+1}},Clear:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getSymbolRecord();if(e.isValueHolder)return e= 29 29 a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"clear",lino:b,symbol:e}),!0;a.warning("'Variable '"+e.name+"' does not hold a value")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);e.isValueHolder?(a.domain[e.domain].value.put(e,{type:"boolean",content:!1}),b.numeric=!1):a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},Close:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbolRecord();if("module"===e.keyword)return a.next(), 30 30 a.addCommand({domain:"core",keyword:"close",lino:b,module:e.name}),!0}return!1},run:function(a){var b=a[a.pc];a=a.getSymbolRecord(b.module).program;a.run(a.onClose);return b.pc+1}},Debug:{compile:function(a){var b=a.getLino();if(a.nextTokenIs("program")){a.next();if(["item","pc"].includes(a.getToken())){var e=a.getNextValue();a.addCommand({domain:"core",keyword:"debug",lino:b,item:e});return!0}a.addCommand({domain:"core",keyword:"debug",lino:b,item:"program"});return!0}return a.tokenIs("symbols")? … … 32 32 console.log("Symbol: "+JSON.stringify(a,null,2));a.exporter=e;break;case "step":a.debugStep=!0;break;case "program":console.log("Debug program: "+JSON.stringify(a,null,2));break;default:0<=e.content&&console.log("Debug item "+e.content+": "+JSON.stringify(a[e.content],null,2))}return b.pc+1}},Decode:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"decode",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc], 33 33 e=a.getSymbolRecord(b.symbol);if(e.isValueHolder){var c=a.getValue(e.value[e.index]);e.value[e.index]={type:"constant",numeric:!1,content:a.decode(c)};b.numeric=!1}else a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},Divide:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbol();var c=a.getCommandAt(e.pc).name}e=a.getValue();a.tokenIs("by")&&a.next();var d=a.getValue();if(a.tokenIs("giving")){a.next();if(a.isSymbol())return c=a.getSymbol(),c=a.getCommandAt(c.pc).name, 34 a.next(),a.addCommand({domain:"core",keyword:"divide",lino:b,value1:e,value2:d,target:c}),!0;a.warning("core "+ f.name+": Expected value holder")}else return"undefined"===typeof c&&a.warning("core "+f.name+": No target variable given"),a.addCommand({domain:"core",keyword:"divide",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)/a.getValue(c),d.value[d.index]={type:"constant",34 a.next(),a.addCommand({domain:"core",keyword:"divide",lino:b,value1:e,value2:d,target:c}),!0;a.warning("core "+g.name+": Expected value holder")}else return"undefined"===typeof c&&a.warning("core "+g.name+": No target variable given"),a.addCommand({domain:"core",keyword:"divide",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)/a.getValue(c),d.value[d.index]={type:"constant", 35 35 numeric:!0,content:Math.trunc(a)}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b,lino),a=parseInt(l.content)/parseInt(a.getValue(c)),d.value[d.index]={type:"constant",numeric:!0,content:Math.trunc(a)})}else a.variableDoesNotHoldAValueError(b.lino,d.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},run:function(a){return a[a.pc].pc+1}},Encode:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e= 36 36 a.getToken();a.next();a.addCommand({domain:"core",keyword:"encode",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);if(e.isValueHolder){var c=a.getValue(e.value[e.index]);e.value[e.index]={type:"constant",numeric:!1,content:a.encode(c)};b.numeric=!1}else a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},End:{compile:function(a){a.next();return!0},run:function(){return 0}},Exit:{compile:function(a){a.next();a.addCommand({domain:"core",keyword:"exit"}); 37 37 return!0},run:function(a){a.exit();return 0}},Filter:{compile:function(a){var b=a.getLino();if(a.nextIsSymbol()){var e=a.getSymbolRecord();if(a.nextTokenIs("with")){var c=a.nextToken();a.next();a.addCommand({domain:"core",keyword:"filter",lino:b,array:e.name,func:c});return!0}}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.array),c=e.value[e.index].content,d=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(c).filter(function(b){e.a=b;a.run(d);return e.v});e.value[e.index].content= 38 JSON.stringify(l)}catch( n){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 e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(e){console.log(e.message),alert(e.message)}return b.pc+1}},Go:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core",38 JSON.stringify(l)}catch(q){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 e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"fork",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];try{a.run(a.symbols[b.label].pc)}catch(e){console.log(e.message),alert(e.message)}return b.pc+1}},Go:{compile:function(a){var b=a.getLino();a.nextTokenIs("to")&&a.next();var e=a.getToken();a.next();a.addCommand({domain:"core", 39 39 keyword:"go",lino:b,label:e});return!0},run:function(a){var b=a[a.pc];if(b.label){if(a.verifySymbol(b.label)){var e=a.symbols[b.label];if(e)return e.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 e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"gosub",lino:b,label:e});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; 40 40 a.runtimeError(b.lino,"Unknown symbol '"+b.label+"'");return 0}},If:{compile:function(a){var b=a.getLino();a.next();var e=a.condition.compile(a),c=a.getPc();a.addCommand({domain:"core",keyword:"if",lino:b,condition:e});a.compileOne();if(!a.getToken())return a.getCommandAt(c).else=a.getPc(),!0;a.tokenIs("else")?(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(c).else=a.getPc(),a.next(),a.compileOne(!0),a.getCommandAt(b).goto=a.getPc()):a.getCommandAt(c).else=a.getPc(); … … 45 45 value2:d,target:c}),!0;a.warning("core multiply: Expected value holder")}else return"undefined"===typeof c&&a.warning("core multiply: No target variable given"),a.addCommand({domain:"core",keyword:"multiply",lino:b,value2:d,target:c}),!0;return!1},run:function(a){var b=a[a.pc],e=b.value1,c=b.value2,d=a.getSymbolRecord(b.target);if(d.isValueHolder){var l=d.value[d.index];e?(a=a.getValue(e)*a.getValue(c),d.value[d.index]={type:"constant",numeric:!0,content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b, 46 46 lino),a=parseInt(l.content)*parseInt(a.getValue(c)),d.value[d.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,d.name);return b.pc+1}},Negate:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var e=a.getToken();a.next();a.addCommand({domain:"core",keyword:"negate",lino:b,symbol:e});return!0}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.symbol);e.isValueHolder?e.value[e.index]={type:"constant",numeric:!0,content:-e.value[e.index].content}: 47 a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},On:{compile:function(a){var b=a.getLino(),e=a.nextToken();switch(e){case "close":case " restore":case "message":case "error":return a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e}),a.completeHandler()}return a.isSymbol()&&(e=a.getSymbolRecord(),"callback"===e.keyword)?(a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e.name}),a.completeHandler()):!1},run:function(a){var b=a[a.pc],e=b.pc+2;switch(b.action){case "close":a.onClose=48 e;break;case " restore":a.onRestore=e;break;case "message":a.onMessage=e;break;case "error":a.onError=e;break;default:var c=a.getSymbolRecord(b.action);if(c)c.cb=e;else return a.runtimeError(b.lino,"Unknown action '"+b.action+"'"),0}return b.pc+1}},Print:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();a.addCommand({domain:"core",keyword:"print",lino:b,value:e});return!0},run:function(a){var b=a[a.pc];a=a.getFormattedValue(b.value);console.log("-> "+a);return b.pc+1}},Put:{compile:function(a){var b=49 a.getLino(),e=a.getNextValue();if(a.tokenIs("into")){if(a.nextIsSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"put",lino:b,value:e,target:c});return!0}a.warning("core:put: No such variable: '"+a.getToken()+"'")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.target);e.isValueHolder||a.variableDoesNotHoldAValueError(b.lino,e.name);a=a.evaluate(b.value);e.value[e.index]={type:a.type,numeric:a.numeric,content:a.content};e.imported&&(e=e.exporter.getSymbolRecord(e.exportedName), 50 e.value[e.index]=a);return b.pc+1}},Replace:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("with")){var c=a.getNextValue();if(a.tokenIs("in")&&a.nextIsSymbol()){var d=a.getSymbolRecord();if(d.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"replace",lino:b,original:e,replacement:c,target:d.name}),!0;throw Error("'"+d.name+"' does not hold a value");}}return!1},run:function(a){var b=a[a.pc],e=a.getValue(b.original),c=a.getValue(b.replacement),d=a.getSymbolRecord(b.target);47 a.variableDoesNotHoldAValueError(b.lino,e.name);return b.pc+1}},On:{compile:function(a){var b=a.getLino(),e=a.nextToken();switch(e){case "close":case "message":case "error":return a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e}),a.completeHandler()}return a.isSymbol()&&(e=a.getSymbolRecord(),"callback"===e.keyword)?(a.next(),a.addCommand({domain:"core",keyword:"on",lino:b,action:e.name}),a.completeHandler()):!1},run:function(a){var b=a[a.pc],e=b.pc+2;switch(b.action){case "close":a.onClose= 48 e;break;case "message":a.onMessage=e;break;case "error":a.onError=e;break;default:var c=a.getSymbolRecord(b.action);if(c)c.cb=e;else return a.runtimeError(b.lino,"Unknown action '"+b.action+"'"),0}return b.pc+1}},Print:{compile:function(a){var b=a.getLino();a.next();var e=a.getValue();a.addCommand({domain:"core",keyword:"print",lino:b,value:e});return!0},run:function(a){var b=a[a.pc];a=a.getFormattedValue(b.value);console.log("-> "+a);return b.pc+1}},Put:{compile:function(a){var b=a.getLino(),e=a.getNextValue(); 49 if(a.tokenIs("into")){if(a.nextIsSymbol()){var c=a.getToken();a.next();a.addCommand({domain:"core",keyword:"put",lino:b,value:e,target:c});return!0}a.warning("core:put: No such variable: '"+a.getToken()+"'")}return!1},run:function(a){var b=a[a.pc],e=a.getSymbolRecord(b.target);e.isValueHolder||a.variableDoesNotHoldAValueError(b.lino,e.name);a=a.evaluate(b.value);e.value[e.index]={type:a.type,numeric:a.numeric,content:a.content};e.imported&&(e=e.exporter.getSymbolRecord(e.exportedName),e.value[e.index]= 50 a);return b.pc+1}},Replace:{compile:function(a){var b=a.getLino(),e=a.getNextValue();if(a.tokenIs("with")){var c=a.getNextValue();if(a.tokenIs("in")&&a.nextIsSymbol()){var d=a.getSymbolRecord();if(d.isValueHolder)return a.next(),a.addCommand({domain:"core",keyword:"replace",lino:b,original:e,replacement:c,target:d.name}),!0;throw Error("'"+d.name+"' does not hold a value");}}return!1},run:function(a){var b=a[a.pc],e=a.getValue(b.original),c=a.getValue(b.replacement),d=a.getSymbolRecord(b.target); 51 51 a=a.getValue(d.value[d.index]).split(e).join(c);d.value[d.index]={type:"constant",numeric:!1,content:a};return b.pc+1}},Require:{compile:function(a){var b=a.getLino(),e=a.nextToken();if(["css","js"].includes(e)){var c=a.getNextValue();a.addCommand({domain:"core",keyword:"require",lino:b,type:e,url:c});return!0}throw Error("File type must be 'css' or 'js'");},run:function(a){var b=a[a.pc];a.require(b.type,a.getValue(b.url),function(){a.run(b.pc+1)});return 0}},Return:{compile:function(a){var b=a.getLino(); 52 a.next();a.addCommand({domain:"core",keyword:"return",lino:b});return!0},run:function(a){return a.stack.pop()}},Run:{compile:function(a){var b=a.getLino(),e=a.getNextValue(),c=[];if(a.tokenIs("with"))for(;;)if(a.nextIsSymbol(!0)){var d=a.getSymbolRecord();d.exporter=a.getProgram();c.push(d);a.next();if(!a.tokenIs("and"))break}if(a.tokenIs("as")&&a.nextIsSymbol(!0)){var l=a.getSymbolRecord();a.next();if("module"!==l.keyword)throw Error("'"+l.name+"' is not a module");l=l.name}var n=!1;a.tokenIs("nowait")&&53 (a.next(), n=!0);d=a.getPc();a.addCommand({domain:"core",keyword:"run",lino:b,script:e,imports:c,module:l,nowait:n,then:0});a.tokenIs("then")&&(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(d).then=a.getPc(),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 e=a.getToken();54 a.next();a.addCommand({domain:"core",keyword:"sanitize",lino:b,name:e});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){ a.getProgram().script=a.nextToken();a.next();return!0},run:function(a){return a[a.pc].pc+1}},Send:{compile:function(a){var b=a.getLino(),e="";a.nextTokenIs("to")||(e=a.getValue());if(a.tokenIs("to")){if(a.nextTokenIs("parent"))var c="parent";55 else if(a.isSymbol){c=a.getSymbolRecord();if("module"!==c.keyword)throw Error("'"+c.name+"' is not a module");c=c.name}a.next();a.addCommand({domain:"core",keyword:"send",lino:b,message:e,recipient:c})}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=52 a.next();a.addCommand({domain:"core",keyword:"return",lino:b});return!0},run:function(a){return a.stack.pop()}},Run:{compile:function(a){var b=a.getLino(),e=a.getNextValue(),c=[];if(a.tokenIs("with"))for(;;)if(a.nextIsSymbol(!0)){var d=a.getSymbolRecord();d.exporter=a.getProgram();c.push(d);a.next();if(!a.tokenIs("and"))break}if(a.tokenIs("as")&&a.nextIsSymbol(!0)){var l=a.getSymbolRecord();a.next();if("module"!==l.keyword)throw Error("'"+l.name+"' is not a module");l=l.name}var q=!1;a.tokenIs("nowait")&& 53 (a.next(),q=!0);d=a.getPc();a.addCommand({domain:"core",keyword:"run",lino:b,script:e,imports:c,module:l,nowait:q,then:0});a.tokenIs("then")&&(b=a.getPc(),a.addCommand({domain:"core",keyword:"goto",goto:0}),a.getCommandAt(d).then=a.getPc(),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 e=a.getToken(); 54 a.next();a.addCommand({domain:"core",keyword:"sanitize",lino:b,name:e});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=a.getProgram();b.script=a.nextToken();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(),e="";a.nextTokenIs("to")||(e=a.getValue());if(a.tokenIs("to")){if(a.nextTokenIs("parent"))var c= 55 "parent";else if(a.isSymbol){c=a.getSymbolRecord();if("module"!==c.keyword)throw Error("'"+c.name+"' is not a module");c=c.name}a.next();a.addCommand({domain:"core",keyword:"send",lino:b,message:e,recipient:c})}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= 56 56 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();try{d.push(a.getValue())}catch(l){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"}), 57 !0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to"))){var g=a.getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:g});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return g=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty",58 target:d.name,name:c,value: g}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),a.nextTokenIs("to")))return g=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:g}),!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(),57 !0;case "element":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to"))){var f=a.getNextValue();a.addCommand({domain:"core",keyword:"set",lino:b,request:"setElement",target:d.name,index:c,value:f});return!0}break;case "property":c=a.getNextValue();if(a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),"variable"===d.keyword&&a.nextTokenIs("to")))return f=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setProperty", 58 target:d.name,name:c,value:f}),!0;break;case "arg":if(c=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(d=a.getSymbolRecord(),a.nextTokenIs("to")))return f=a.getNextValue(),a.addCommand({domain:"core",keyword:"set",lino:b,request:"setArg",target:d.name,name:c,value:f}),!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(), 59 59 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=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", 60 60 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);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); 61 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({}),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 g=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);g[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(g);break;case "setProperty":c=62 a.getSymbolRecord(b.target);( g=a.getValue(c.value[c.index]))||(g="{}");d="";try{d=JSON.parse(g)}catch(l){return a.runtimeError(b.lino,"Can't parse "+c.name),0}g=a.getValue(b.name);if(a=a.evaluate(b.value))a.content instanceof Array?d[g]=a.content:"boolean"===a.type?d[g]=a.content:a.numeric?d[g]=a.content:'{"'===a.content.substr(0,2)?d[g]=JSON.parse(a.content):d[g]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload=63 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=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, g=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(d);64 l.sort(function(b,e){c.a=b;c.b=e;a.run( g);return c.v});c.value[c.index].content=JSON.stringify(l)}catch(n){a.runtimeError(b.lino,"Can't parse this array")}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=65 a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit();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 g=a.getToken();a.next();a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:g})}else d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,66 value1:c,target:d});return!0}a.warning("core "+ f.name+": Expected value holder")}else{d=a.getValue();if(a.tokenIs("giving"))return a.next(),g=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:g}),!0;a.warning("core "+f.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],c=b.value1,d=b.value2,g=a.getSymbolRecord(b.target);if(g.isValueHolder){var l=g.value[g.index];d?(a=a.getValue(d)-a.getValue(c),g.value[g.index]={type:"constant",numeric:!0,67 content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(a.getValue(l))-parseInt(a.getValue(c)), g.value[g.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,g.name);return b.pc+1}},Toggle:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolPc();a.next();a.addCommand({domain:"core",keyword:"toggle",lino:b,symbol:c});return!0}return!1},run:function(a){var b=a[a.pc],c=a[b.symbol];if(c.isValueHolder){var d=61 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({}),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 f=JSON.parse(a.getValue(c.value[c.index]));a=a.getValue(b.value);f[d]=JSON.parse(a);c.value[c.index].content=JSON.stringify(f);break;case "setProperty":c= 62 a.getSymbolRecord(b.target);(f=a.getValue(c.value[c.index]))||(f="{}");d="";try{d=JSON.parse(f)}catch(l){return a.runtimeError(b.lino,"Can't parse "+c.name),0}f=a.getValue(b.name);if(a=a.evaluate(b.value))a.content instanceof Array?d[f]=a.content:"boolean"===a.type?d[f]=a.content:a.numeric?d[f]=a.content:'{"'===a.content.substr(0,2)?d[f]=JSON.parse(a.content):d[f]=a.content.split('"').join('\\"'),c.value[c.index]={type:"constant",numeric:!1,content:JSON.stringify(d)};break;case "setPayload":a.getSymbolRecord(b.callback).payload= 63 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=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,f=a.getSymbolRecord(b.func).pc;try{var l=JSON.parse(d); 64 l.sort(function(b,e){c.a=b;c.b=e;a.run(f);return c.v});c.value[c.index].content=JSON.stringify(l)}catch(q){a.runtimeError(b.lino,"Can't parse this array")}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= 65 a[a.pc];if(b.name)a.getSymbolRecord(b.name).program.exit();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 f=a.getToken();a.next();a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:f})}else d=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b, 66 value1:c,target:d});return!0}a.warning("core "+g.name+": Expected value holder")}else{d=a.getValue();if(a.tokenIs("giving"))return a.next(),f=a.getToken(),a.next(),a.addCommand({domain:"core",keyword:"take",lino:b,value1:c,value2:d,target:f}),!0;a.warning("core "+g.name+': Expected "giving"')}return!1},run:function(a){var b=a[a.pc],c=b.value1,d=b.value2,f=a.getSymbolRecord(b.target);if(f.isValueHolder){var l=f.value[f.index];d?(a=a.getValue(d)-a.getValue(c),f.value[f.index]={type:"constant",numeric:!0, 67 content:a}):(!l.numeric&&isNaN(l.content)&&a.nonNumericValueError(b.lino),a=parseInt(a.getValue(l))-parseInt(a.getValue(c)),f.value[f.index]={type:"constant",numeric:!0,content:a})}else a.variableDoesNotHoldAValueError(b.lino,f.name);return b.pc+1}},Toggle:{compile:function(a){var b=a.getLino();a.next();if(a.isSymbol()){var c=a.getSymbolPc();a.next();a.addCommand({domain:"core",keyword:"toggle",lino:b,symbol:c});return!0}return!1},run:function(a){var b=a[a.pc],c=a[b.symbol];if(c.isValueHolder){var d= 68 68 a.domain[c.domain];a=d.value.get(a,c.value[c.index]).content;d.value.put(c,{type:"boolean",content:!a})}else a.variableDoesNotHoldAValueError(b.lino,c.name);return b.pc+1}},Variable:{compile:function(a){a.compileVariable("core","variable",!0);return!0},run:function(a){return a[a.pc].pc+1}},Wait:{compile:function(a){var b=a.getLino();a.next();var c=a.getValue(a),d=1E3;switch(a.getToken()){case "milli":case "millis":a.next();d=1;break;case "tick":case "ticks":a.next();d=10;break;case "second":case "seconds":a.next(); 69 69 d=1E3;break;case "minute":case "minutes":a.next(),d=6E4}a.addCommand({domain:"core",keyword:"wait",lino:b,value:c,multiplier:d});return!0},run:function(a){var b=a[a.pc],c=a.getValue(b.value);setTimeout(function(){a.run(b.pc+1)},c*b.multiplier);return 0}},While:{compile:function(a){var b=a.getLino();a.next();var c=a.getCondition(),d=a.getPc();a.addCommand({domain:"core",keyword:"while",lino:b,condition:c});b=a.getPc();a.addCommand({domain:"core",keyword:"goto",goto:0});a.compileOne();a.addCommand({domain:"core", … … 76 76 null;if("property"===b)return b=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()&&(c=a.getSymbolRecord(),a.next(),"variable"===c.keyword)?{domain:"core",type:"property",property:b,symbol:c.name}:null;if("arg"===b&&(b=a.getNextValue(),a.tokenIs("of")&&a.nextIsSymbol()))return c=a.getSymbolRecord(),a.next(),{domain:"core",type:"arg",value:b,target:c.name};a.tokenIs("the")&&a.next();b=a.getToken();switch(b){case "elements":if(a.nextTokenIs("of")&&a.nextIsSymbol())return c=a.getToken(),a.next(),{domain:"core", 77 77 type:b,name:c};break;case "index":if(a.nextTokenIs("of")){if(a.nextIsSymbol()){if("in"===a.peek())return b=a.getValue(),a=a.getNextValue(),{domain:"core",type:"indexOf",value1:b,value2:a};c=a.getToken();a.next();return{domain:"core",type:b,name:c}}b=a.getValue();if(a.tokenIs("in"))return a=a.getNextValue(),{domain:"core",type:"indexOf",value1:b,value2:a}}break;case "value":if(a.nextTokenIs("of"))return a.next(),{domain:"core",type:"valueOf",value:a.getValue()};break;case "length":if(a.nextTokenIs("of"))return a.next(), 78 {domain:"core",type:"lengthOf",value:a.getValue()};break;case "left":case "right":try{if(c=a.getNextValue(),a.tokenIs("of")){var d=a.getNextValue();return{domain:"core",type:b,count:c,value:d}}}catch( g){}break;case "from":c=a.getNextValue();d=a.tokenIs("to")?a.getNextValue():null;if(a.tokenIs("of"))return a=a.getNextValue(),{domain:"core",type:b,from:c,to:d,value:a};break;case "position":if(a.nextTokenIs("of")&&(b=!1,a.nextTokenIs("the")&&a.nextTokenIs("last")&&(a.next(),b=!0),c=a.getValue(),a.tokenIs("in")))return a=78 {domain:"core",type:"lengthOf",value:a.getValue()};break;case "left":case "right":try{if(c=a.getNextValue(),a.tokenIs("of")){var d=a.getNextValue();return{domain:"core",type:b,count:c,value:d}}}catch(f){}break;case "from":c=a.getNextValue();d=a.tokenIs("to")?a.getNextValue():null;if(a.tokenIs("of"))return a=a.getNextValue(),{domain:"core",type:b,from:c,to:d,value:a};break;case "position":if(a.nextTokenIs("of")&&(b=!1,a.nextTokenIs("the")&&a.nextTokenIs("last")&&(a.next(),b=!0),c=a.getValue(),a.tokenIs("in")))return a= 79 79 a.getNextValue(),{domain:"core",type:"position",needle:c,haystack:a,last:b};break;case "payload":if(a.nextTokenIs("of")&&a.nextIsSymbol()&&(b=a.getSymbolRecord(),"callback"===b.keyword))return a.next(),{domain:"core",type:"payload",callback:b.name};break;case "message":case "error":return a.next(),{domain:"core",type:b}}return null},get:function(a,b){switch(b.type){case "boolean":return{type:"boolean",numeric:!1,content:b.content};case "elements":return{type:"constant",numeric:!0,content:a.getSymbolRecord(b.name).elements}; 80 80 case "index":return{type:"constant",numeric:!0,content:a.getSymbolRecord(b.name).index};case "random":return a=a.evaluate(b.range),{type:"constant",numeric:!0,content:Math.floor(Math.random()*a.content)};case "cos":var c=a.getValue(b.angle_c);a=a.getValue(b.radius_c);return{type:"constant",numeric:!0,content:parseInt(Math.cos(.01745329*parseFloat(c))*a,10)};case "sin":return c=a.getValue(b.angle_s),a=a.getValue(b.radius_s),{type:"constant",numeric:!0,content:parseInt(Math.sin(.01745329*parseFloat(c))* 81 81 a,10)};case "tan":return c=a.getValue(b.angle_t),a=a.getValue(b.radius_t),{type:"constant",numeric:!0,content:parseInt(Math.tan(.01745329*parseFloat(c))*a,10)};case "valueOf":return a=parseInt(a.getValue(b.value)),{type:"constant",numeric:!0,content:a?a:0};case "lengthOf":return{type:"constant",numeric:!0,content:a.getValue(b.value).length};case "left":return{type:"constant",numeric:!1,content:a.getValue(b.value).substr(0,a.getValue(b.count))};case "right":return c=a.getValue(b.value),{type:"constant", 82 82 numeric:!1,content:c.substr(c.length-a.getValue(b.count))};case "from":c=a.getValue(b.from);var d=b.to?a.getValue(b.to):null;a=a.getValue(b.value);return{type:"constant",numeric:!1,content:d?a.substr(c,d):a.substr(c)};case "position":return c=a.getValue(b.needle),a=a.getValue(b.haystack),{type:"constant",numeric:!0,content:b.last?a.lastIndexOf(c):a.indexOf(c)};case "payload":return{type:"constant",numeric:!1,content:a.getSymbolRecord(b.callback).payload};case "modulo":return c=a.getSymbolRecord(b.name), 83 a=a.evaluate(b.value),{type:"constant",numeric:!0,content:c.value[c.index].content%a.content};case "format":c=a.getSymbolRecord(b.name);c=1E3*a.getValue(c.value[c.index]);try{switch(d=JSON.parse(a.getValue(b.value)),d.mode){case "time":return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleTimeString(d.locale,d.options)};default:return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleDateString(d.locale,d.options)}}}catch( g){a.runtimeError(a[a.pc].lino,"Can't parse "+b.value);break}case "empty":return{type:"constant",83 a=a.evaluate(b.value),{type:"constant",numeric:!0,content:c.value[c.index].content%a.content};case "format":c=a.getSymbolRecord(b.name);c=1E3*a.getValue(c.value[c.index]);try{switch(d=JSON.parse(a.getValue(b.value)),d.mode){case "time":return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleTimeString(d.locale,d.options)};default:return{type:"constant",numeric:!0,content:(new Date(c)).toLocaleDateString(d.locale,d.options)}}}catch(f){a.runtimeError(a[a.pc].lino,"Can't parse "+b.value);break}case "empty":return{type:"constant", 84 84 numeric:!1,content:""};case "now":return{type:"constant",numeric:!0,content:Math.floor(Date.now()/1E3)};case "today":return a=new Date,a.setHours(0,0,0,0),{type:"constant",numeric:!0,content:Math.floor(a.getTime()/1E3)};case "date":return{type:"constant",numeric:!0,content:Date.parse(a.getValue(b.value))/1E3};case "newline":return{type:"constant",numeric:!1,content:"\n"};case "break":return{type:"constant",numeric:!1,content:"<br />"};case "encode":return{type:"constant",numeric:!1,content:a.encode(a.getValue(b.value))}; 85 case "decode":return{type:"constant",numeric:!1,content:a.decode(a.getValue(b.value))};case "lowercase":return{type:"constant",numeric:!1,content:a.getValue(b.value).toLowerCase()};case "hash":a=a.getValue(b.value);b=0;if(0===a.length)return b;for(c=0;c<a.length;c++)d=a.charCodeAt(c),b=(b<<5)-b+d;return{type:"constant",numeric:!0,content:b};case "element":c=a.getValue(b.element);b=a.getSymbolRecord(b.symbol);d="";try{d=JSON.parse(a.getValue(b.value[b.index]))[c]}catch( g){a.runtimeError(a[a.pc].lino,86 "Can't parse JSON");break}return{type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};case "property":d=a.getValue(b.property);b=a.getSymbolRecord(b.symbol);a=a.getValue(b.value[b.index]);c="";if(d&&a)if("object"===typeof a)c=a[d];else if("{"===a.charAt(0))try{c=JSON.parse(a)[d]}catch( g){console.log("Can't parse '"+a+"': "+g.message)}return{type:"constant",numeric:!isNaN(c),content:"object"===typeof c?JSON.stringify(c):c};case "module":return{type:"boolean",numeric:!1,content:a.getSymbolRecord(b.name).program};87 case "message":return c=a.message,{type:"constant",numeric:!1,content:c};case "error":return c=a.errorMessage,{type:"constant",numeric:!1,content:c};case "indexOf":d=a.getValue(b.value1);b=a.getValue(b.value2);try{return c=JSON.parse(b).indexOf(d),{type:"constant",numeric:!0,content:c}}catch( g){a.runtimeError(a[a.pc].lino,"Can't parse "+b)}break;case "arg":return c=a.getValue(b.value),c=a.getSymbolRecord(b.target)[c],{type:"constant",numeric:!isNaN(c),content:c}}return null},put:function(a,b){a.value[a.index]=88 b}},condition:{compile:function(a){if(a.isSymbol()){var b=a.getSymbolRecord();if("module"===b.keyword){if(a.nextTokenIs("is")){var d=!0;a.nextTokenIs("not")&&(a.next(),d=!1);if(a.tokenIs("running"))return a.next(),{domain:"core",type:"moduleRunning",name:b.name,sense:d}}return null}}if(a.tokenIs("not"))return{domain:"core",type:"not",value:a.getNextValue()};try{if(d=a.getValue(),"is"===a.getToken()){a.next();var f=c.isNegate(a);switch(a.getToken()){case "numeric":return a.next(),{domain:"core",type:"numeric",89 value1:d};case "even":return a.next(),{domain:"core",type:"even",value1:d};case "odd":return a.next(),{domain:"core",type:"odd",value1:d};case "greater":a.next();if(a.tokenIs("than")){a.next();var g=a.getValue();return{domain:"core",type:"greater",value1:d,value2:g,negate:f}}break;case "less":a.next();if(a.tokenIs("than")){a.next();var l=a.getValue();return{domain:"core",type:"less",value1:d,value2:l,negate:f}}break;default:var n=a.getValue();return{domain:"core",type:"is",value1:d,value2:n,negate:f}}}else if(d)return{domain:"core",90 type:"boolean",value:d}}catch( p){return a.warning("Can't get a value"),0}return null},test:function(a,b){switch(b.type){case "boolean":return a.getValue(b.value);case "numeric":return!isNaN(a.getValue(b.value1));case "even":return 0===a.getValue(b.value1)%2;case "odd":return 1===a.getValue(b.value1)%2;case "is":return a=a.compare(a,b.value1,b.value2),b.negate?0!==a:0===a;case "greater":return a=a.compare(a,b.value1,b.value2),b.negate?0>=a:0<a;case "less":return a=a.compare(a,b.value1,b.value2),b.negate?91 0<=a:0>a;case "not":return!a.getValue(b.value);case "moduleRunning":return a=a.getSymbolRecord(b.name).program,b.sense?a:!a}return!1}}};k.exports=c},{}],6:[function(d,k,h){var f=this,c=d("./Compile"),a=d("./Run"),b=d("./Value"),e=d("./Condition"),q=d("./Compare"),g={domain:{core:d("./Core")},runtimeError:function(a,b){this.lino=a;this.reportError({message:"Line "+(0<=a?a:"")+": "+b},g.program);g.program.aborted=!0},nonNumericValueError:function(a){this.runtimeError(a,"Non-numeric value")},variableDoesNotHoldAValueError:function(a,92 b){this.runtimeError(a,"Variable '"+b+"' does not hold a value")},reportError:function(a,b,d){if(a.message)if(this.compiling||b){d=d?d:b.source;var e=d.tokens;d=d.scriptLines;e=this.compiling?e[c.getIndex()].lino:b[b.pc].lino;b=this.compiling?"Compile error":"Runtime error in '"+b.script+"'";b+=":\n";var l=e-5;for(l=0>l?0:l;l<e;l++){var n=(""+(l+1)).padStart(4," ");b+=n+" "+d[l].line.split("\\s").join(" ")+"\n"}b+=a.message+"\n";a=c.getWarnings();if(a.length)for(b+="Warnings:\n",a=$jscomp.makeIterator(a),85 case "decode":return{type:"constant",numeric:!1,content:a.decode(a.getValue(b.value))};case "lowercase":return{type:"constant",numeric:!1,content:a.getValue(b.value).toLowerCase()};case "hash":a=a.getValue(b.value);b=0;if(0===a.length)return b;for(c=0;c<a.length;c++)d=a.charCodeAt(c),b=(b<<5)-b+d;return{type:"constant",numeric:!0,content:b};case "element":c=a.getValue(b.element);b=a.getSymbolRecord(b.symbol);d="";try{d=JSON.parse(a.getValue(b.value[b.index]))[c]}catch(f){a.runtimeError(a[a.pc].lino, 86 "Can't parse JSON");break}return{type:"constant",numeric:!1,content:"object"===typeof d?JSON.stringify(d):d};case "property":d=a.getValue(b.property);b=a.getSymbolRecord(b.symbol);a=a.getValue(b.value[b.index]);c="";if(d&&a)if("object"===typeof a)c=a[d];else if("{"===a.charAt(0))try{c=JSON.parse(a)[d]}catch(f){console.log("Can't parse '"+a+"': "+f.message)}return{type:"constant",numeric:!isNaN(c),content:"object"===typeof c?JSON.stringify(c):c};case "module":return{type:"boolean",numeric:!1,content:a.getSymbolRecord(b.name).program}; 87 case "message":return c=a.message,{type:"constant",numeric:!1,content:c};case "error":return c=a.errorMessage,{type:"constant",numeric:!1,content:c};case "indexOf":d=a.getValue(b.value1);b=a.getValue(b.value2);try{return c=JSON.parse(b).indexOf(d),{type:"constant",numeric:!0,content:c}}catch(f){a.runtimeError(a[a.pc].lino,"Can't parse "+b)}break;case "arg":return c=a.getValue(b.value),c=a.getSymbolRecord(b.target)[c],{type:"constant",numeric:!isNaN(c),content:c}}return null},put:function(a,b){a.value[a.index]= 88 b}},condition:{compile:function(a){if(a.isSymbol()){var b=a.getSymbolRecord();if("module"===b.keyword){if(a.nextTokenIs("is")){var d=!0;a.nextTokenIs("not")&&(a.next(),d=!1);if(a.tokenIs("running"))return a.next(),{domain:"core",type:"moduleRunning",name:b.name,sense:d}}return null}}if(a.tokenIs("not"))return{domain:"core",type:"not",value:a.getNextValue()};try{if(d=a.getValue(),"is"===a.getToken()){a.next();var g=c.isNegate(a);switch(a.getToken()){case "numeric":return a.next(),{domain:"core",type:"numeric", 89 value1:d};case "even":return a.next(),{domain:"core",type:"even",value1:d};case "odd":return a.next(),{domain:"core",type:"odd",value1:d};case "greater":a.next();if(a.tokenIs("than")){a.next();var f=a.getValue();return{domain:"core",type:"greater",value1:d,value2:f,negate:g}}break;case "less":a.next();if(a.tokenIs("than")){a.next();var l=a.getValue();return{domain:"core",type:"less",value1:d,value2:l,negate:g}}break;default:var q=a.getValue();return{domain:"core",type:"is",value1:d,value2:q,negate:g}}}else if(d)return{domain:"core", 90 type:"boolean",value:d}}catch(n){return a.warning("Can't get a value"),0}return null},test:function(a,b){switch(b.type){case "boolean":return a.getValue(b.value);case "numeric":return!isNaN(a.getValue(b.value1));case "even":return 0===a.getValue(b.value1)%2;case "odd":return 1===a.getValue(b.value1)%2;case "is":return a=a.compare(a,b.value1,b.value2),b.negate?0!==a:0===a;case "greater":return a=a.compare(a,b.value1,b.value2),b.negate?0>=a:0<a;case "less":return a=a.compare(a,b.value1,b.value2),b.negate? 91 0<=a:0>a;case "not":return!a.getValue(b.value);case "moduleRunning":return a=a.getSymbolRecord(b.name).program,b.sense?a:!a}return!1}}};k.exports=c},{}],6:[function(d,k,h){var g=this,c=d("./Compile"),a=d("./Run"),b=d("./Value"),e=d("./Condition"),p=d("./Compare"),f={domain:{core:d("./Core")},runtimeError:function(a,b){this.lino=a;this.reportError({message:"Line "+(0<=a?a:"")+": "+b},f.program);f.program.aborted=!0},nonNumericValueError:function(a){this.runtimeError(a,"Non-numeric value")},variableDoesNotHoldAValueError:function(a, 92 b){this.runtimeError(a,"Variable '"+b+"' does not hold a value")},reportError:function(a,b,d){if(a.message)if(this.compiling||b){d=d?d:b.source;var e=d.tokens;d=d.scriptLines;e=this.compiling?e[c.getIndex()].lino:b[b.pc].lino;b=this.compiling?"Compile error":"Runtime error in '"+b.script+"'";b+=":\n";var l=e-5;for(l=0>l?0:l;l<e;l++){var f=(""+(l+1)).padStart(4," ");b+=f+" "+d[l].line.split("\\s").join(" ")+"\n"}b+=a.message+"\n";a=c.getWarnings();if(a.length)for(b+="Warnings:\n",a=$jscomp.makeIterator(a), 93 93 d=a.next();!d.done;d=a.next())b+=d.value+"\n";console.log(b);alert(b)}else a="Error: "+a.message,alert(a),console.log(a);else console.log("An error occurred - origin was "+a.path[0])},getSymbolRecord:function(a){a=this[this.symbols[a].pc];return a.alias?this.getSymbolRecord(a.alias):a.exporter&&a.exporter!=this?a.exporter.getSymbolRecord(a.exportedName):a},verifySymbol:function(a){return this.symbols.hasOwnProperty(a)},encode:function(a){return b.encode(a,this.encoding)},decode:function(a){return b.decode(a, 94 this.encoding)},evaluate:function(a){return b.evaluate(this,a)},getValue:function(a){return b.getValue(this,a)},getFormattedValue:function(a){a=b.evaluate(this,a);if(a.numeric)return a.content;if("boolean"===a.type)return a.content?"true":"false";if('{"'===a.content.substr(0,2)||"["===a.content[0])try{var c=JSON.parse(a.content);return JSON.stringify(c,null,2)}catch( p){return this.reportError(p),"{}"}return a.content},getSimpleValue:function(a){return!0===a||!1===a?{type:"boolean",content:a}:{type:"constant",95 numeric:Number.isInteger(a),content:a}},run:function(b){b&&( g.program=this,a.run(this,b))},exit:function(){a.exit(this)},register:function(a){g.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()-g.timestamp+" ms: Library "+b+" loaded");c()};document.head.appendChild(d)},isUndefined:function(a){return"undefined"===96 typeof a},runScript:function(a){var b=a[a.pc],c=a.getValue(b.script),d=b.imports,e=b.module?a.getSymbolRecord(b.module):null;try{ g.tokeniseAndCompile(c.split("\n"),d,e,this,b.then)}catch(u){this.reportError(u,g.program,a.source);a.onError?a.run(a.onError):a.parent&&a.parent.onError&&a.parent.run(a.parent.onError);return}b.nowait&&this.run(a.nextPc)},close:function(){},compileScript:function(a,d,f,h){var l=a.tokens;this.compiling=!0;c.value=b;c.condition=e;c.domain=g.domain;c.imports=d;d=c.compile(l);97 this.compiling=!1;d.EasyCoder= g;d.value=b;d.condition=e;d.compare=q;d.source=a;d.run=this.run;d.exit=this.exit;d.runScript=this.runScript;d.evaluate=this.evaluate;d.getValue=this.getValue;d.getFormattedValue=this.getFormattedValue;d.getSimpleValue=this.getSimpleValue;d.encode=this.encode;d.decode=this.decode;d.domain=this.domain;d.require=this.require;d.isUndefined=this.isUndefined;d.checkPlugin=this.checkPlugin;d.getPlugin=this.getPlugin;d.addLocalPlugin=this.addLocalPlugin;d.getPluginsPath=this.getPluginsPath;98 d.getSymbolRecord=this.getSymbolRecord;d.verifySymbol=this.verifySymbol;d.runtimeError=this.runtimeError;d.nonNumericValueError=this.nonNumericValueError;d.variableDoesNotHoldAValueError=this.variableDoesNotHoldAValueError;d.reportError=this.reportError;d.register=this.register;d.symbols=c.getSymbols();d.encoding="ec";d.popups=[];d.stack=[];d.queue=[0];d.module= f;d.parent=h;f&&(f.program=d);return d},tokeniseFile:function(a){var b=[],c=[],d=0;a.forEach(function(a,e){b.push({lino:e+1,line:a});for(var l=99 a.length, f="",g=!0,h=0;h<l;h++){var k=a[h];if(0==k.trim().length)g||(c.push({index:d,lino:e+1,token:f}),d++,f="",g=!0);else if(g=!1,"`"===k){for(m=h;++h<a.length&&"`"!==a[h];);f=a.substr(m,h-m+1)}else if("!"==k)break;else f+=k}0<f.length&&c.push({index:d,lino:e+1,token:f})});return{scriptLines:b,tokens:c}},tokeniseAndCompile:function(b,c,d,e,f){var l=null,h=Date.now();b=g.tokeniseFile(b);try{l=g.compileScript(b,c,d,e);var k=l.script?l.script:"<anon>",n=Date.now();console.log(n-g.timestamp+" ms: "+100 ("Compiled "+k+": "+b.scriptLines.length+" lines ("+b.tokens.length+" tokens) in ")+( n-h+" ms"))}catch(w){"stop"!==w.message&&(c=g.program,this.reportError(w,c,b),c.onError&&c.run(c.onError))}l&&(l.onExit=f,a.run(l,0))},tokenise:function(a){var b=a.split("\n");if(!f.tokenising){try{g.tokeniseAndCompile(b)}catch(p){g.reportError(p,null,a)}f.tokenising=!0}},setPluginCount:function(a){f.plugins=[];f.pluginCount=a},checkPlugin:function(a){return g.domain[a]},getPlugin:function(a,b,c){g.domain[a]?c():101 (a=document.createElement("script"),a.type="text/javascript",a.src=b+"?ver="+ g.version,a.onload=function(){console.log(Date.now()-g.timestamp+" ms: Plugin "+b+" loaded");c()},document.head.appendChild(a))},addGlobalPlugin:function(a,b){f.plugins.push({name:a,handler:b});f.plugins.length===f.pluginCount&&(f.plugins.forEach(function(a){g.domain[a.name]=a.handler}),g.tokenise(f.source))},addLocalPlugin:function(a,b,c){g.domain[a]=b;c()},getPluginsPath:function(){return g.pluginsPath},loadPluginJs:function(a){console.log(Date.now()-102 g.timestamp+" ms: Load "+a+"/easycoder/plugins.js");var b=document.createElement("script");b.src=""+window.location.origin+a+"/easycoder/plugins.js?ver="+g.version;b.type="text/javascript";b.onload=function(){EasyCoder_Plugins.getGlobalPlugins(g.timestamp,a,g.setPluginCount,g.getPlugin,g.addGlobalPlugin)};b.onerror=function(){a?g.loadPluginJs(a.slice(0,a.lastIndexOf("/"))):g.reportError({message:"Can't load plugins.js"},g.program,f.source)};document.head.appendChild(b);g.pluginsPath=a},start:function(a){f.source=103 a;a=window.location.pathname;a=a.endsWith("/")?a.slice(0,-1):""; g.loadPluginJs(a)}};k.exports=g},{"./Compare":2,"./Compile":3,"./Condition":4,"./Core":5,"./Run":7,"./Value":8}],7:[function(d,k,h){var f={run:function(c,a){var b=[],d=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 0};if(b.length)b.push(a);else for(c.register(c),b.push(a);0<b.length;)for(c.pc=b.shift(),c.watchdog=0,a={};;){if(1E6<c.watchdog){c.lino=c[c.pc].lino;c.reportError(Error("Program runaway intercepted.\nHave you forgotten to increment a loop counter?",104 c),c);break}c.watchdog++;var h=c[c.pc].domain;c.debugStep&&console.log(c.script+": Line "+c[c.pc].lino+": PC: "+c.pc+" "+h+":"+c[c.pc].keyword);var g=c.domain[h];if(!g){c.runtimeError(c[c.pc].lino,"Unknown domain '"+h+"'");break}c.pc=g.run(c);if(!c.pc)break;if(c.stop){c.tracing=!1;break}if(c.tracing){h=c[c.pc];g=c.source.scriptLines;var k=d(g),n=document.getElementById("easycoder-tracer");if(!n){c.runtimeError(h.lino,"Element 'easycoder-tracer' was not found");return}n.style.display="block";n.style.visibility= 105 "visible";var p="";if(c.tracer){if(n=document.getElementById("easycoder-tracer-content")){c.tracer.variables.forEach(function(a,b,d){var e=c.getSymbolRecord(a);if(1<e.elements)for(p+=a+": "+e.index+"/"+e.elements+": ",a=0;a<e.elements;a++){var f=e.value[a];p=f?p+(f.content+" "):p+"undefined "}else p=(e=e.value[e.index])?p+(a+": "+e.content):p+(a+": undefined");switch(c.tracer.alignment){case "horizontal":b<d.length-1&&(p+=", ");break;case "vertical":p+="<br>"}});p+="<hr>";for(var t="",r=5;0<r;r--){if(h.lino){var u=106 g[h.lino-r].line.substr(k);t+='<input type="text" name="'+r+'"'+('value="'+(h.lino-r+1)+": "+u.split("\\s").join(" ")+'"')+'style="width:100%;border:none;enabled:false">'}t+="<br>"}n.innerHTML=p+" "+t;n.style.display="block";a.run=document.getElementById("easycoder-run-button");a.step=document.getElementById("easycoder-step-button");a.run.onclick=function(a){return function(){a.run.blur();c.tracing=!1;document.getElementById("easycoder-tracer-content").style.display="none";try{f.run(c,c.resume)}catch(v){var b=107 "Error in run handler: "+v.message;console.log(b);alert(b)}}}(a);a.step.onclick=function(a){return function(){console.log("step");a.step.blur();c.tracing=!0;document.getElementById("easycoder-tracer-content").style.display="block";try{c.run(c.resume)}catch(v){var b="Error in step handler: "+v.message;console.log(b);alert(b)}}}(a)}c.resume=c.pc;c.pc=0}break}a={run:a.run,step:a.step}}},exit:function(c){c.onExit&&(c.parent.run(c.onExit),c.module.program=null)}};k.exports=f},{}],8:[function(d,k,h){var f=108 {getItem:function(c){var a=c.getToken();if(!a)return null;if("true"===a)return c.next(),{type:"boolean",content:!0};if("false"===a)return c.next(),{type:"boolean",content:!1};if("`"===a.charAt(0))return c.next(),{type:"constant",numeric:!1,content:a.substring(1,a.length-1)};if(a.charAt(0).match(/[0-9-]/)){var b=eval(a);if(Number.isInteger(b))return c.next(),{type:"constant",numeric:!0,content:b};throw Error("'"+a+"' is not an integer");}a=c.getIndex();b=$jscomp.makeIterator(Object.keys(c.domain)); 109 for(var d=b.next();!d.done;d=b.next())if(d=d.value,c.rewindTo(a),d=c.domain[d].value.compile(c))return d;return null},compile:function(c){var a=c.getToken(),b=f.getItem(c);if(!b)throw Error("Undefined value: '"+a+"'");if("cat"===c.getToken()){for(a={type:"cat",numeric:!1,parts:[b]};c.tokenIs("cat");)c.next(),a.parts.push(c.value.getItem(c));return a}return b},doValue:function(c,a){if("undefined"===typeof a.type)return c.runtimeError(c[c.pc].lino,"Undefined value (variable not initialized?)"),null; 110 switch(a.type){case "cat":return{type:"constant",numeric:!1,content:a.parts.reduce(function(a,b){return a+f.doValue(c,b).content},"")};case "boolean":case "constant":return a;case "symbol":var b=c.getSymbolRecord(a.name);if(b.isValueHolder){if(a=b.value[b.index]){b=a.content;if(null===b||"undefined"===typeof b)a.content=a.numeric?0:"";return a}return null}return c.domain[b.domain].value.get(c,a)}return c.domain[a.domain].value.get(c,a)},constant:function(c,a){return{type:"constant",numeric:a,content:c}}, 111 evaluate:function(c,a){if(!a)return{type:"constant",numeric:!1,content:""};var b=f.doValue(c,a);if(b)return b;c.runtimeError(c[c.pc].lino,"Can't decode value: "+a)},getValue:function(c,a){return f.evaluate(c,a).content},encode:function(c,a){if(c)switch(a){case "ec":return c.replace(/'/g,"~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(c.replace(/\s/g,"+"));case "sanitize":return c.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return c},112 decode:function(c,a){if(c)switch(a){case "ec":return c.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(c).replace(/\+/g," ")}return c}};k.exports=f},{}]},{},[1]);94 this.encoding)},evaluate:function(a){return b.evaluate(this,a)},getValue:function(a){return b.getValue(this,a)},getFormattedValue:function(a){a=b.evaluate(this,a);if(a.numeric)return a.content;if("boolean"===a.type)return a.content?"true":"false";if('{"'===a.content.substr(0,2)||"["===a.content[0])try{var c=JSON.parse(a.content);return JSON.stringify(c,null,2)}catch(n){return this.reportError(n),"{}"}return a.content},getSimpleValue:function(a){return!0===a||!1===a?{type:"boolean",content:a}:{type:"constant", 95 numeric:Number.isInteger(a),content:a}},run:function(b){b&&(f.program=this,a.run(this,b))},exit:function(){a.exit(this)},register:function(a){f.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()-f.timestamp+" ms: Library "+b+" loaded");c()};document.head.appendChild(d)},isUndefined:function(a){return"undefined"=== 96 typeof a},runScript:function(a){var b=a[a.pc],c=a.getValue(b.script),d=b.imports,e=b.module?a.getSymbolRecord(b.module):null;try{f.tokeniseAndCompile(c.split("\n"),d,e,this,b.then)}catch(u){this.reportError(u,f.program,a.source);a.onError?a.run(a.onError):a.parent&&a.parent.onError&&a.parent.run(a.parent.onError);return}b.nowait&&this.run(a.nextPc)},close:function(){},compileScript:function(a,d,g,h){var l=a.tokens;this.compiling=!0;c.value=b;c.condition=e;c.domain=f.domain;c.imports=d;d=c.compile(l); 97 this.compiling=!1;d.EasyCoder=f;d.value=b;d.condition=e;d.compare=p;d.source=a;d.run=this.run;d.exit=this.exit;d.runScript=this.runScript;d.evaluate=this.evaluate;d.getValue=this.getValue;d.getFormattedValue=this.getFormattedValue;d.getSimpleValue=this.getSimpleValue;d.encode=this.encode;d.decode=this.decode;d.domain=this.domain;d.require=this.require;d.isUndefined=this.isUndefined;d.checkPlugin=this.checkPlugin;d.getPlugin=this.getPlugin;d.addLocalPlugin=this.addLocalPlugin;d.getPluginsPath=this.getPluginsPath; 98 d.getSymbolRecord=this.getSymbolRecord;d.verifySymbol=this.verifySymbol;d.runtimeError=this.runtimeError;d.nonNumericValueError=this.nonNumericValueError;d.variableDoesNotHoldAValueError=this.variableDoesNotHoldAValueError;d.reportError=this.reportError;d.register=this.register;d.symbols=c.getSymbols();d.encoding="ec";d.popups=[];d.stack=[];d.queue=[0];d.module=g;d.parent=h;g&&(g.program=d);return d},tokeniseFile:function(a){var b=[],c=[],d=0;a.forEach(function(a,e){b.push({lino:e+1,line:a});for(var f= 99 a.length,l="",g=!0,h=0;h<f;h++){var k=a[h];if(0==k.trim().length)g||(c.push({index:d,lino:e+1,token:l}),d++,l="",g=!0);else if(g=!1,"`"===k){for(m=h;++h<a.length&&"`"!==a[h];);l=a.substr(m,h-m+1)}else if("!"==k)break;else l+=k}0<l.length&&c.push({index:d,lino:e+1,token:l})});return{scriptLines:b,tokens:c}},tokeniseAndCompile:function(b,c,d,e,g){var l=null,h=Date.now();b=f.tokeniseFile(b);try{l=f.compileScript(b,c,d,e);var k=l.script?l.script:"<anon>",q=Date.now();console.log(q-f.timestamp+" ms: "+ 100 ("Compiled "+k+": "+b.scriptLines.length+" lines ("+b.tokens.length+" tokens) in ")+(q-h+" ms"))}catch(w){"stop"!==w.message&&(c=f.program,this.reportError(w,c,b),c.onError&&c.run(c.onError))}l&&(l.onExit=g,a.run(l,0))},tokenise:function(a){var b=a.split("\n");if(!g.tokenising){try{f.tokeniseAndCompile(b)}catch(n){f.reportError(n,null,a)}g.tokenising=!0}},setPluginCount:function(a){g.plugins=[];g.pluginCount=a},checkPlugin:function(a){return f.domain[a]},getPlugin:function(a,b,c){f.domain[a]?c(): 101 (a=document.createElement("script"),a.type="text/javascript",a.src=b+"?ver="+f.version,a.onload=function(){console.log(Date.now()-f.timestamp+" ms: Plugin "+b+" loaded");c()},document.head.appendChild(a))},addGlobalPlugin:function(a,b){g.plugins.push({name:a,handler:b});g.plugins.length===g.pluginCount&&(g.plugins.forEach(function(a){f.domain[a.name]=a.handler}),f.tokenise(g.source))},addLocalPlugin:function(a,b,c){f.domain[a]=b;c()},getPluginsPath:function(){return f.pluginsPath},loadPluginJs:function(a){console.log(Date.now()- 102 f.timestamp+" ms: Load "+a+"/easycoder/plugins.js");var b=document.createElement("script");b.src=""+window.location.origin+a+"/easycoder/plugins.js?ver="+f.version;b.type="text/javascript";b.onload=function(){EasyCoder_Plugins.getGlobalPlugins(f.timestamp,a,f.setPluginCount,f.getPlugin,f.addGlobalPlugin)};b.onerror=function(){a?f.loadPluginJs(a.slice(0,a.lastIndexOf("/"))):f.reportError({message:"Can't load plugins.js"},f.program,g.source)};document.head.appendChild(b);f.pluginsPath=a},start:function(a){g.source= 103 a;a=window.location.pathname;a=a.endsWith("/")?a.slice(0,-1):"";"undefined"===typeof EasyCoder_Plugins?f.loadPluginJs(a):(f.pluginsPath=a,EasyCoder_Plugins.getGlobalPlugins(f.timestamp,a,f.setPluginCount,f.getPlugin,f.addGlobalPlugin))}};k.exports=f},{"./Compare":2,"./Compile":3,"./Condition":4,"./Core":5,"./Run":7,"./Value":8}],7:[function(d,k,h){var g={run:function(c,a){var b=[],d=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 0}; 104 if(b.length)b.push(a);else for(c.register(c),b.push(a);0<b.length;)for(c.pc=b.shift(),c.watchdog=0,a={};;){if(1E6<c.watchdog){c.lino=c[c.pc].lino;c.reportError(Error("Program runaway intercepted.\nHave you forgotten to increment a loop counter?",c),c);break}c.watchdog++;var h=c[c.pc].domain;c.debugStep&&console.log(c.script+": Line "+c[c.pc].lino+": PC: "+c.pc+" "+h+":"+c[c.pc].keyword);var f=c.domain[h];if(!f){c.runtimeError(c[c.pc].lino,"Unknown domain '"+h+"'");break}c.pc=f.run(c);if(!c.pc)break; 105 if(c.stop){c.tracing=!1;break}if(c.tracing){h=c[c.pc];f=c.source.scriptLines;var l=d(f),k=document.getElementById("easycoder-tracer");if(!k){c.runtimeError(h.lino,"Element 'easycoder-tracer' was not found");return}k.style.display="block";k.style.visibility="visible";var n="";if(c.tracer){if(k=document.getElementById("easycoder-tracer-content")){c.tracer.variables.forEach(function(a,b,d){var e=c.getSymbolRecord(a);if(1<e.elements)for(n+=a+": "+e.index+"/"+e.elements+": ",a=0;a<e.elements;a++){var f= 106 e.value[a];n=f?n+(f.content+" "):n+"undefined "}else n=(e=e.value[e.index])?n+(a+": "+e.content):n+(a+": undefined");switch(c.tracer.alignment){case "horizontal":b<d.length-1&&(n+=", ");break;case "vertical":n+="<br>"}});n+="<hr>";for(var t="",r=5;0<r;r--){if(h.lino){var u=f[h.lino-r].line.substr(l);t+='<input type="text" name="'+r+'"'+('value="'+(h.lino-r+1)+": "+u.split("\\s").join(" ")+'"')+'style="width:100%;border:none;enabled:false">'}t+="<br>"}k.innerHTML=n+" "+t;k.style.display="block";a.run= 107 document.getElementById("easycoder-run-button");a.step=document.getElementById("easycoder-step-button");a.run.onclick=function(a){return function(){a.run.blur();c.tracing=!1;document.getElementById("easycoder-tracer-content").style.display="none";try{g.run(c,c.resume)}catch(v){var b="Error in run handler: "+v.message;console.log(b);alert(b)}}}(a);a.step.onclick=function(a){return function(){console.log("step");a.step.blur();c.tracing=!0;document.getElementById("easycoder-tracer-content").style.display= 108 "block";try{c.run(c.resume)}catch(v){var b="Error in step handler: "+v.message;console.log(b);alert(b)}}}(a)}c.resume=c.pc;c.pc=0}break}a={run:a.run,step:a.step}}},exit:function(c){c.onExit&&(c.parent.run(c.onExit),c.module.program=null)}};k.exports=g},{}],8:[function(d,k,h){var g={getItem:function(c){var a=c.getToken();if(!a)return null;if("true"===a)return c.next(),{type:"boolean",content:!0};if("false"===a)return c.next(),{type:"boolean",content:!1};if("`"===a.charAt(0))return c.next(),{type:"constant", 109 numeric:!1,content:a.substring(1,a.length-1)};if(a.charAt(0).match(/[0-9-]/)){var b=eval(a);if(Number.isInteger(b))return c.next(),{type:"constant",numeric:!0,content:b};throw Error("'"+a+"' is not an integer");}a=c.getIndex();b=$jscomp.makeIterator(Object.keys(c.domain));for(var d=b.next();!d.done;d=b.next())if(d=d.value,c.rewindTo(a),d=c.domain[d].value.compile(c))return d;return null},compile:function(c){var a=c.getToken(),b=g.getItem(c);if(!b)throw Error("Undefined value: '"+a+"'");if("cat"=== 110 c.getToken()){for(a={type:"cat",numeric:!1,parts:[b]};c.tokenIs("cat");)c.next(),a.parts.push(c.value.getItem(c));return a}return b},doValue:function(c,a){if("undefined"===typeof a.type)return c.runtimeError(c[c.pc].lino,"Undefined value (variable not initialized?)"),null;switch(a.type){case "cat":return{type:"constant",numeric:!1,content:a.parts.reduce(function(a,b){return a+g.doValue(c,b).content},"")};case "boolean":case "constant":return a;case "symbol":var b=c.getSymbolRecord(a.name);if(b.isValueHolder){if(a= 111 b.value[b.index]){b=a.content;if(null===b||"undefined"===typeof b)a.content=a.numeric?0:"";return a}return null}return c.domain[b.domain].value.get(c,a)}return c.domain[a.domain].value.get(c,a)},constant:function(c,a){return{type:"constant",numeric:a,content:c}},evaluate:function(c,a){if(!a)return{type:"constant",numeric:!1,content:""};var b=g.doValue(c,a);if(b)return b;c.runtimeError(c[c.pc].lino,"Can't decode value: "+a)},getValue:function(c,a){return g.evaluate(c,a).content},encode:function(c, 112 a){if(c)switch(a){case "ec":return c.replace(/'/g,"~sq~").replace(/"/g,"~dq~").replace(/\n/g,"%0a").replace(/\r/g,"%0d");case "url":return encodeURIComponent(c.replace(/\s/g,"+"));case "sanitize":return c.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}return c},decode:function(c,a){if(c)switch(a){case "ec":return c.replace(/~dq~/g,'"').replace(/~sq~/g,"'").replace(/%0a/g,"\n").replace(/%0d/g,"\r");case "url":return decodeURIComponent(c).replace(/\+/g," ")}return c}};k.exports=g},{}]},{},[1]); -
easycoder/trunk/easycoder.js
r2145506 r2148361 4 4 const EasyCoder = require(`./easycoder/Main`); 5 5 6 EasyCoder.version = `2.5. 0`;6 EasyCoder.version = `2.5.1`; 7 7 EasyCoder.timestamp = Date.now(); 8 8 console.log(`EasyCoder loaded; waiting for page`); … … 1437 1437 switch (action) { 1438 1438 case `close`: 1439 case `restore`:1440 1439 case `message`: 1441 1440 case `error`: … … 1471 1470 case `close`: 1472 1471 program.onClose = cb; 1473 break;1474 case `restore`:1475 program.onRestore = cb;1476 1472 break; 1477 1473 case `message`: … … 1773 1769 // const lino = compiler.getLino(); 1774 1770 // const name = compiler.nextToken(); 1775 compiler.getProgram().script = compiler.nextToken(); 1771 const program = compiler.getProgram(); 1772 program.script = compiler.nextToken(); 1773 EasyCoder.scripts[program.script] = program; 1776 1774 compiler.next(); 1777 1775 // compiler.addCommand({ … … 3753 3751 pathname = ``; 3754 3752 } 3755 EasyCoder.loadPluginJs(pathname); 3753 if (typeof EasyCoder_Plugins === `undefined`) { 3754 EasyCoder.loadPluginJs(pathname); 3755 } else { 3756 EasyCoder.pluginsPath = pathname; 3757 EasyCoder_Plugins.getGlobalPlugins(EasyCoder.timestamp, pathname, EasyCoder.setPluginCount, EasyCoder.getPlugin, EasyCoder.addGlobalPlugin); 3758 } 3756 3759 } 3757 3760 }; -
easycoder/trunk/easycoder.php
r2145506 r2148361 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. 06 * Version: 2.5.1 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. 0');19 . 'easycoder-min.js', array(), '2.5.1'); 20 20 } 21 21 -
easycoder/trunk/plugins/browser.js
r2145506 r2148361 1001 1001 return compiler.completeHandler(); 1002 1002 case `browser`: 1003 if (compiler.nextTokenIs(`back`)) { 1004 compiler.next(); 1005 compiler.addCommand({ 1006 domain: `browser`, 1007 keyword: `on`, 1008 lino, 1009 action: `browserBack` 1010 }); 1011 return compiler.completeHandler(); 1012 } 1013 return false; 1003 case `restore`: 1004 if (action === `browser` && !compiler.nextTokenIs(`back`)) { 1005 return false; 1006 } 1007 compiler.next(); 1008 compiler.addCommand({ 1009 domain: `browser`, 1010 keyword: `on`, 1011 lino, 1012 action: `browserBack` 1013 }); 1014 return compiler.completeHandler(); 1014 1015 case `swipe`: 1015 1016 if ([`left`, `right`].includes(compiler.nextToken())) { … … 2985 2986 const program = window.EasyCoder.scripts[state.script]; 2986 2987 if (program) { 2987 if (program.on Restore) {2988 program.run(program.on Restore);2988 if (program.onBrowserBack) { 2989 program.run(program.onBrowserBack); 2989 2990 } 2990 2991 } else { -
easycoder/trunk/plugins/rest.js
r2107932 r2148361 82 82 }, 83 83 84 createCORSRequest: (method, url) => { 85 var xhr = new XMLHttpRequest(); 86 if (`withCredentials` in xhr) { 87 88 // Check if the XMLHttpRequest object has a "withCredentials" property. 89 // "withCredentials" only exists on XMLHTTPRequest2 objects. 90 xhr.open(method, url, true); 91 92 } else if (typeof XDomainRequest != `undefined`) { 93 94 // Otherwise, check if XDomainRequest. 95 // XDomainRequest only exists in IE, and is IE's way of making CORS requests. 96 xhr = new XDomainRequest(); 97 xhr.open(method, url); 98 99 } else { 100 101 // Otherwise, CORS is not supported by the browser. 102 xhr = null; 103 104 } 105 return xhr; 106 }, 107 84 108 run: (program) => { 85 109 const command = program[program.pc]; 86 110 const url = program.getValue(command.url); 87 const request = new XMLHttpRequest(); 111 const path = url.startsWith(`http`) ? url : `${window.location.origin}/${EasyCoder_Plugins.rest()}/${url}`; 112 113 const request = EasyCoder_Rest.Rest.createCORSRequest(command.request, url); 114 if (!request) { 115 program.runtimeError(command.lino, `CORS not supported`); 116 return; 117 } 88 118 request.command = command; 89 119 … … 114 144 }; 115 145 116 const path = url.startsWith(`http`) ? url : `${window.location.origin}/${EasyCoder_Plugins.rest()}/${url}`;117 146 switch (command.request) { 118 147 case `get`: -
easycoder/trunk/readme.txt
r2145506 r2148361 53 53 54 54 == Changelog == 55 56 = 2.5.1 30-aug-2019 = 57 * CORS, bug fixes 55 58 56 59 = 2.5.0 26-aug-2019 =
Note: See TracChangeset
for help on using the changeset viewer.