// Do not edit this file; automatically generated by build.py. "use strict"; Blockly.Lua=new Blockly.Generator("Lua");Blockly.Lua.addReservedWords("___inext,assert,bit,colors,colours,coroutine,disk,dofile,error,fs,fetfenv,getmetatable,gps,help,io,ipairs,keys,loadfile,loadstring,math,native,next,os,paintutils,pairs,parallel,pcall,peripheral,print,printError,rawequal,rawget,rawset,read,rednet,redstone,rs,select,setfenv,setmetatable,sleep,string,table,term,textutils,tonumber,tostring,turtle,type,unpack,vector,write,xpcall,_VERSION,__indext,HTTP,and,break,do,else,elseif,end,false,for,function,if,in,local,nil,not,or,repeat,return,then,true,until,while,add,sub,mul,div,mod,pow,unm,concat,len,eq,lt,le,index,newindex,call,assert,collectgarbage,dofile,error,_G,getmetatable,inpairs,load,loadfile,next,pairs,pcall,print,rawequal,rawget,rawlen,rawset,select,setmetatable,tonumber,tostring,type,_VERSION,xpcall,require,package,string,table,math,bit32,io,file,os,debug"); Blockly.Lua.ORDER_ATOMIC=0;Blockly.Lua.ORDER_HIGH=1;Blockly.Lua.ORDER_EXPONENTIATION=2;Blockly.Lua.ORDER_UNARY=3;Blockly.Lua.ORDER_MULTIPLICATIVE=4;Blockly.Lua.ORDER_ADDITIVE=5;Blockly.Lua.CONCATENATION=6;Blockly.Lua.ORDER_RELATIONAL=7;Blockly.Lua.ORDER_AND=8;Blockly.Lua.ORDER_OR=9;Blockly.Lua.ORDER_NONE=10;Blockly.Lua.INFINITE_LOOP_TRAP=null;Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_="{{{}}}";Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_REGEXP_=RegExp(Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_,"g"); Blockly.Names.PREFIX_="var";Blockly.Lua.init=function(){Blockly.Lua.definitions_={};Blockly.Lua.functionNames_={};Blockly.Variables&&(Blockly.Lua.variableDB_?Blockly.Lua.variableDB_.reset():Blockly.Lua.variableDB_=new Blockly.Names(Blockly.Lua.RESERVED_WORDS_))};Blockly.Lua.SENSOR_REGEXP_=/\Wsensor\./;Blockly.Lua.finish=function(a){var b=[],c;for(c in Blockly.Lua.definitions_)b.push(Blockly.Lua.definitions_[c]);return b.join("\n\n").replace(/\n\n+/g,"\n\n").replace(/\n*$/,"\n\n\n")+a}; Blockly.Lua.scrubNakedValue=function(a){return a+"\n"};Blockly.Lua.quote_=function(a){a=a.replace(/\\/g,"\\\\").replace(/\n/g,"\\\n").replace(/\%/g,"\\%").replace(/'/g,"\\'");return"'"+a+"'"}; Blockly.Lua.scrub_=function(a,b){if(null===b)return"";var c="";if(!a.outputConnection||!a.outputConnection.targetConnection){var d=a.getCommentText();d&&(c+=this.prefixLines(d,"# ")+"\n");for(var e=0;e",GTE:">="}[a.getTitleValue("OP")],c=Blockly.Lua.ORDER_RELATIONAL,d=Blockly.Lua.valueToCode(a,"A",c)||"0";a=Blockly.Lua.valueToCode(a,"B",c)||"0";return[d+" "+b+" "+a,c]}; Blockly.Lua.logic_operation=function(a){var b="AND"==a.getTitleValue("OP")?"and":"or",c="and"==b?Blockly.Lua.ORDER_AND:Blockly.Lua.ORDER_OR,d=Blockly.Lua.valueToCode(a,"A",c);a=Blockly.Lua.valueToCode(a,"B",c);if(d||a){var e="and"==b?"true":"false";d||(d=e);a||(a=e)}else a=d="false";return[d+" "+b+" "+a,c]};Blockly.Lua.logic_negate=function(a){return["not "+(Blockly.Lua.valueToCode(a,"BOOL",Blockly.Lua.ORDER_UNARY)||"true"),Blockly.Lua.ORDER_UNARY]}; Blockly.Lua.logic_boolean=function(a){return["TRUE"==a.getTitleValue("BOOL")?"true":"false",Blockly.Lua.ORDER_ATOMIC]};Blockly.Lua.logic_null=function(a){return["nil",Blockly.Lua.ORDER_ATOMIC]};Blockly.Lua.logic_ternary=function(a){var b=Blockly.Lua.valueToCode(a,"IF",Blockly.Lua.ORDER_AND)||"false",c=Blockly.Lua.valueToCode(a,"THEN",Blockly.Lua.ORDER_OR)||"nil";a=Blockly.Lua.valueToCode(a,"ELSE",Blockly.Lua.ORDER_OR)||"nil";return[b+" and "+c+" or "+a,Blockly.Lua.ORDER_OR]};Blockly.Lua.loops={};Blockly.Lua.controls_repeat=function(a){var b=parseInt(a.getTitleValue("TIMES"),10);a=Blockly.Lua.statementToCode(a,"DO")||"";return"for "+Blockly.Lua.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE)+"= 1, "+b+" do\n"+a+"end"}; Blockly.Lua.controls_repeat_ext=function(a){var b=Blockly.Lua.valueToCode(a,"TIMES",Blockly.Lua.ORDER_NONE)||"0",b=Blockly.isNumber(b)?parseInt(b,10):"math.floor("+b+")";a=Blockly.Lua.statementToCode(a,"DO")||"\n";return"for "+Blockly.Lua.variableDB_.getDistinctName("count",Blockly.Variables.NAME_TYPE)+" = 1, "+b+" do\n"+a+"end\n"}; Blockly.Lua.controls_whileUntil=function(a){var b="UNTIL"==a.getTitleValue("MODE"),b=Blockly.Lua.valueToCode(a,"BOOL",b?Blockly.Lua.ORDER_UNARY:Blockly.Lua.ORDER_NONE)||"False",c=Blockly.Lua.statementToCode(a,"DO")||"\n";"UNTIL"==a.getTitleValue("MODE")&&(b.match(/^\w+$/)||(b="("+b+")"),b="not "+b);return"while "+b+" do\n"+c+"end\n"}; Blockly.Lua.controls_for=function(a){var b=Blockly.Lua.variableDB_.getName(a.getTitleValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.Lua.valueToCode(a,"FROM",Blockly.Lua.ORDER_NONE)||"0",d=Blockly.Lua.valueToCode(a,"TO",Blockly.Lua.ORDER_NONE)||"0",e=Blockly.Lua.valueToCode(a,"BY",Blockly.Lua.ORDER_NONE)||"1";a=Blockly.Lua.statementToCode(a,"DO")||"\n";b="for "+b+" = "+c+", "+d;Blockly.isNumber(e)&&1==Math.abs(parseFloat(e))||(b+=", "+e);return b+(" do\n"+a+"end\n")}; Blockly.Lua.controls_forEach=function(a){var b=Blockly.Lua.variableDB_.getName(a.getTitleValue("VAR"),Blockly.Variables.NAME_TYPE),c=Blockly.Lua.valueToCode(a,"LIST",Blockly.Lua.ORDER_RELATIONAL)||"[]";a=Blockly.Lua.statementToCode(a,"DO")||"\n";return"for _, "+b+" in ipairs("+c+") do \n"+a+"end\n"};Blockly.Lua.controls_flow_statements=function(a){return"break\n"};Blockly.Lua.math={};Blockly.Lua.math_number=function(a){a=parseFloat(a.getTitleValue("NUM"));return[a,0>a?Blockly.Lua.ORDER_UNARY:Blockly.Lua.ORDER_ATOMIC]}; Blockly.Lua.math_arithmetic=function(a){var b={ADD:[" + ",Blockly.Lua.ORDER_ADDITIVE],MINUS:[" - ",Blockly.Lua.ORDER_ADDITIVE],MULTIPLY:[" * ",Blockly.Lua.ORDER_MULTIPLICATIVE],DIVIDE:[" / ",Blockly.Lua.ORDER_MULTIPLICATIVE],POWER:[" ^ ",Blockly.Lua.ORDER_EXPONENTIATION]}[a.getTitleValue("OP")],c=b[0],b=b[1],d=Blockly.Lua.valueToCode(a,"A",b)||"0";a=Blockly.Lua.valueToCode(a,"B",b)||"0";return[d+c+a,b]}; Blockly.Lua.math_single=function(a){var b=a.getTitleValue("OP");if("NEG"==b)return b=Blockly.Lua.valueToCode(a,"NUM",Blockly.Lua.ORDER_UNARY)||"0",["-"+b,Blockly.Lua.ORDER_UNARY];a="SIN"==b||"COS"==b||"TAN"==b?Blockly.Lua.valueToCode(a,"NUM",Blockly.Lua.ORDER_MULTIPLICATIVE)||"0":Blockly.Lua.valueToCode(a,"NUM",Blockly.Lua.ORDER_NONE)||"0";switch(b){case "ABS":b="math.abs("+a+")";break;case "ROOT":b="math.sqrt("+a+")";break;case "LN":b="math.log("+a+")";break;case "LOG10":b="math.log10("+a+")";break; case "EXP":b="math.exp("+a+")";break;case "POW10":b="math.pow(10,"+a+")";break;case "ROUND":b="math.floor("+a+" + .5)";break;case "ROUNDUP":b="math.ceil("+a+")";break;case "ROUNDDOWN":b="math.floor("+a+")";break;case "SIN":b="math.sin(math.rad("+a+"))";break;case "COS":b="math.cos(math.rad("+a+"))";break;case "TAN":b="math.tan(math.rad("+a+"))";break;case "ASIN":b="math.deg(math.asin("+a+"))";break;case "ACOS":b="math.deg(math.acos("+a+"))";break;case "ATAN":b="math.deg(math.atan("+a+"))";break;default:throw"Unknown math operator: "+ b;}if(b)return[b,Blockly.Lua.ORDER_HIGH]};Blockly.Lua.math_constant=function(a){var b={PI:["math.pi",Blockly.Lua.ORDER_HIGH],E:["math.exp(1)",Blockly.Lua.ORDER_HIGH],GOLDEN_RATIO:["(1 + math.sqrt(5)) / 2",Blockly.Lua.ORDER_MULTIPLICATIVE],SQRT2:["math.sqrt(2)",Blockly.Lua.ORDER_HIGH],SQRT1_2:["math.sqrt(1 / 2)",Blockly.Lua.ORDER_HIGH],INFINITY:["math.huge",Blockly.Lua.ORDER_HIGH]};a=a.getTitleValue("CONSTANT");return b[a]}; Blockly.Lua.math_number_property=function(a){var b=Blockly.Lua.valueToCode(a,"NUMBER_TO_CHECK",Blockly.Lua.ORDER_MULTIPLICATIVE)||"0",c=a.getTitleValue("PROPERTY"),d;if("PRIME"==c)return d=Blockly.Lua.provideFunction_("isPrime",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(x)"," -- http://stackoverflow.com/questions/11571752/lua-prime-number-checker"," if x < 2 then"," return false"," end"," -- Assume all numbers are prime until proven not-prime."," local prime = {}"," prime[1] = false", " for i = 2, x do"," prime[i] = true"," end"," -- For each prime we find, mark all multiples as not-prime."," for i = 2, math.sqrt(x) do"," if prime[i] then"," for j = i*i, x, i do"," prime[j] = false"," end"," end"," end"," return prime[x]","end"])+"("+b+")",[d,Blockly.Lua.ORDER_HIGH];switch(c){case "EVEN":d=b+" % 2 == 0";break;case "ODD":d=b+" % 2 == 1";break;case "WHOLE":d=b+" % 1 == 0";break;case "POSITIVE":d=b+" > 0";break;case "NEGATIVE":d=b+" < 0";break;case "DIVISIBLE_BY":a= Blockly.Lua.valueToCode(a,"DIVISOR",Blockly.Lua.ORDER_MULTIPLICATIVE);if(!a||"0"==a)return["nil",Blockly.Lua.ORDER_ATOMIC];d=b+" % "+a+" == 0"}return[d,Blockly.Lua.ORDER_RELATIONAL]};Blockly.Lua.math_change=function(a){var b=Blockly.Lua.valueToCode(a,"DELTA",Blockly.Lua.ORDER_ADDITIVE)||"0";a=Blockly.Lua.variableDB_.getName(a.getTitleValue("VAR"),Blockly.Variables.NAME_TYPE);return a+" = "+a+" + "+b+"\n"};Blockly.Lua.math_round=Blockly.Lua.math_single;Blockly.Lua.math_trig=Blockly.Lua.math_single; Blockly.Lua.math_on_list=function(a){function b(){return Blockly.Lua.provideFunction_("sum",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," local result = 0"," for k,v in ipairs(t) do"," result = result + v"," end"," return result","end"])}var c=a.getTitleValue("OP");a=Blockly.Lua.valueToCode(a,"LIST",Blockly.Lua.ORDER_NONE)||"{}";switch(c){case "RANDOM":return["#"+a+" == 0 and nil or "+a+"[math.random(#"+a+")]",Blockly.Lua.ORDER_HIGH];case "AVERAGE":return["#"+a+" == 0 and 0 or "+ b()+"("+a+") / #"+a,Blockly.Lua.ORDER_HIGH];case "SUM":c=b();break;case "MIN":c=Blockly.Lua.provideFunction_("min",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," local result = math.huge"," for k,v in ipairs(t) do"," if v < result then"," result = v"," end"," end"," return result","end"]);break;case "MAX":c=Blockly.Lua.provideFunction_("max",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," local result = 0"," for k,v in ipairs(t) do"," if v > result then", " result = v"," end"," end"," return result","end"]);break;case "MEDIAN":c=Blockly.Lua.provideFunction_("math_median",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," -- Source: http://lua-users.org/wiki/SimpleStats"," local temp={}"," for k,v in ipairs(t) do",' if type(v) == "number" then'," table.insert( temp, v )"," end"," end"," table.sort( temp )"," if math.fmod(#temp,2) == 0 then"," return ( temp[#temp/2] + temp[(#temp/2)+1] ) / 2"," else"," return temp[math.ceil(#temp/2)]", " end","end"]);break;case "MODE":c=Blockly.Lua.provideFunction_("math_modes",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," -- Source: http://lua-users.org/wiki/SimpleStats"," local counts={}"," for k, v in ipairs( t ) do"," if counts[v] == nil then"," counts[v] = 1"," else"," counts[v] = counts[v] + 1"," end"," end"," local biggestCount = 0"," for k, v in ipairs( counts ) do"," if v > biggestCount then"," biggestCount = v"," end"," end"," local temp={}", " for k,v in ipairs( counts ) do"," if v == biggestCount then"," table.insert( temp, k )"," end"," end"," return temp","end"]);break;case "STD_DEV":c=Blockly.Lua.provideFunction_("math_standard_deviation",["function "+Blockly.Lua.FUNCTION_NAME_PLACEHOLDER_+"(t)"," local m"," local vm"," local total = 0"," local count = 0"," local result"," m = #t == 0 and 0 or "+b()+"(t) / #t"," for k,v in ipairs(t) do"," if type(v) == 'number' then"," vm = v - m"," total = total + (vm * vm)", " count = count + 1"," end"," end"," result = math.sqrt(total / (count-1))"," return result","end"]);break;default:throw"Unknown operator: "+c;}return[c+"("+a+")",Blockly.Lua.ORDER_HIGH]};Blockly.Lua.math_modulo=function(a){var b=Blockly.Lua.valueToCode(a,"DIVIDEND",Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";a=Blockly.Lua.valueToCode(a,"DIVISOR",Blockly.Lua.ORDER_MULTIPLICATIVE)||"0";return[b+" % "+a,Blockly.Lua.ORDER_MULTIPLICATIVE]}; Blockly.Lua.math_constrain=function(a){var b=Blockly.Lua.valueToCode(a,"VALUE",Blockly.Lua.ORDER_NONE)||"0",c=Blockly.Lua.valueToCode(a,"LOW",Blockly.Lua.ORDER_NONE)||"0";a=Blockly.Lua.valueToCode(a,"HIGH",Blockly.Lua.ORDER_NONE)||"math.huge";return["math.min(math.max("+b+", "+c+"), "+a+")",Blockly.Lua.ORDER_HIGH]}; Blockly.Lua.math_random_int=function(a){var b=Blockly.Lua.valueToCode(a,"FROM",Blockly.Lua.ORDER_NONE)||"0";a=Blockly.Lua.valueToCode(a,"TO",Blockly.Lua.ORDER_NONE)||"0";return["math.random("+b+", "+a+")",Blockly.Lua.ORDER_HIGH]};Blockly.Lua.math_random_float=function(a){return["math.random()",Blockly.Lua.ORDER_HIGH]};Blockly.Lua.procedures={}; Blockly.Lua.procedures_defreturn=function(a){var b=Blockly.Lua.variableDB_.getName(a.getTitleValue("NAME"),Blockly.Procedures.NAME_TYPE),c=Blockly.Lua.statementToCode(a,"STACK");Blockly.Lua.INFINITE_LOOP_TRAP&&(c=Blockly.Lua.INFINITE_LOOP_TRAP.replace(/%1/g,'"'+a.id+'"')+c);var d=Blockly.Lua.valueToCode(a,"RETURN",Blockly.Lua.ORDER_NONE)||"";d?d=" return "+d+"\n":c||(c="");for(var e=[],f=0;f