diff --git a/aesl_compressed.js b/aesl_compressed.js index ffb089d0086..729cd778673 100644 --- a/aesl_compressed.js +++ b/aesl_compressed.js @@ -5,11 +5,33 @@ Blockly.AESL=new Blockly.Generator("AESL");Blockly.AESL.INDENT="\t";Blockly.AESL Blockly.AESL.ORDER_BINARY_AND=7;Blockly.AESL.ORDER_BINARY_XOR=8;Blockly.AESL.ORDER_BINARY_OR=9;Blockly.AESL.ORDER_CONDITION=10;Blockly.AESL.ORDER_LOGICAL_NOT=11;Blockly.AESL.ORDER_LOGICAL_AND=12;Blockly.AESL.ORDER_LOGICAL_OR=13;Blockly.AESL.ORDER_ASSIGNMENT=14;Blockly.AESL.ORDER_INCREMENT=15;Blockly.AESL.ORDER_NONE=99; Blockly.AESL.init=function(a){Blockly.AESL.definitions_=Object.create(null);Blockly.AESL.functionNames_=Object.create(null);Blockly.AESL.variableDB_?Blockly.AESL.variableDB_.reset():Blockly.AESL.variableDB_=new Blockly.Names(Blockly.AESL.RESERVED_WORDS_);Blockly.AESL.subroutines=[];Blockly.AESL.arrays=[]}; Blockly.AESL.finish=function(a){if("undefined"!==typeof workspace)for(var b=Blockly.Variables.allVariables(workspace),c=0;ca.outputConnection.check_.indexOf("Number"))return!1}else if("variables_get"!=a.type)return!1;return!0};Blockly.AESL.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/'/g,"\\'");return"'"+a+"'"}; -Blockly.AESL.scrub_=function(a,b){var c="";if(!a.outputConnection||!a.outputConnection.targetConnection){var d=a.getCommentText();d&&(c+=Blockly.AESL.prefixLines(d,"# ")+"\n");for(var e=0;e",GTE:">="}[a.getFieldValue("OP")],c=Blockly.AESL.ORDER_CONDITION,d=Blockly.AESL.valueToCode(a,"A",c)||"0";a=Blockly.AESL.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; +Blockly.AESL.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"and":"or",c="and"==b?Blockly.AESL.ORDER_LOGICAL_AND:Blockly.AESL.ORDER_LOGICAL_OR,d=Blockly.AESL.valueToCode(a,"A",c);a=Blockly.AESL.valueToCode(a,"B",c);if(d||a){if(!d)return[a,c];if(!a)return[d,c]}else return["0 == 1",Blockly.AESL.ORDER_CONDITION];return[d+" "+b+" "+a,c]};Blockly.AESL.logic_negate=function(a){var b=Blockly.AESL.ORDER_LOGICAL_NOT;return["not "+(Blockly.AESL.valueToCode(a,"BOOL",b)||"0 == 0"),b]}; +Blockly.AESL.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"0 == 0":"0 == 1",Blockly.AESL.ORDER_CONDITION]};Blockly.AESL.thymio={};function hexToRgb(a){return(a=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(a))?{r:parseInt(a[1],16),g:parseInt(a[2],16),b:parseInt(a[3],16)}:null}function rgbToAesl(a){return a?{r:Math.round(a.r/8),g:Math.round(a.g/8),b:Math.round(a.b/8)}:null}function hexToAesl(a){return rgbToAesl(hexToRgb(a))}Blockly.AESL.thymio_when=function(a){var b=Blockly.AESL.valueToCode(a,"WHEN",Blockly.AESL.ORDER_NONE);a=Blockly.AESL.statementToCode(a,"DO");return"when "+b+" do\n"+a+"end\n"}; Blockly.AESL.thymio_for=function(a){var b=Blockly.AESL.variableDB_.getName(a.getFieldValue("ITER"),Blockly.Variables.NAME_TYPE),c=parseInt(a.getFieldValue("FROM")),d=parseInt(a.getFieldValue("TO"));a=Blockly.AESL.statementToCode(a,"DO");return"for "+b+" in "+c+":"+d+" do\n"+a+"end\n"}; Blockly.AESL.thymio_subroutine_define=function(a){var b=Blockly.AESL.variableDB_.getName(a.getFieldValue("NAME"),Blockly.Procedures.NAME_TYPE);a=Blockly.AESL.statementToCode(a,"STACK");if(-1!=a.indexOf("\tcallsub "))return Blockly.AESL.addSubroutine(b,""),null;Blockly.AESL.addSubroutine(b,a);return null};Blockly.AESL.thymio_event=function(a){var b=a.getFieldValue("EVENT");a=Blockly.AESL.statementToCode(a,"HANDLER");Blockly.AESL.addEventHandler(b,a);return null}; Blockly.AESL.thymio_event_button=function(a){var b=a.getFieldValue("BUTTON"),c=a.getFieldValue("MODE");a=Blockly.AESL.statementToCode(a,"HANDLER");c="\twhen "+b+" == "+("PRESS"==c?"1":"0")+" do\n";0",GTE:">="}[a.getFieldValue("OP")],c=Blockly.AESL.ORDER_CONDITION,d=Blockly.AESL.valueToCode(a,"A",c)||"0";a=Blockly.AESL.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; Blockly.AESL.thymio_arithmetic=function(a){var b=a.getFieldValue("OP"),c=Blockly.AESL.ORDER_MULT;if("+"==b||"-"==b)c=Blockly.AESL.ORDER_ADD;var d=Blockly.AESL.valueToCode(a,"A",c)||"0";a=Blockly.AESL.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; Blockly.AESL.thymio_binary=function(a){var b=a.getFieldValue("OP"),c;"<<"==b||">>"==b?c=Blockly.AESL.ORDER_SHIFT:"&"==b?c=Blockly.AESL.ORDER_BINARY_AND:"|"==b?c=Blockly.AESL.ORDER_BINARY_OR:"^"==b&&(c=Blockly.AESL.ORDER_BINARY_XOR);var d=Blockly.AESL.valueToCode(a,"A",c)||"0";a=Blockly.AESL.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -Blockly.AESL.thymio_unary=function(a){var b=a.getFieldValue("OP"),c;"-"==b?c=Blockly.AESL.ORDER_MINUS:"abs"==b?c=Blockly.AESL.ORDER_ABS:"~"==b&&(c=Blockly.AESL.ORDER_BINARY_NOT);a=Blockly.AESL.valueToCode(a,"VALUE",c)||"0";return[b+("abs"==b?" ":"")+a,c]};Blockly.AESL.thymio_communication=function(a){return"ENABLE"==a.getFieldValue("MODE")?"call prox.comm.enable(1)\n":"call prox.comm.enable(0)\n"};Blockly.AESL.logic={};Blockly.AESL.controls_if=function(a){for(var b=0,c=Blockly.AESL.valueToCode(a,"IF"+b,Blockly.AESL.ORDER_NONE)||"0 == 1",d=Blockly.AESL.statementToCode(a,"DO"+b),e="if "+c+" then\n"+d,b=1;b<=a.elseifCount_;b++)c=Blockly.AESL.valueToCode(a,"IF"+b,Blockly.AESL.ORDER_NONE)||"0 == 1",d=Blockly.AESL.statementToCode(a,"DO"+b),e+="elseif "+c+" then\n"+d;a.elseCount_&&(d=Blockly.AESL.statementToCode(a,"ELSE"),e+="else\n"+d);return e+"end\n"}; -Blockly.AESL.logic_compare=function(a){var b=this.getInputTargetBlock("A"),c=this.getInputTargetBlock("B");if(!Blockly.AESL.checkValueBlockType(b)||!Blockly.AESL.checkValueBlockType(c))return["0 == 1",Blockly.AESL.ORDER_CONDITION];var b={EQ:"==",NEQ:"!=",LT:"<",LTE:"<=",GT:">",GTE:">="}[a.getFieldValue("OP")],c=Blockly.AESL.ORDER_CONDITION,d=Blockly.AESL.valueToCode(a,"A",c)||"0";a=Blockly.AESL.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; -Blockly.AESL.logic_operation=function(a){var b="AND"==a.getFieldValue("OP")?"and":"or",c="and"==b?Blockly.AESL.ORDER_LOGICAL_AND:Blockly.AESL.ORDER_LOGICAL_OR,d=Blockly.AESL.valueToCode(a,"A",c);a=Blockly.AESL.valueToCode(a,"B",c);if(d||a){if(!d)return[a,c];if(!a)return[d,c]}else return["0 == 1",Blockly.AESL.ORDER_CONDITION];return[d+" "+b+" "+a,c]};Blockly.AESL.logic_negate=function(a){var b=Blockly.AESL.ORDER_LOGICAL_NOT;return["not "+(Blockly.AESL.valueToCode(a,"BOOL",b)||"0 == 0"),b]}; -Blockly.AESL.logic_boolean=function(a){return["TRUE"==a.getFieldValue("BOOL")?"0 == 0":"0 == 1",Blockly.AESL.ORDER_CONDITION]};Blockly.AESL.math={};Blockly.AESL.math_number=function(a){return[parseInt(a.getFieldValue("NUM")),Blockly.AESL.ORDER_ATOMIC]}; -Blockly.AESL.math_arithmetic=function(a){var b={ADD:[" + ",Blockly.AESL.ORDER_ADD],MINUS:[" - ",Blockly.AESL.ORDER_ADD],MULTIPLY:[" * ",Blockly.AESL.ORDER_MULT],DIVIDE:[" / ",Blockly.AESL.ORDER_MULT],POWER:[null,Blockly.AESL.ORDER_MULT]}[a.getFieldValue("OP")],c=b[0],b=b[1],d=Blockly.AESL.valueToCode(a,"A",b)||"0";a=Blockly.AESL.valueToCode(a,"B",b)||"0";return c?[d+c+a,b]:[d,Blockly.AESL.ORDER_MULT]};Blockly.AESL.loops={};Blockly.AESL.controls_repeat=function(a){var b=String(Number(a.getFieldValue("TIMES")));a=Blockly.AESL.statementToCode(a,"DO");return"for "+Blockly.AESL.variableDB_.getDistinctName("i",Blockly.Variables.NAME_TYPE)+" in 1:"+b+" do\n"+a+"end\n"}; +Blockly.AESL.thymio_unary=function(a){var b=a.getFieldValue("OP"),c;"-"==b?c=Blockly.AESL.ORDER_MINUS:"abs"==b?c=Blockly.AESL.ORDER_ABS:"~"==b&&(c=Blockly.AESL.ORDER_BINARY_NOT);a=Blockly.AESL.valueToCode(a,"VALUE",c)||"0";return[b+("abs"==b?" ":"")+a,c]};Blockly.AESL.thymio_communication=function(a){return"ENABLE"==a.getFieldValue("MODE")?"call prox.comm.enable(1)\n":"call prox.comm.enable(0)\n"};Blockly.AESL.procedures={};Blockly.AESL.procedures_defnoreturn=function(a){var b=Blockly.AESL.variableDB_.getName(a.getFieldValue("NAME"),Blockly.Procedures.NAME_TYPE);a=Blockly.AESL.statementToCode(a,"STACK");if(-1!=a.indexOf("\tcallsub "))return Blockly.AESL.addSubroutine(b,""),null;Blockly.AESL.addSubroutine(b,a);return null};Blockly.AESL.procedures_callnoreturn=function(a){return"callsub "+Blockly.AESL.variableDB_.getName(a.getFieldValue("NAME"),Blockly.Procedures.NAME_TYPE)+"\n"};Blockly.AESL.loops={};Blockly.AESL.controls_repeat=function(a){var b=String(Number(a.getFieldValue("TIMES")));a=Blockly.AESL.statementToCode(a,"DO");return"for "+Blockly.AESL.variableDB_.getDistinctName("i",Blockly.Variables.NAME_TYPE)+" in 1:"+b+" do\n"+a+"end\n"}; Blockly.AESL.controls_whileUntil=function(a){var b="UNTIL"==a.getFieldValue("MODE"),c=Blockly.AESL.valueToCode(a,"BOOL",b?Blockly.AESL.ORDER_LOGICAL_NOT:Blockly.AESL.ORDER_NONE)||"0 == 1";a=Blockly.AESL.statementToCode(a,"DO");b&&(c="not "+c);return"while "+c+" do\n"+a+"end\n"}; \ No newline at end of file diff --git a/blockly_compressed.js b/blockly_compressed.js index 6f9862716e5..8ba3b2a2e9b 100644 --- a/blockly_compressed.js +++ b/blockly_compressed.js @@ -20,10 +20,10 @@ c.substr(d-7,7)){goog.basePath=c.substr(0,d-7);break}}},goog.importScript_=funct a))},goog.isDeferredModule_=function(a){var b=(a=goog.getPathFromDeps_(a))&&goog.dependencies_.loadFlags[a]||{},c=b.lang||"es3";return a&&("goog"==b.module||goog.needsTranspile_(c))?goog.basePath+a in goog.dependencies_.deferred:!1},goog.allDepsAreAvailable_=function(a){if((a=goog.getPathFromDeps_(a))&&a in goog.dependencies_.requires)for(var b in goog.dependencies_.requires[a])if(!goog.isProvided_(b)&&!goog.isDeferredModule_(b))return!1;return!0},goog.maybeProcessDeferredPath_=function(a){if(a in goog.dependencies_.deferred){var b=goog.dependencies_.deferred[a];delete goog.dependencies_.deferred[a];goog.globalEval(b)}},goog.loadModuleFromUrl=function(a){goog.retrieveAndExec_(a,!0,!1)},goog.writeScriptSrcNode_=function(a){goog.global.document.write(' + + + + + + + + + @@ -23,6 +27,10 @@ + + + +