smalruby-editor 0.1.24-x86-mingw32 → 0.2.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of smalruby-editor might be problematic. Click here for more details.

Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +9 -0
  3. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +147 -62
  4. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -0
  5. data/app/assets/javascripts/msg/en_us.js +34 -12
  6. data/app/assets/javascripts/msg/ja.js +35 -15
  7. data/app/helpers/editor_helper.rb +2 -1
  8. data/app/models/concerns/ruby_to_block/block/{hardware_button_down_or_up.rb → hardware_button_pressed_or_released.rb} +3 -3
  9. data/app/models/concerns/ruby_to_block/block/{hardware_led_on.rb → hardware_led_turn_off.rb} +2 -2
  10. data/app/models/concerns/ruby_to_block/block/{hardware_led_off.rb → hardware_led_turn_on.rb} +2 -2
  11. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +2 -0
  12. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_on.rb → hardware_rgb_led_set_color.rb} +2 -2
  13. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_off.rb → hardware_rgb_led_turn_off.rb} +2 -2
  14. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action.rb +22 -0
  15. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action_with_sec.rb +24 -0
  16. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_led_turn_on_or_off.rb +22 -0
  17. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_light_sensor_value.rb +28 -0
  18. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_touch_sensor_pressed_or_released.rb +29 -0
  19. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +3 -1
  20. data/app/views/editor/_toolbox.html.haml +30 -17
  21. data/app/views/layouts/application.html.erb +3 -1
  22. data/config/locales/en.yml +1 -0
  23. data/config/locales/ja.yml +1 -0
  24. data/lib/smalruby_editor/blockly_message_helper.rb +2 -1
  25. data/lib/smalruby_editor/version.rb +1 -1
  26. data/lib/tasks/release.rake +0 -0
  27. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js} +3 -3
  28. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js.gz → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js.gz} +0 -0
  29. data/public/assets/{manifest-1a9856df207640ec658271db34b30dbb.json → manifest-ebd584fa603a378faf780f013e6a447d.json} +1 -1
  30. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js +1 -0
  31. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js.gz +0 -0
  32. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js +1 -0
  33. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js.gz +0 -0
  34. data/smalruby-editor.gemspec +1 -1
  35. data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
  36. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
  37. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
  38. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
  39. data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
  40. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
  41. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
  42. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
  43. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
  44. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
  45. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
  46. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
  47. data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
  48. data/spec/steps/block_mode_steps.rb +8 -0
  49. metadata +43 -35
  50. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
  51. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
  52. data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
  53. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js +0 -1
  54. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz +0 -0
  55. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js +0 -1
  56. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
  57. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
  58. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
  59. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
  60. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
  61. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
  62. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -1,5 +1,6 @@
1
1
  ja:
2
2
  common:
3
+ smalruby_editor: "スモウルビー v%{version}"
3
4
  "ok": "決めた!"
4
5
  cancel: "やめる"
5
6
 
@@ -10,8 +10,9 @@ module SmalrubyEditor
10
10
  filename = md[1]
11
11
  prefix = filename.slice(%r"app/assets/javascripts/(.*)$", 1)
12
12
  .gsub(/\..*\z/, '')
13
- name = (prefix + name).gsub(/[\/.]/, '_')
13
+ name = prefix + name
14
14
  end
15
+ name = name.gsub(/[\/.]/, '_')
15
16
  "Smalruby.bm('#{name.upcase}')"
16
17
  end
17
18
  end
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.1.24'
2
+ VERSION = '0.2.0'
3
3
  end
File without changes
@@ -30,6 +30,6 @@ if(i&&(i=i.call(o[n]))&&Blockly.Names.equals(i[0],e))return o[n]}return null},Bl
30
30
  this.setTooltip(function(){var e=t.getFieldValue("MODE")+"_"+t.getFieldValue("WHERE");return Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_"+e]})},mutationToDom:function(){var e=document.createElement("mutation");e.setAttribute("statement",!this.outputConnection);var t=this.getInput("AT").type==Blockly.INPUT_VALUE;return e.setAttribute("at",t),e},domToMutation:function(e){var t="true"==e.getAttribute("statement");this.updateStatement(t),e="false"!=e.getAttribute("at"),this.updateAt(e)},updateStatement:function(e){e!=!this.outputConnection&&(this.unplug(!0,!0),e?(this.setOutput(!1),this.setPreviousStatement(!0),this.setNextStatement(!0)):(this.setPreviousStatement(!1),this.setNextStatement(!1),this.setOutput(!0)))},updateAt:function(e){this.removeInput("AT"),this.removeInput("ORDINAL",!0),e?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var t=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(t){var o="FROM_START"==t||"FROM_END"==t;if(o!=e){var n=this.sourceBlock_;return n.updateAt(o),n.setFieldValue(t,"WHERE"),null}});this.getInput("AT").appendField(t,"WHERE"),Blockly.Msg.LISTS_GET_INDEX_TAIL&&this.moveInputBefore("TAIL",null)}},Blockly.Blocks.lists_setIndex={init:function(){var e=[[Blockly.Msg.LISTS_SET_INDEX_SET,"SET"],[Blockly.Msg.LISTS_SET_INDEX_INSERT,"INSERT"]];this.WHERE_OPTIONS=[[Blockly.Msg.LISTS_GET_INDEX_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_INDEX_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_INDEX_FIRST,"FIRST"],[Blockly.Msg.LISTS_GET_INDEX_LAST,"LAST"],[Blockly.Msg.LISTS_GET_INDEX_RANDOM,"RANDOM"]],this.setHelpUrl(Blockly.Msg.LISTS_SET_INDEX_HELPURL),this.setColour(260),this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_IN_LIST),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"MODE").appendField("","SPACE"),this.appendDummyInput("AT"),this.appendValueInput("TO").appendField(Blockly.Msg.LISTS_SET_INDEX_INPUT_TO),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.LISTS_SET_INDEX_TOOLTIP),this.updateAt(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("MODE")+"_"+t.getFieldValue("WHERE");return Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_"+e]})},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT").type==Blockly.INPUT_VALUE;return e.setAttribute("at",t),e},domToMutation:function(e){e="false"!=e.getAttribute("at"),this.updateAt(e)},updateAt:function(e){this.removeInput("AT"),this.removeInput("ORDINAL",!0),e?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT");var t=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(t){var o="FROM_START"==t||"FROM_END"==t;if(o!=e){var n=this.sourceBlock_;return n.updateAt(o),n.setFieldValue(t,"WHERE"),null}});this.moveInputBefore("AT","TO"),this.getInput("ORDINAL")&&this.moveInputBefore("ORDINAL","TO"),this.getInput("AT").appendField(t,"WHERE")}},Blockly.Blocks.lists_getSublist={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_START,"FROM_START"],[Blockly.Msg.LISTS_GET_SUBLIST_END_FROM_END,"FROM_END"],[Blockly.Msg.LISTS_GET_SUBLIST_END_LAST,"LAST"]],this.setHelpUrl(Blockly.Msg.LISTS_GET_SUBLIST_HELPURL),this.setColour(260),this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.LISTS_GET_SUBLIST_INPUT_IN_LIST),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.LISTS_GET_SUBLIST_TAIL),this.setInputsInline(!0),this.setOutput(!0,"Array"),this.updateAt(1,!0),this.updateAt(2,!0),this.setTooltip(Blockly.Msg.LISTS_GET_SUBLIST_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT1").type==Blockly.INPUT_VALUE;return e.setAttribute("at1",t),t=this.getInput("AT2").type==Blockly.INPUT_VALUE,e.setAttribute("at2",t),e},domToMutation:function(e){var t="true"==e.getAttribute("at1");e="true"==e.getAttribute("at2"),this.updateAt(1,t),this.updateAt(2,e)},updateAt:function(e,t){this.removeInput("AT"+e),this.removeInput("ORDINAL"+e,!0),t?(this.appendValueInput("AT"+e).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+e).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT"+e);var o=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+e],function(o){var n="FROM_START"==o||"FROM_END"==o;if(n!=t){var i=this.sourceBlock_;return i.updateAt(e,n),i.setFieldValue(o,"WHERE"+e),null}});this.getInput("AT"+e).appendField(o,"WHERE"+e),1==e&&(this.moveInputBefore("AT1","AT2"),this.getInput("ORDINAL1")&&this.moveInputBefore("ORDINAL1","AT2")),Blockly.Msg.LISTS_GET_SUBLIST_TAIL&&this.moveInputBefore("TAIL",null)}},Blockly.Blocks.logic={},Blockly.Blocks.controls_if={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_IF_HELPURL),this.setColour(210),this.appendValueInput("IF0").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF),this.appendStatementInput("DO0").appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setMutator(new Blockly.Mutator(["controls_if_elseif","controls_if_else"]));var e=this;this.setTooltip(function(){return e.elseifCount_||e.elseCount_?!e.elseifCount_&&e.elseCount_?Blockly.Msg.CONTROLS_IF_TOOLTIP_2:e.elseifCount_&&!e.elseCount_?Blockly.Msg.CONTROLS_IF_TOOLTIP_3:e.elseifCount_&&e.elseCount_?Blockly.Msg.CONTROLS_IF_TOOLTIP_4:"":Blockly.Msg.CONTROLS_IF_TOOLTIP_1}),this.elseCount_=this.elseifCount_=0},mutationToDom:function(){if(!this.elseifCount_&&!this.elseCount_)return null;var e=document.createElement("mutation");return this.elseifCount_&&e.setAttribute("elseif",this.elseifCount_),this.elseCount_&&e.setAttribute("else",1),e},domToMutation:function(e){for(this.elseifCount_=parseInt(e.getAttribute("elseif"),10),this.elseCount_=parseInt(e.getAttribute("else"),10),e=1;e<=this.elseifCount_;e++)this.appendValueInput("IF"+e).setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF),this.appendStatementInput("DO"+e).appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN);this.elseCount_&&this.appendStatementInput("ELSE").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE)},decompose:function(e){var t=new Blockly.Block(e,"controls_if_if");t.initSvg();for(var o=t.getInput("STACK").connection,n=1;n<=this.elseifCount_;n++){var i=new Blockly.Block(e,"controls_if_elseif");i.initSvg(),o.connect(i.previousConnection),o=i.nextConnection}return this.elseCount_&&(e=new Blockly.Block(e,"controls_if_else"),e.initSvg(),o.connect(e.previousConnection)),t},compose:function(e){this.elseCount_&&this.removeInput("ELSE"),this.elseCount_=0;for(var t=this.elseifCount_;t>0;t--)this.removeInput("IF"+t),this.removeInput("DO"+t);for(this.elseifCount_=0,e=e.getInputTargetBlock("STACK");e;){switch(e.type){case"controls_if_elseif":this.elseifCount_++;var t=this.appendValueInput("IF"+this.elseifCount_).setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSEIF),o=this.appendStatementInput("DO"+this.elseifCount_);o.appendField(Blockly.Msg.CONTROLS_IF_MSG_THEN),e.valueConnection_&&t.connection.connect(e.valueConnection_),e.statementConnection_&&o.connection.connect(e.statementConnection_);break;case"controls_if_else":this.elseCount_++,t=this.appendStatementInput("ELSE"),t.appendField(Blockly.Msg.CONTROLS_IF_MSG_ELSE),e.statementConnection_&&t.connection.connect(e.statementConnection_);break;default:throw"Unknown block type."}e=e.nextConnection&&e.nextConnection.targetBlock()}},saveConnections:function(e){e=e.getInputTargetBlock("STACK");for(var t=1;e;){switch(e.type){case"controls_if_elseif":var o=this.getInput("IF"+t),n=this.getInput("DO"+t);e.valueConnection_=o&&o.connection.targetConnection,e.statementConnection_=n&&n.connection.targetConnection,t++;break;case"controls_if_else":n=this.getInput("ELSE"),e.statementConnection_=n&&n.connection.targetConnection;break;default:throw"Unknown block type."}e=e.nextConnection&&e.nextConnection.targetBlock()}}},Blockly.Blocks.controls_if_if={init:function(){this.setColour(210),this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_IF_TITLE_IF),this.appendStatementInput("STACK"),this.setTooltip(Blockly.Msg.CONTROLS_IF_IF_TOOLTIP),this.contextMenu=!1}},Blockly.Blocks.controls_if_elseif={init:function(){this.setColour(210),this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSEIF_TITLE_ELSEIF),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSEIF_TOOLTIP),this.contextMenu=!1}},Blockly.Blocks.controls_if_else={init:function(){this.setColour(210),this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE),this.setPreviousStatement(!0),this.setTooltip(Blockly.Msg.CONTROLS_IF_ELSE_TOOLTIP),this.contextMenu=!1}},Blockly.Blocks.logic_compare={init:function(){var e=Blockly.RTL?[["=","EQ"],["≠","NEQ"],[">","LT"],["≥","LTE"],["<","GT"],["≤","GTE"]]:[["=","EQ"],["≠","NEQ"],["<","LT"],["≤","LTE"],[">","GT"],["≥","GTE"]];this.setHelpUrl(Blockly.Msg.LOGIC_COMPARE_HELPURL),this.setColour(210),this.setOutput(!0,"Boolean"),this.appendValueInput("A"),this.appendValueInput("B").appendField(new Blockly.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("OP");return{EQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_EQ,NEQ:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_NEQ,LT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LT,LTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_LTE,GT:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GT,GTE:Blockly.Msg.LOGIC_COMPARE_TOOLTIP_GTE}[e]})}},Blockly.Blocks.logic_operation={init:function(){var e=[[Blockly.Msg.LOGIC_OPERATION_AND,"AND"],[Blockly.Msg.LOGIC_OPERATION_OR,"OR"]];this.setHelpUrl(Blockly.Msg.LOGIC_OPERATION_HELPURL),this.setColour(210),this.setOutput(!0,"Boolean"),this.appendValueInput("A").setCheck("Boolean"),this.appendValueInput("B").setCheck("Boolean").appendField(new Blockly.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("OP");return{AND:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_AND,OR:Blockly.Msg.LOGIC_OPERATION_TOOLTIP_OR}[e]})}},Blockly.Blocks.logic_negate={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NEGATE_HELPURL),this.setColour(210),this.setOutput(!0,"Boolean"),this.interpolateMsg(Blockly.Msg.LOGIC_NEGATE_TITLE,["BOOL","Boolean",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setTooltip(Blockly.Msg.LOGIC_NEGATE_TOOLTIP)}},Blockly.Blocks.logic_boolean={init:function(){var e=[[Blockly.Msg.LOGIC_BOOLEAN_TRUE,"TRUE"],[Blockly.Msg.LOGIC_BOOLEAN_FALSE,"FALSE"]];this.setHelpUrl(Blockly.Msg.LOGIC_BOOLEAN_HELPURL),this.setColour(210),this.setOutput(!0,"Boolean"),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"BOOL"),this.setTooltip(Blockly.Msg.LOGIC_BOOLEAN_TOOLTIP)}},Blockly.Blocks.logic_null={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_NULL_HELPURL),this.setColour(210),this.setOutput(!0),this.appendDummyInput().appendField(Blockly.Msg.LOGIC_NULL),this.setTooltip(Blockly.Msg.LOGIC_NULL_TOOLTIP)}},Blockly.Blocks.logic_ternary={init:function(){this.setHelpUrl(Blockly.Msg.LOGIC_TERNARY_HELPURL),this.setColour(210),this.appendValueInput("IF").setCheck("Boolean").appendField(Blockly.Msg.LOGIC_TERNARY_CONDITION),this.appendValueInput("THEN").appendField(Blockly.Msg.LOGIC_TERNARY_IF_TRUE),this.appendValueInput("ELSE").appendField(Blockly.Msg.LOGIC_TERNARY_IF_FALSE),this.setOutput(!0),this.setTooltip(Blockly.Msg.LOGIC_TERNARY_TOOLTIP)}},Blockly.Blocks.loops={},Blockly.Blocks.controls_repeat={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_REPEAT_HELPURL),this.setColour(120),this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_REPEAT).appendField(new Blockly.FieldTextInput("10",Blockly.FieldTextInput.nonnegativeIntegerValidator),"TIMES").appendField(Blockly.Msg.CONTROLS_REPEAT_TITLE_TIMES),this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.CONTROLS_REPEAT_TOOLTIP)}},Blockly.Blocks.controls_repeat_ext={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_REPEAT_HELPURL),this.setColour(120),this.interpolateMsg(Blockly.Msg.CONTROLS_REPEAT_TITLE,["TIMES","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_REPEAT_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip(Blockly.Msg.CONTROLS_REPEAT_TOOLTIP)}},Blockly.Blocks.controls_whileUntil={init:function(){var e=[[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_WHILE,"WHILE"],[Blockly.Msg.CONTROLS_WHILEUNTIL_OPERATOR_UNTIL,"UNTIL"]];this.setHelpUrl(Blockly.Msg.CONTROLS_WHILEUNTIL_HELPURL),this.setColour(120),this.appendValueInput("BOOL").setCheck("Boolean").appendField(new Blockly.FieldDropdown(e),"MODE"),this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_WHILEUNTIL_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("MODE");return{WHILE:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_WHILE,UNTIL:Blockly.Msg.CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL}[e]})}},Blockly.Blocks.controls_for={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_FOR_HELPURL),this.setColour(120),this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_FOR_INPUT_WITH).appendField(new Blockly.FieldVariable(null),"VAR"),this.interpolateMsg(Blockly.Msg.CONTROLS_FOR_INPUT_FROM_TO_BY,["FROM","Number",Blockly.ALIGN_RIGHT],["TO","Number",Blockly.ALIGN_RIGHT],["BY","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOR_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0);var e=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOR_TOOLTIP.replace("%1",e.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")},customContextMenu:function(e){var t={enabled:!0},o=this.getFieldValue("VAR");t.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",o),o=goog.dom.createDom("field",null,o),o.setAttribute("name","VAR"),o=goog.dom.createDom("block",null,o),o.setAttribute("type","variables_get"),t.callback=Blockly.ContextMenu.callbackFactory(this,o),e.push(t)}},Blockly.Blocks.controls_forEach={init:function(){this.setHelpUrl(Blockly.Msg.CONTROLS_FOREACH_HELPURL),this.setColour(120),this.appendValueInput("LIST").setCheck("Array").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_ITEM).appendField(new Blockly.FieldVariable(null),"VAR").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST),Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL&&(this.appendDummyInput().appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_INLIST_TAIL),this.setInputsInline(!0)),this.appendStatementInput("DO").appendField(Blockly.Msg.CONTROLS_FOREACH_INPUT_DO),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip(function(){return Blockly.Msg.CONTROLS_FOREACH_TOOLTIP.replace("%1",e.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")},customContextMenu:Blockly.Blocks.controls_for.customContextMenu},Blockly.Blocks.controls_flow_statements={init:function(){var e=[[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK,"BREAK"],[Blockly.Msg.CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE,"CONTINUE"]];this.setHelpUrl(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_HELPURL),this.setColour(120),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"FLOW"),this.setPreviousStatement(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("FLOW");return t.TOOLTIPS[e]})},onchange:function(){if(this.workspace){var e=!1,t=this;do{if("controls_repeat"==t.type||"controls_repeat_ext"==t.type||"controls_forEach"==t.type||"controls_for"==t.type||"controls_whileUntil"==t.type){e=!0;break}t=t.getSurroundParent()}while(t);e?this.setWarningText(null):this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING)}}},Blockly.Blocks.math={},Blockly.Blocks.math_number={init:function(){this.setHelpUrl(Blockly.Msg.MATH_NUMBER_HELPURL),this.setColour(230),this.appendDummyInput().appendField(new Blockly.FieldTextInput("0",Blockly.FieldTextInput.numberValidator),"NUM"),this.setOutput(!0,"Number"),this.setTooltip(Blockly.Msg.MATH_NUMBER_TOOLTIP)}},Blockly.Blocks.math_arithmetic={init:function(){var e=[[Blockly.Msg.MATH_ADDITION_SYMBOL,"ADD"],[Blockly.Msg.MATH_SUBTRACTION_SYMBOL,"MINUS"],[Blockly.Msg.MATH_MULTIPLICATION_SYMBOL,"MULTIPLY"],[Blockly.Msg.MATH_DIVISION_SYMBOL,"DIVIDE"],[Blockly.Msg.MATH_POWER_SYMBOL,"POWER"]];this.setHelpUrl(Blockly.Msg.MATH_ARITHMETIC_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendValueInput("A").setCheck("Number"),this.appendValueInput("B").setCheck("Number").appendField(new Blockly.FieldDropdown(e),"OP"),this.setInputsInline(!0);var t=this;this.setTooltip(function(){var e=t.getFieldValue("OP");return{ADD:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_ADD,MINUS:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MINUS,MULTIPLY:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_MULTIPLY,DIVIDE:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_DIVIDE,POWER:Blockly.Msg.MATH_ARITHMETIC_TOOLTIP_POWER}[e]})}},Blockly.Blocks.math_single={init:function(){var e=[[Blockly.Msg.MATH_SINGLE_OP_ROOT,"ROOT"],[Blockly.Msg.MATH_SINGLE_OP_ABSOLUTE,"ABS"],["-","NEG"],["ln","LN"],["log10","LOG10"],["e^","EXP"],["10^","POW10"]];this.setHelpUrl(Blockly.Msg.MATH_SINGLE_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendValueInput("NUM").setCheck("Number").appendField(new Blockly.FieldDropdown(e),"OP");var t=this;this.setTooltip(function(){var e=t.getFieldValue("OP");return{ROOT:Blockly.Msg.MATH_SINGLE_TOOLTIP_ROOT,ABS:Blockly.Msg.MATH_SINGLE_TOOLTIP_ABS,NEG:Blockly.Msg.MATH_SINGLE_TOOLTIP_NEG,LN:Blockly.Msg.MATH_SINGLE_TOOLTIP_LN,LOG10:Blockly.Msg.MATH_SINGLE_TOOLTIP_LOG10,EXP:Blockly.Msg.MATH_SINGLE_TOOLTIP_EXP,POW10:Blockly.Msg.MATH_SINGLE_TOOLTIP_POW10}[e]})}},Blockly.Blocks.math_trig={init:function(){var e=[[Blockly.Msg.MATH_TRIG_SIN,"SIN"],[Blockly.Msg.MATH_TRIG_COS,"COS"],[Blockly.Msg.MATH_TRIG_TAN,"TAN"],[Blockly.Msg.MATH_TRIG_ASIN,"ASIN"],[Blockly.Msg.MATH_TRIG_ACOS,"ACOS"],[Blockly.Msg.MATH_TRIG_ATAN,"ATAN"]];this.setHelpUrl(Blockly.Msg.MATH_TRIG_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendValueInput("NUM").setCheck("Number").appendField(new Blockly.FieldDropdown(e),"OP");var t=this;this.setTooltip(function(){var e=t.getFieldValue("OP");return{SIN:Blockly.Msg.MATH_TRIG_TOOLTIP_SIN,COS:Blockly.Msg.MATH_TRIG_TOOLTIP_COS,TAN:Blockly.Msg.MATH_TRIG_TOOLTIP_TAN,ASIN:Blockly.Msg.MATH_TRIG_TOOLTIP_ASIN,ACOS:Blockly.Msg.MATH_TRIG_TOOLTIP_ACOS,ATAN:Blockly.Msg.MATH_TRIG_TOOLTIP_ATAN}[e]})}},Blockly.Blocks.math_constant={init:function(){this.setHelpUrl(Blockly.Msg.MATH_CONSTANT_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendDummyInput().appendField(new Blockly.FieldDropdown([["π","PI"],["e","E"],["φ","GOLDEN_RATIO"],["sqrt(2)","SQRT2"],["sqrt(½)","SQRT1_2"],["∞","INFINITY"]]),"CONSTANT"),this.setTooltip(Blockly.Msg.MATH_CONSTANT_TOOLTIP)}},Blockly.Blocks.math_number_property={init:function(){var e=[[Blockly.Msg.MATH_IS_EVEN,"EVEN"],[Blockly.Msg.MATH_IS_ODD,"ODD"],[Blockly.Msg.MATH_IS_PRIME,"PRIME"],[Blockly.Msg.MATH_IS_WHOLE,"WHOLE"],[Blockly.Msg.MATH_IS_POSITIVE,"POSITIVE"],[Blockly.Msg.MATH_IS_NEGATIVE,"NEGATIVE"],[Blockly.Msg.MATH_IS_DIVISIBLE_BY,"DIVISIBLE_BY"]];this.setColour(230),this.appendValueInput("NUMBER_TO_CHECK").setCheck("Number"),e=new Blockly.FieldDropdown(e,function(e){this.sourceBlock_.updateShape("DIVISIBLE_BY"==e)}),this.appendDummyInput().appendField(e,"PROPERTY"),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip(Blockly.Msg.MATH_IS_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t="DIVISIBLE_BY"==this.getFieldValue("PROPERTY");return e.setAttribute("divisor_input",t),e},domToMutation:function(e){e="true"==e.getAttribute("divisor_input"),this.updateShape(e)},updateShape:function(e){var t=this.getInput("DIVISOR");e?t||this.appendValueInput("DIVISOR").setCheck("Number"):t&&this.removeInput("DIVISOR")}},Blockly.Blocks.math_change={init:function(){this.setHelpUrl(Blockly.Msg.MATH_CHANGE_HELPURL),this.setColour(230),this.appendValueInput("DELTA").setCheck("Number").appendField(Blockly.Msg.MATH_CHANGE_TITLE_CHANGE).appendField(new Blockly.FieldVariable(Blockly.Msg.MATH_CHANGE_TITLE_ITEM),"VAR").appendField(Blockly.Msg.MATH_CHANGE_INPUT_BY),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip(function(){return Blockly.Msg.MATH_CHANGE_TOOLTIP.replace("%1",e.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},Blockly.Blocks.math_round={init:function(){var e=[[Blockly.Msg.MATH_ROUND_OPERATOR_ROUND,"ROUND"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDUP,"ROUNDUP"],[Blockly.Msg.MATH_ROUND_OPERATOR_ROUNDDOWN,"ROUNDDOWN"]];this.setHelpUrl(Blockly.Msg.MATH_ROUND_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendValueInput("NUM").setCheck("Number").appendField(new Blockly.FieldDropdown(e),"OP"),this.setTooltip(Blockly.Msg.MATH_ROUND_TOOLTIP)}},Blockly.Blocks.math_on_list={init:function(){var e=[[Blockly.Msg.MATH_ONLIST_OPERATOR_SUM,"SUM"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MIN,"MIN"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MAX,"MAX"],[Blockly.Msg.MATH_ONLIST_OPERATOR_AVERAGE,"AVERAGE"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MEDIAN,"MEDIAN"],[Blockly.Msg.MATH_ONLIST_OPERATOR_MODE,"MODE"],[Blockly.Msg.MATH_ONLIST_OPERATOR_STD_DEV,"STD_DEV"],[Blockly.Msg.MATH_ONLIST_OPERATOR_RANDOM,"RANDOM"]],t=this;this.setHelpUrl(Blockly.Msg.MATH_ONLIST_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),e=new Blockly.FieldDropdown(e,function(e){"MODE"==e?t.outputConnection.setCheck("Array"):t.outputConnection.setCheck("Number")}),this.appendValueInput("LIST").setCheck("Array").appendField(e,"OP"),this.setTooltip(function(){var e=t.getFieldValue("OP");return{SUM:Blockly.Msg.MATH_ONLIST_TOOLTIP_SUM,MIN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MIN,MAX:Blockly.Msg.MATH_ONLIST_TOOLTIP_MAX,AVERAGE:Blockly.Msg.MATH_ONLIST_TOOLTIP_AVERAGE,MEDIAN:Blockly.Msg.MATH_ONLIST_TOOLTIP_MEDIAN,MODE:Blockly.Msg.MATH_ONLIST_TOOLTIP_MODE,STD_DEV:Blockly.Msg.MATH_ONLIST_TOOLTIP_STD_DEV,RANDOM:Blockly.Msg.MATH_ONLIST_TOOLTIP_RANDOM}[e]})}},Blockly.Blocks.math_modulo={init:function(){this.setHelpUrl(Blockly.Msg.MATH_MODULO_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.interpolateMsg(Blockly.Msg.MATH_MODULO_TITLE,["DIVIDEND","Number",Blockly.ALIGN_RIGHT],["DIVISOR","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setTooltip(Blockly.Msg.MATH_MODULO_TOOLTIP)}},Blockly.Blocks.math_constrain={init:function(){this.setHelpUrl(Blockly.Msg.MATH_CONSTRAIN_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.interpolateMsg(Blockly.Msg.MATH_CONSTRAIN_TITLE,["VALUE","Number",Blockly.ALIGN_RIGHT],["LOW","Number",Blockly.ALIGN_RIGHT],["HIGH","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setTooltip(Blockly.Msg.MATH_CONSTRAIN_TOOLTIP)}},Blockly.Blocks.math_random_int={init:function(){this.setHelpUrl(Blockly.Msg.MATH_RANDOM_INT_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.interpolateMsg(Blockly.Msg.MATH_RANDOM_INT_TITLE,["FROM","Number",Blockly.ALIGN_RIGHT],["TO","Number",Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setTooltip(Blockly.Msg.MATH_RANDOM_INT_TOOLTIP)}},Blockly.Blocks.math_random_float={init:function(){this.setHelpUrl(Blockly.Msg.MATH_RANDOM_FLOAT_HELPURL),this.setColour(230),this.setOutput(!0,"Number"),this.appendDummyInput().appendField(Blockly.Msg.MATH_RANDOM_FLOAT_TITLE_RANDOM),this.setTooltip(Blockly.Msg.MATH_RANDOM_FLOAT_TOOLTIP)}},Blockly.Blocks.procedures={},Blockly.Blocks.procedures_defnoreturn={init:function(){this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFNORETURN_HELPURL),this.setColour(290);var e=Blockly.Procedures.findLegalName(Blockly.Msg.PROCEDURES_DEFNORETURN_PROCEDURE,this);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_TITLE).appendField(new Blockly.FieldTextInput(e,Blockly.Procedures.rename),"NAME").appendField("","PARAMS"),this.appendStatementInput("STACK").appendField(Blockly.Msg.PROCEDURES_DEFNORETURN_DO),this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"])),this.setTooltip(Blockly.Msg.PROCEDURES_DEFNORETURN_TOOLTIP),this.arguments_=[]},updateParams_:function(){for(var e=!1,t={},o=0;o<this.arguments_.length;o++){if(t["arg_"+this.arguments_[o].toLowerCase()]){e=!0;break}t["arg_"+this.arguments_[o].toLowerCase()]=!0}e?this.setWarningText(Blockly.Msg.PROCEDURES_DEF_DUPLICATE_WARNING):this.setWarningText(null),e="",this.arguments_.length&&(e=Blockly.Msg.PROCEDURES_BEFORE_PARAMS+" "+this.arguments_.join(", ")),this.setFieldValue(e,"PARAMS")},mutationToDom:function(){for(var e=document.createElement("mutation"),t=0;t<this.arguments_.length;t++){var o=document.createElement("arg");o.setAttribute("name",this.arguments_[t]),e.appendChild(o)}return e},domToMutation:function(e){this.arguments_=[];for(var t,o=0;t=e.childNodes[o];o++)"arg"==t.nodeName.toLowerCase()&&this.arguments_.push(t.getAttribute("name"));this.updateParams_()},decompose:function(e){var t=new Blockly.Block(e,"procedures_mutatorcontainer");t.initSvg();for(var o=t.getInput("STACK").connection,n=0;n<this.arguments_.length;n++){var i=new Blockly.Block(e,"procedures_mutatorarg");i.initSvg(),i.setFieldValue(this.arguments_[n],"NAME"),i.oldLocation=n,o.connect(i.previousConnection),o=i.nextConnection}return Blockly.Procedures.mutateCallers(this.getFieldValue("NAME"),this.workspace,this.arguments_,null),t},compose:function(e){for(this.arguments_=[],this.paramIds_=[],e=e.getInputTargetBlock("STACK");e;)this.arguments_.push(e.getFieldValue("NAME")),this.paramIds_.push(e.id),e=e.nextConnection&&e.nextConnection.targetBlock();this.updateParams_(),Blockly.Procedures.mutateCallers(this.getFieldValue("NAME"),this.workspace,this.arguments_,this.paramIds_)},dispose:function(){var e=this.getFieldValue("NAME");Blockly.Procedures.disposeCallers(e,this.workspace),Blockly.Block.prototype.dispose.apply(this,arguments)},getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!1]},getVars:function(){return this.arguments_},renameVar:function(e,t){for(var o=!1,n=0;n<this.arguments_.length;n++)Blockly.Names.equals(e,this.arguments_[n])&&(this.arguments_[n]=t,o=!0);if(o&&(this.updateParams_(),this.mutator.isVisible_()))for(var i,o=this.mutator.workspace_.getAllBlocks(),n=0;i=o[n];n++)"procedures_mutatorarg"==i.type&&Blockly.Names.equals(e,i.getFieldValue("NAME"))&&i.setFieldValue(t,"NAME")},customContextMenu:function(e){var t={enabled:!0},o=this.getFieldValue("NAME");t.text=Blockly.Msg.PROCEDURES_CREATE_DO.replace("%1",o);var n=goog.dom.createDom("mutation");n.setAttribute("name",o);for(var i=0;i<this.arguments_.length;i++)o=goog.dom.createDom("arg"),o.setAttribute("name",this.arguments_[i]),n.appendChild(o);for(n=goog.dom.createDom("block",null,n),n.setAttribute("type",this.callType_),t.callback=Blockly.ContextMenu.callbackFactory(this,n),e.push(t),i=0;i<this.arguments_.length;i++)t={enabled:!0},o=this.arguments_[i],t.text=Blockly.Msg.VARIABLES_SET_CREATE_GET.replace("%1",o),n=goog.dom.createDom("field",null,o),n.setAttribute("name","VAR"),n=goog.dom.createDom("block",null,n),n.setAttribute("type","variables_get"),t.callback=Blockly.ContextMenu.callbackFactory(this,n),e.push(t)},callType_:"procedures_callnoreturn"},Blockly.Blocks.procedures_defreturn={init:function(){this.setHelpUrl(Blockly.Msg.PROCEDURES_DEFRETURN_HELPURL),this.setColour(290);var e=Blockly.Procedures.findLegalName(Blockly.Msg.PROCEDURES_DEFRETURN_PROCEDURE,this);this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_DEFRETURN_TITLE).appendField(new Blockly.FieldTextInput(e,Blockly.Procedures.rename),"NAME").appendField("","PARAMS"),this.appendStatementInput("STACK").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_DO),this.appendValueInput("RETURN").setAlign(Blockly.ALIGN_RIGHT).appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.setMutator(new Blockly.Mutator(["procedures_mutatorarg"])),this.setTooltip(Blockly.Msg.PROCEDURES_DEFRETURN_TOOLTIP),this.arguments_=[]},updateParams_:Blockly.Blocks.procedures_defnoreturn.updateParams_,mutationToDom:Blockly.Blocks.procedures_defnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_defnoreturn.domToMutation,decompose:Blockly.Blocks.procedures_defnoreturn.decompose,compose:Blockly.Blocks.procedures_defnoreturn.compose,dispose:Blockly.Blocks.procedures_defnoreturn.dispose,getProcedureDef:function(){return[this.getFieldValue("NAME"),this.arguments_,!0]},getVars:Blockly.Blocks.procedures_defnoreturn.getVars,renameVar:Blockly.Blocks.procedures_defnoreturn.renameVar,customContextMenu:Blockly.Blocks.procedures_defnoreturn.customContextMenu,callType_:"procedures_callreturn"},Blockly.Blocks.procedures_mutatorcontainer={init:function(){this.setColour(290),this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORCONTAINER_TITLE),this.appendStatementInput("STACK"),this.setTooltip(""),this.contextMenu=!1}},Blockly.Blocks.procedures_mutatorarg={init:function(){this.setColour(290),this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_MUTATORARG_TITLE).appendField(new Blockly.FieldTextInput("x",this.validator),"NAME"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(""),this.contextMenu=!1},validator:function(e){return(e=e.replace(/[\s\xa0]+/g," ").replace(/^ | $/g,""))||null}},Blockly.Blocks.procedures_callnoreturn={init:function(){this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLNORETURN_HELPURL),this.setColour(290),this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_CALLNORETURN_CALL).appendField("","NAME"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP),this.arguments_=[],this.quarkArguments_=this.quarkConnections_=null},getProcedureCall:function(){return this.getFieldValue("NAME")},renameProcedure:function(e,t){Blockly.Names.equals(e,this.getFieldValue("NAME"))&&(this.setFieldValue(t,"NAME"),this.setTooltip((this.outputConnection?Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP:Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",t)))},setProcedureParameters:function(e,t){if(t){if(t.length!=e.length)throw"Error: paramNames and paramIds must be the same length.";this.quarkArguments_||(this.quarkConnections_={},this.quarkArguments_=e.join("\n")==this.arguments_.join("\n")?t:[]);var o=this.rendered;this.rendered=!1;for(var n=this.arguments_.length-1;n>=0;n--){var i=this.getInput("ARG"+n);if(i){var r=i.connection.targetConnection;this.quarkConnections_[this.quarkArguments_[n]]=r,this.removeInput("ARG"+n)}}for(this.arguments_=[].concat(e),this.quarkArguments_=t,n=0;n<this.arguments_.length;n++)if(i=this.appendValueInput("ARG"+n).setAlign(Blockly.ALIGN_RIGHT).appendField(this.arguments_[n]),this.quarkArguments_){var s=this.quarkArguments_[n];s in this.quarkConnections_&&(r=this.quarkConnections_[s],!r||r.targetConnection||r.sourceBlock_.workspace!=this.workspace?delete this.quarkConnections_[s]:i.connection.connect(r))}(this.rendered=o)&&this.render()}else this.quarkConnections_={},this.quarkArguments_=null},mutationToDom:function(){var e=document.createElement("mutation");e.setAttribute("name",this.getFieldValue("NAME"));for(var t=0;t<this.arguments_.length;t++){var o=document.createElement("arg");o.setAttribute("name",this.arguments_[t]),e.appendChild(o)}return e},domToMutation:function(e){var t=e.getAttribute("name");if(this.setFieldValue(t,"NAME"),this.setTooltip((this.outputConnection?Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP:Blockly.Msg.PROCEDURES_CALLNORETURN_TOOLTIP).replace("%1",t)),(t=Blockly.Procedures.getDefinition(t,this.workspace))&&t.mutator.isVisible())this.setProcedureParameters(t.arguments_,t.paramIds_);else{this.arguments_=[];for(var o,t=0;o=e.childNodes[t];t++)"arg"==o.nodeName.toLowerCase()&&this.arguments_.push(o.getAttribute("name"));
31
31
  this.setProcedureParameters(this.arguments_,this.arguments_)}},renameVar:function(e,t){for(var o=0;o<this.arguments_.length;o++)Blockly.Names.equals(e,this.arguments_[o])&&(this.arguments_[o]=t,this.getInput("ARG"+o).fieldRow[0].setText(t))},customContextMenu:function(e){var t={enabled:!0};t.text=Blockly.Msg.PROCEDURES_HIGHLIGHT_DEF;var o=this.getFieldValue("NAME"),n=this.workspace;t.callback=function(){var e=Blockly.Procedures.getDefinition(o,n);e&&e.select()},e.push(t)}},Blockly.Blocks.procedures_callreturn={init:function(){this.setHelpUrl(Blockly.Msg.PROCEDURES_CALLRETURN_HELPURL),this.setColour(290),this.appendDummyInput().appendField(Blockly.Msg.PROCEDURES_CALLRETURN_CALL).appendField("","NAME"),this.setOutput(!0),this.setTooltip(Blockly.Msg.PROCEDURES_CALLRETURN_TOOLTIP),this.arguments_=[],this.quarkArguments_=this.quarkConnections_=null},getProcedureCall:Blockly.Blocks.procedures_callnoreturn.getProcedureCall,renameProcedure:Blockly.Blocks.procedures_callnoreturn.renameProcedure,setProcedureParameters:Blockly.Blocks.procedures_callnoreturn.setProcedureParameters,mutationToDom:Blockly.Blocks.procedures_callnoreturn.mutationToDom,domToMutation:Blockly.Blocks.procedures_callnoreturn.domToMutation,renameVar:Blockly.Blocks.procedures_callnoreturn.renameVar,customContextMenu:Blockly.Blocks.procedures_callnoreturn.customContextMenu},Blockly.Blocks.procedures_ifreturn={init:function(){this.setHelpUrl("http://c2.com/cgi/wiki?GuardClause"),this.setColour(290),this.appendValueInput("CONDITION").setCheck("Boolean").appendField(Blockly.Msg.CONTROLS_IF_MSG_IF),this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.PROCEDURES_IFRETURN_TOOLTIP),this.hasReturnValue_=!0},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("value",Number(this.hasReturnValue_)),e},domToMutation:function(e){this.hasReturnValue_=1==e.getAttribute("value"),this.hasReturnValue_||(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN))},onchange:function(){if(this.workspace){var e=!1,t=this;do{if("procedures_defnoreturn"==t.type||"procedures_defreturn"==t.type){e=!0;break}t=t.getSurroundParent()}while(t);e?("procedures_defnoreturn"==t.type&&this.hasReturnValue_?(this.removeInput("VALUE"),this.appendDummyInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!1):"procedures_defreturn"!=t.type||this.hasReturnValue_||(this.removeInput("VALUE"),this.appendValueInput("VALUE").appendField(Blockly.Msg.PROCEDURES_DEFRETURN_RETURN),this.hasReturnValue_=!0),this.setWarningText(null)):this.setWarningText(Blockly.Msg.PROCEDURES_IFRETURN_WARNING)}}},Blockly.Blocks.text={},Blockly.Blocks.text={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_TEXT_HELPURL),this.setColour(160),this.appendDummyInput().appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote0.png",12,12)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote1.png",12,12)),this.setOutput(!0,"String"),this.setTooltip(Blockly.Msg.TEXT_TEXT_TOOLTIP)}},Blockly.Blocks.text_join={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_JOIN_HELPURL),this.setColour(160),this.appendValueInput("ADD0").appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH),this.appendValueInput("ADD1"),this.setOutput(!0,"String"),this.setMutator(new Blockly.Mutator(["text_create_join_item"])),this.setTooltip(Blockly.Msg.TEXT_JOIN_TOOLTIP),this.itemCount_=2},mutationToDom:function(){var e=document.createElement("mutation");return e.setAttribute("items",this.itemCount_),e},domToMutation:function(e){for(var t=0;t<this.itemCount_;t++)this.removeInput("ADD"+t);for(this.itemCount_=parseInt(e.getAttribute("items"),10),t=0;t<this.itemCount_;t++)e=this.appendValueInput("ADD"+t),0==t&&e.appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH);0==this.itemCount_&&this.appendDummyInput("EMPTY").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote0.png",12,12)).appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote1.png",12,12))},decompose:function(e){var t=new Blockly.Block(e,"text_create_join_container");t.initSvg();for(var o=t.getInput("STACK").connection,n=0;n<this.itemCount_;n++){var i=new Blockly.Block(e,"text_create_join_item");i.initSvg(),o.connect(i.previousConnection),o=i.nextConnection}return t},compose:function(e){if(0==this.itemCount_)this.removeInput("EMPTY");else for(var t=this.itemCount_-1;t>=0;t--)this.removeInput("ADD"+t);for(this.itemCount_=0,e=e.getInputTargetBlock("STACK");e;)t=this.appendValueInput("ADD"+this.itemCount_),0==this.itemCount_&&t.appendField(Blockly.Msg.TEXT_JOIN_TITLE_CREATEWITH),e.valueConnection_&&t.connection.connect(e.valueConnection_),this.itemCount_++,e=e.nextConnection&&e.nextConnection.targetBlock();0==this.itemCount_&&this.appendDummyInput("EMPTY").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote0.png",12,12)).appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote1.png",12,12))},saveConnections:function(e){e=e.getInputTargetBlock("STACK");for(var t=0;e;){var o=this.getInput("ADD"+t);e.valueConnection_=o&&o.connection.targetConnection,t++,e=e.nextConnection&&e.nextConnection.targetBlock()}}},Blockly.Blocks.text_create_join_container={init:function(){this.setColour(160),this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_TITLE_JOIN),this.appendStatementInput("STACK"),this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_TOOLTIP),this.contextMenu=!1}},Blockly.Blocks.text_create_join_item={init:function(){this.setColour(160),this.appendDummyInput().appendField(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TITLE_ITEM),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.TEXT_CREATE_JOIN_ITEM_TOOLTIP),this.contextMenu=!1}},Blockly.Blocks.text_append={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_APPEND_HELPURL),this.setColour(160),this.appendValueInput("TEXT").appendField(Blockly.Msg.TEXT_APPEND_TO).appendField(new Blockly.FieldVariable(Blockly.Msg.TEXT_APPEND_VARIABLE),"VAR").appendField(Blockly.Msg.TEXT_APPEND_APPENDTEXT),this.setPreviousStatement(!0),this.setNextStatement(!0);var e=this;this.setTooltip(function(){return Blockly.Msg.TEXT_APPEND_TOOLTIP.replace("%1",e.getFieldValue("VAR"))})},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")}},Blockly.Blocks.text_length={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_LENGTH_HELPURL),this.setColour(160),this.interpolateMsg(Blockly.Msg.TEXT_LENGTH_TITLE,["VALUE",["String","Array"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip(Blockly.Msg.TEXT_LENGTH_TOOLTIP)}},Blockly.Blocks.text_isEmpty={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_ISEMPTY_HELPURL),this.setColour(160),this.interpolateMsg(Blockly.Msg.TEXT_ISEMPTY_TITLE,["VALUE",["String","Array"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Boolean"),this.setTooltip(Blockly.Msg.TEXT_ISEMPTY_TOOLTIP)}},Blockly.Blocks.text_indexOf={init:function(){var e=[[Blockly.Msg.TEXT_INDEXOF_OPERATOR_FIRST,"FIRST"],[Blockly.Msg.TEXT_INDEXOF_OPERATOR_LAST,"LAST"]];this.setHelpUrl(Blockly.Msg.TEXT_INDEXOF_HELPURL),this.setColour(160),this.setOutput(!0,"Number"),this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_INDEXOF_INPUT_INTEXT),this.appendValueInput("FIND").setCheck("String").appendField(new Blockly.FieldDropdown(e),"END"),Blockly.Msg.TEXT_INDEXOF_TAIL&&this.appendDummyInput().appendField(Blockly.Msg.TEXT_INDEXOF_TAIL),this.setInputsInline(!0),this.setTooltip(Blockly.Msg.TEXT_INDEXOF_TOOLTIP)}},Blockly.Blocks.text_charAt={init:function(){this.WHERE_OPTIONS=[[Blockly.Msg.TEXT_CHARAT_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_CHARAT_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_CHARAT_FIRST,"FIRST"],[Blockly.Msg.TEXT_CHARAT_LAST,"LAST"],[Blockly.Msg.TEXT_CHARAT_RANDOM,"RANDOM"]],this.setHelpUrl(Blockly.Msg.TEXT_CHARAT_HELPURL),this.setColour(160),this.setOutput(!0,"String"),this.appendValueInput("VALUE").setCheck("String").appendField(Blockly.Msg.TEXT_CHARAT_INPUT_INTEXT),this.appendDummyInput("AT"),this.setInputsInline(!0),this.updateAt(!0),this.setTooltip(Blockly.Msg.TEXT_CHARAT_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT").type==Blockly.INPUT_VALUE;return e.setAttribute("at",t),e},domToMutation:function(e){e="false"!=e.getAttribute("at"),this.updateAt(e)},updateAt:function(e){this.removeInput("AT"),this.removeInput("ORDINAL",!0),e?(this.appendValueInput("AT").setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL").appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT"),Blockly.Msg.TEXT_CHARAT_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_CHARAT_TAIL));var t=new Blockly.FieldDropdown(this.WHERE_OPTIONS,function(t){var o="FROM_START"==t||"FROM_END"==t;if(o!=e){var n=this.sourceBlock_;return n.updateAt(o),n.setFieldValue(t,"WHERE"),null}});this.getInput("AT").appendField(t,"WHERE")}},Blockly.Blocks.text_getSubstring={init:function(){this.WHERE_OPTIONS_1=[[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_START_FIRST,"FIRST"]],this.WHERE_OPTIONS_2=[[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_START,"FROM_START"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_FROM_END,"FROM_END"],[Blockly.Msg.TEXT_GET_SUBSTRING_END_LAST,"LAST"]],this.setHelpUrl(Blockly.Msg.TEXT_GET_SUBSTRING_HELPURL),this.setColour(160),this.appendValueInput("STRING").setCheck("String").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_INPUT_IN_TEXT),this.appendDummyInput("AT1"),this.appendDummyInput("AT2"),Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL),this.setInputsInline(!0),this.setOutput(!0,"String"),this.updateAt(1,!0),this.updateAt(2,!0),this.setTooltip(Blockly.Msg.TEXT_GET_SUBSTRING_TOOLTIP)},mutationToDom:function(){var e=document.createElement("mutation"),t=this.getInput("AT1").type==Blockly.INPUT_VALUE;return e.setAttribute("at1",t),t=this.getInput("AT2").type==Blockly.INPUT_VALUE,e.setAttribute("at2",t),e},domToMutation:function(e){var t="true"==e.getAttribute("at1");e="true"==e.getAttribute("at2"),this.updateAt(1,t),this.updateAt(2,e)},updateAt:function(e,t){this.removeInput("AT"+e),this.removeInput("ORDINAL"+e,!0),t?(this.appendValueInput("AT"+e).setCheck("Number"),Blockly.Msg.ORDINAL_NUMBER_SUFFIX&&this.appendDummyInput("ORDINAL"+e).appendField(Blockly.Msg.ORDINAL_NUMBER_SUFFIX)):this.appendDummyInput("AT"+e),2==e&&Blockly.Msg.TEXT_GET_SUBSTRING_TAIL&&(this.removeInput("TAIL",!0),this.appendDummyInput("TAIL").appendField(Blockly.Msg.TEXT_GET_SUBSTRING_TAIL));var o=new Blockly.FieldDropdown(this["WHERE_OPTIONS_"+e],function(o){var n="FROM_START"==o||"FROM_END"==o;if(n!=t){var i=this.sourceBlock_;return i.updateAt(e,n),i.setFieldValue(o,"WHERE"+e),null}});this.getInput("AT"+e).appendField(o,"WHERE"+e),1==e&&this.moveInputBefore("AT1","AT2")}},Blockly.Blocks.text_changeCase={init:function(){var e=[[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_UPPERCASE,"UPPERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_LOWERCASE,"LOWERCASE"],[Blockly.Msg.TEXT_CHANGECASE_OPERATOR_TITLECASE,"TITLECASE"]];this.setHelpUrl(Blockly.Msg.TEXT_CHANGECASE_HELPURL),this.setColour(160),this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(e),"CASE"),this.setOutput(!0,"String"),this.setTooltip(Blockly.Msg.TEXT_CHANGECASE_TOOLTIP)}},Blockly.Blocks.text_trim={init:function(){var e=[[Blockly.Msg.TEXT_TRIM_OPERATOR_BOTH,"BOTH"],[Blockly.Msg.TEXT_TRIM_OPERATOR_LEFT,"LEFT"],[Blockly.Msg.TEXT_TRIM_OPERATOR_RIGHT,"RIGHT"]];this.setHelpUrl(Blockly.Msg.TEXT_TRIM_HELPURL),this.setColour(160),this.appendValueInput("TEXT").setCheck("String").appendField(new Blockly.FieldDropdown(e),"MODE"),this.setOutput(!0,"String"),this.setTooltip(Blockly.Msg.TEXT_TRIM_TOOLTIP)}},Blockly.Blocks.text_print={init:function(){this.setHelpUrl(Blockly.Msg.TEXT_PRINT_HELPURL),this.setColour(160),this.interpolateMsg(Blockly.Msg.TEXT_PRINT_TITLE,["TEXT",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.TEXT_PRINT_TOOLTIP)}},Blockly.Blocks.text_prompt={init:function(){var e=[[Blockly.Msg.TEXT_PROMPT_TYPE_TEXT,"TEXT"],[Blockly.Msg.TEXT_PROMPT_TYPE_NUMBER,"NUMBER"]],t=this;this.setHelpUrl(Blockly.Msg.TEXT_PROMPT_HELPURL),this.setColour(160),e=new Blockly.FieldDropdown(e,function(e){"NUMBER"==e?t.changeOutput("Number"):t.changeOutput("String")}),this.appendDummyInput().appendField(e,"TYPE").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote0.png",12,12)).appendField(new Blockly.FieldTextInput(""),"TEXT").appendField(new Blockly.FieldImage(Blockly.pathToBlockly+"media/quote1.png",12,12)),this.setOutput(!0,"String"),t=this,this.setTooltip(function(){return"TEXT"==t.getFieldValue("TYPE")?Blockly.Msg.TEXT_PROMPT_TOOLTIP_TEXT:Blockly.Msg.TEXT_PROMPT_TOOLTIP_NUMBER})}},Blockly.Blocks.variables={},Blockly.Blocks.variables_get={init:function(){this.setHelpUrl(Blockly.Msg.VARIABLES_GET_HELPURL),this.setColour(330),this.appendDummyInput().appendField(Blockly.Msg.VARIABLES_GET_TITLE).appendField(new Blockly.FieldVariable(Blockly.Msg.VARIABLES_GET_ITEM),"VAR").appendField(Blockly.Msg.VARIABLES_GET_TAIL),this.setOutput(!0),this.setTooltip(Blockly.Msg.VARIABLES_GET_TOOLTIP),this.contextMenuMsg_=Blockly.Msg.VARIABLES_GET_CREATE_SET,this.contextMenuType_="variables_set"},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")},customContextMenu:function(e){var t={enabled:!0},o=this.getFieldValue("VAR");t.text=this.contextMenuMsg_.replace("%1",o),o=goog.dom.createDom("field",null,o),o.setAttribute("name","VAR"),o=goog.dom.createDom("block",null,o),o.setAttribute("type",this.contextMenuType_),t.callback=Blockly.ContextMenu.callbackFactory(this,o),e.push(t)}},Blockly.Blocks.variables_set={init:function(){this.setHelpUrl(Blockly.Msg.VARIABLES_SET_HELPURL),this.setColour(330),this.appendValueInput("VALUE").appendField(Blockly.Msg.VARIABLES_SET_TITLE).appendField(new Blockly.FieldVariable(Blockly.Msg.VARIABLES_SET_ITEM),"VAR").appendField(Blockly.Msg.VARIABLES_SET_TAIL),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(Blockly.Msg.VARIABLES_SET_TOOLTIP),this.contextMenuMsg_=Blockly.Msg.VARIABLES_SET_CREATE_GET,this.contextMenuType_="variables_get"},getVars:function(){return[this.getFieldValue("VAR")]},renameVar:function(e,t){Blockly.Names.equals(e,this.getFieldValue("VAR"))&&this.setFieldValue(t,"VAR")},customContextMenu:Blockly.Blocks.variables_get.customContextMenu},Blockly.Names.prototype.safeName_=function(e){return e?(e=e.replace(/[ !"#$%&'()=\-~^\\|`@{\[+;*:}\]<>,.?\/]/g,"_"),-1!="0123456789".indexOf(e[0])&&(e="_"+e)):e="unnamed",e};var originalBlocksMathNumberInit=Blockly.Blocks.math_number.init;Blockly.Blocks.math_number.init=function(){originalBlocksMathNumberInit.call(this),this.setColour(100)};var originalBlocksTextInit=Blockly.Blocks.text.init;Blockly.Blocks.text.init=function(){originalBlocksTextInit.call(this),this.setColour(100)},Blockly.loadAudio_=function(e,t){if(window.Audio&&e.length){for(var o,n=new window.Audio,i=0;i<e.length;i++){var r=e[i],s=r.match(/\.(\w+)$/);if(s&&n.canPlayType("audio/"+s[1])){o=new window.Audio(Blockly.pathToBlockly+r);break}}o&&o.play&&(o.volume=.01,o.play(),o.pause(),Blockly.SOUNDS_[t]=o)}},Blockly.Block.prototype.interpolateMsg=function(e){goog.asserts.assertString(e);var t=arguments[arguments.length-1];goog.asserts.assert(t===Blockly.ALIGN_LEFT||t===Blockly.ALIGN_CENTRE||t===Blockly.ALIGN_RIGHT,'Illegal final argument "%d" is not an alignment.',t),arguments.length=arguments.length-1;for(var o=e.split(/(%\d)/),n=0;n<o.length;n+=2){var i=goog.string.trim(o[n]),r=o[n+1];if(r){var s=parseInt(r.charAt(1),10),l=arguments[s];goog.asserts.assertArray(l,'Message symbol "%s" is out of range.',r),"array"==goog.typeOf(l[1])&&"Dropdown"==l[1][0]?this.appendDummyInput().appendField(i).setAlign(l[2]).appendField(new Blockly.FieldDropdown(l[1][1]),l[0]):"array"==goog.typeOf(l[1])&&"Colour"==l[1][0]?this.appendDummyInput().appendField(i).setAlign(l[2]).appendField(new Blockly.FieldColour(l[1][1]),l[0]):this.appendValueInput(l[0]).setCheck(l[1]).setAlign(l[2]).appendField(i),arguments[s]=null}else i&&this.appendDummyInput().setAlign(t).appendField(i)}for(var n=1;n<arguments.length-1;n++)goog.asserts.assert(null===arguments[n],'Input "%%s" not used in message: "%s"',n,e);this.setInputsInline(!e.match(/%1\s*$/))},function(){var e=this,t=e._,o={},n=Array.prototype,i=Object.prototype,r=Function.prototype,s=n.push,l=n.slice,a=n.concat,c=i.toString,u=i.hasOwnProperty,g=n.forEach,h=n.map,d=n.reduce,p=n.reduceRight,f=n.filter,m=n.every,y=n.some,_=n.indexOf,v=n.lastIndexOf,E=Array.isArray,B=Object.keys,C=r.bind,k=function(e){return e instanceof k?e:this instanceof k?(this._wrapped=e,void 0):new k(e)};"undefined"!=typeof exports?("undefined"!=typeof module&&module.exports&&(exports=module.exports=k),exports._=k):e._=k,k.VERSION="1.5.2";var b=k.each=k.forEach=function(e,t,n){if(null!=e)if(g&&e.forEach===g)e.forEach(t,n);else if(e.length===+e.length){for(var i=0,r=e.length;r>i;i++)if(t.call(n,e[i],i,e)===o)return}else for(var s=k.keys(e),i=0,r=s.length;r>i;i++)if(t.call(n,e[s[i]],s[i],e)===o)return};k.map=k.collect=function(e,t,o){var n=[];return null==e?n:h&&e.map===h?e.map(t,o):(b(e,function(e,i,r){n.push(t.call(o,e,i,r))}),n)};var A="Reduce of empty array with no initial value";k.reduce=k.foldl=k.inject=function(e,t,o,n){var i=arguments.length>2;if(null==e&&(e=[]),d&&e.reduce===d)return n&&(t=k.bind(t,n)),i?e.reduce(t,o):e.reduce(t);if(b(e,function(e,r,s){i?o=t.call(n,o,e,r,s):(o=e,i=!0)}),!i)throw new TypeError(A);return o},k.reduceRight=k.foldr=function(e,t,o,n){var i=arguments.length>2;if(null==e&&(e=[]),p&&e.reduceRight===p)return n&&(t=k.bind(t,n)),i?e.reduceRight(t,o):e.reduceRight(t);var r=e.length;if(r!==+r){var s=k.keys(e);r=s.length}if(b(e,function(l,a,c){a=s?s[--r]:--r,i?o=t.call(n,o,e[a],a,c):(o=e[a],i=!0)}),!i)throw new TypeError(A);return o},k.find=k.detect=function(e,t,o){var n;return T(e,function(e,i,r){return t.call(o,e,i,r)?(n=e,!0):void 0}),n},k.filter=k.select=function(e,t,o){var n=[];return null==e?n:f&&e.filter===f?e.filter(t,o):(b(e,function(e,i,r){t.call(o,e,i,r)&&n.push(e)}),n)},k.reject=function(e,t,o){return k.filter(e,function(e,n,i){return!t.call(o,e,n,i)},o)},k.every=k.all=function(e,t,n){t||(t=k.identity);var i=!0;return null==e?i:m&&e.every===m?e.every(t,n):(b(e,function(e,r,s){return(i=i&&t.call(n,e,r,s))?void 0:o}),!!i)};var T=k.some=k.any=function(e,t,n){t||(t=k.identity);var i=!1;return null==e?i:y&&e.some===y?e.some(t,n):(b(e,function(e,r,s){return i||(i=t.call(n,e,r,s))?o:void 0}),!!i)};k.contains=k.include=function(e,t){return null==e?!1:_&&e.indexOf===_?-1!=e.indexOf(t):T(e,function(e){return e===t})},k.invoke=function(e,t){var o=l.call(arguments,2),n=k.isFunction(t);return k.map(e,function(e){return(n?t:e[t]).apply(e,o)})},k.pluck=function(e,t){return k.map(e,function(e){return e[t]})},k.where=function(e,t,o){return k.isEmpty(t)?o?void 0:[]:k[o?"find":"filter"](e,function(e){for(var o in t)if(t[o]!==e[o])return!1;return!0})},k.findWhere=function(e,t){return k.where(e,t,!0)},k.max=function(e,t,o){if(!t&&k.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.max.apply(Math,e);if(!t&&k.isEmpty(e))return-1/0;var n={computed:-1/0,value:-1/0};return b(e,function(e,i,r){var s=t?t.call(o,e,i,r):e;s>n.computed&&(n={value:e,computed:s})}),n.value},k.min=function(e,t,o){if(!t&&k.isArray(e)&&e[0]===+e[0]&&e.length<65535)return Math.min.apply(Math,e);if(!t&&k.isEmpty(e))return 1/0;var n={computed:1/0,value:1/0};return b(e,function(e,i,r){var s=t?t.call(o,e,i,r):e;s<n.computed&&(n={value:e,computed:s})}),n.value},k.shuffle=function(e){var t,o=0,n=[];return b(e,function(e){t=k.random(o++),n[o-1]=n[t],n[t]=e}),n},k.sample=function(e,t,o){return arguments.length<2||o?e[k.random(e.length-1)]:k.shuffle(e).slice(0,Math.max(0,t))};var S=function(e){return k.isFunction(e)?e:function(t){return t[e]}};k.sortBy=function(e,t,o){var n=S(t);return k.pluck(k.map(e,function(e,t,i){return{value:e,index:t,criteria:n.call(o,e,t,i)}}).sort(function(e,t){var o=e.criteria,n=t.criteria;if(o!==n){if(o>n||void 0===o)return 1;if(n>o||void 0===n)return-1}return e.index-t.index}),"value")};var R=function(e){return function(t,o,n){var i={},r=null==o?k.identity:S(o);return b(t,function(o,s){var l=r.call(n,o,s,t);e(i,l,o)}),i}};k.groupBy=R(function(e,t,o){(k.has(e,t)?e[t]:e[t]=[]).push(o)}),k.indexBy=R(function(e,t,o){e[t]=o}),k.countBy=R(function(e,t){k.has(e,t)?e[t]++:e[t]=1}),k.sortedIndex=function(e,t,o,n){o=null==o?k.identity:S(o);for(var i=o.call(n,t),r=0,s=e.length;s>r;){var l=r+s>>>1;o.call(n,e[l])<i?r=l+1:s=l}return r},k.toArray=function(e){return e?k.isArray(e)?l.call(e):e.length===+e.length?k.map(e,k.identity):k.values(e):[]},k.size=function(e){return null==e?0:e.length===+e.length?e.length:k.keys(e).length},k.first=k.head=k.take=function(e,t,o){return null==e?void 0:null==t||o?e[0]:l.call(e,0,t)},k.initial=function(e,t,o){return l.call(e,0,e.length-(null==t||o?1:t))},k.last=function(e,t,o){return null==e?void 0:null==t||o?e[e.length-1]:l.call(e,Math.max(e.length-t,0))},k.rest=k.tail=k.drop=function(e,t,o){return l.call(e,null==t||o?1:t)},k.compact=function(e){return k.filter(e,k.identity)};var w=function(e,t,o){return t&&k.every(e,k.isArray)?a.apply(o,e):(b(e,function(e){k.isArray(e)||k.isArguments(e)?t?s.apply(o,e):w(e,t,o):o.push(e)}),o)};k.flatten=function(e,t){return w(e,t,[])},k.without=function(e){return k.difference(e,l.call(arguments,1))},k.uniq=k.unique=function(e,t,o,n){k.isFunction(t)&&(n=o,o=t,t=!1);var i=o?k.map(e,o,n):e,r=[],s=[];return b(i,function(o,n){(t?n&&s[s.length-1]===o:k.contains(s,o))||(s.push(o),r.push(e[n]))}),r},k.union=function(){return k.uniq(k.flatten(arguments,!0))},k.intersection=function(e){var t=l.call(arguments,1);return k.filter(k.uniq(e),function(e){return k.every(t,function(t){return k.indexOf(t,e)>=0})})},k.difference=function(e){var t=a.apply(n,l.call(arguments,1));return k.filter(e,function(e){return!k.contains(t,e)})},k.zip=function(){for(var e=k.max(k.pluck(arguments,"length").concat(0)),t=new Array(e),o=0;e>o;o++)t[o]=k.pluck(arguments,""+o);return t},k.object=function(e,t){if(null==e)return{};for(var o={},n=0,i=e.length;i>n;n++)t?o[e[n]]=t[n]:o[e[n][0]]=e[n][1];return o},k.indexOf=function(e,t,o){if(null==e)return-1;var n=0,i=e.length;if(o){if("number"!=typeof o)return n=k.sortedIndex(e,t),e[n]===t?n:-1;n=0>o?Math.max(0,i+o):o}if(_&&e.indexOf===_)return e.indexOf(t,o);for(;i>n;n++)if(e[n]===t)return n;return-1},k.lastIndexOf=function(e,t,o){if(null==e)return-1;var n=null!=o;if(v&&e.lastIndexOf===v)return n?e.lastIndexOf(t,o):e.lastIndexOf(t);for(var i=n?o:e.length;i--;)if(e[i]===t)return i;return-1},k.range=function(e,t,o){arguments.length<=1&&(t=e||0,e=0),o=arguments[2]||1;for(var n=Math.max(Math.ceil((t-e)/o),0),i=0,r=new Array(n);n>i;)r[i++]=e,e+=o;return r};var D=function(){};k.bind=function(e,t){var o,n;if(C&&e.bind===C)return C.apply(e,l.call(arguments,1));if(!k.isFunction(e))throw new TypeError;return o=l.call(arguments,2),n=function(){if(!(this instanceof n))return e.apply(t,o.concat(l.call(arguments)));D.prototype=e.prototype;var i=new D;D.prototype=null;var r=e.apply(i,o.concat(l.call(arguments)));return Object(r)===r?r:i}},k.partial=function(e){var t=l.call(arguments,1);return function(){return e.apply(this,t.concat(l.call(arguments)))}},k.bindAll=function(e){var t=l.call(arguments,1);if(0===t.length)throw new Error("bindAll must be passed function names");return b(t,function(t){e[t]=k.bind(e[t],e)}),e},k.memoize=function(e,t){var o={};return t||(t=k.identity),function(){var n=t.apply(this,arguments);return k.has(o,n)?o[n]:o[n]=e.apply(this,arguments)}},k.delay=function(e,t){var o=l.call(arguments,2);return setTimeout(function(){return e.apply(null,o)},t)},k.defer=function(e){return k.delay.apply(k,[e,1].concat(l.call(arguments,1)))},k.throttle=function(e,t,o){var n,i,r,s=null,l=0;o||(o={});var a=function(){l=o.leading===!1?0:new Date,s=null,r=e.apply(n,i)};return function(){var c=new Date;l||o.leading!==!1||(l=c);var u=t-(c-l);return n=this,i=arguments,0>=u?(clearTimeout(s),s=null,l=c,r=e.apply(n,i)):s||o.trailing===!1||(s=setTimeout(a,u)),r}},k.debounce=function(e,t,o){var n,i,r,s,l;return function(){r=this,i=arguments,s=new Date;var a=function(){var c=new Date-s;t>c?n=setTimeout(a,t-c):(n=null,o||(l=e.apply(r,i)))},c=o&&!n;return n||(n=setTimeout(a,t)),c&&(l=e.apply(r,i)),l}},k.once=function(e){var t,o=!1;return function(){return o?t:(o=!0,t=e.apply(this,arguments),e=null,t)}},k.wrap=function(e,t){return function(){var o=[e];return s.apply(o,arguments),t.apply(this,o)}},k.compose=function(){var e=arguments;return function(){for(var t=arguments,o=e.length-1;o>=0;o--)t=[e[o].apply(this,t)];return t[0]}},k.after=function(e,t){return function(){return--e<1?t.apply(this,arguments):void 0}},k.keys=B||function(e){if(e!==Object(e))throw new TypeError("Invalid object");var t=[];for(var o in e)k.has(e,o)&&t.push(o);return t},k.values=function(e){for(var t=k.keys(e),o=t.length,n=new Array(o),i=0;o>i;i++)n[i]=e[t[i]];return n},k.pairs=function(e){for(var t=k.keys(e),o=t.length,n=new Array(o),i=0;o>i;i++)n[i]=[t[i],e[t[i]]];return n},k.invert=function(e){for(var t={},o=k.keys(e),n=0,i=o.length;i>n;n++)t[e[o[n]]]=o[n];return t},k.functions=k.methods=function(e){var t=[];for(var o in e)k.isFunction(e[o])&&t.push(o);return t.sort()},k.extend=function(e){return b(l.call(arguments,1),function(t){if(t)for(var o in t)e[o]=t[o]}),e},k.pick=function(e){var t={},o=a.apply(n,l.call(arguments,1));return b(o,function(o){o in e&&(t[o]=e[o])}),t},k.omit=function(e){var t={},o=a.apply(n,l.call(arguments,1));for(var i in e)k.contains(o,i)||(t[i]=e[i]);return t},k.defaults=function(e){return b(l.call(arguments,1),function(t){if(t)for(var o in t)void 0===e[o]&&(e[o]=t[o])}),e},k.clone=function(e){return k.isObject(e)?k.isArray(e)?e.slice():k.extend({},e):e},k.tap=function(e,t){return t(e),e};var I=function(e,t,o,n){if(e===t)return 0!==e||1/e==1/t;if(null==e||null==t)return e===t;e instanceof k&&(e=e._wrapped),t instanceof k&&(t=t._wrapped);var i=c.call(e);if(i!=c.call(t))return!1;switch(i){case"[object String]":return e==String(t);case"[object Number]":return e!=+e?t!=+t:0==e?1/e==1/t:e==+t;case"[object Date]":case"[object Boolean]":return+e==+t;case"[object RegExp]":return e.source==t.source&&e.global==t.global&&e.multiline==t.multiline&&e.ignoreCase==t.ignoreCase}if("object"!=typeof e||"object"!=typeof t)return!1;for(var r=o.length;r--;)if(o[r]==e)return n[r]==t;var s=e.constructor,l=t.constructor;if(s!==l&&!(k.isFunction(s)&&s instanceof s&&k.isFunction(l)&&l instanceof l))return!1;o.push(e),n.push(t);var a=0,u=!0;if("[object Array]"==i){if(a=e.length,u=a==t.length)for(;a--&&(u=I(e[a],t[a],o,n)););}else{for(var g in e)if(k.has(e,g)&&(a++,!(u=k.has(t,g)&&I(e[g],t[g],o,n))))break;if(u){for(g in t)if(k.has(t,g)&&!a--)break;u=!a}}return o.pop(),n.pop(),u};k.isEqual=function(e,t){return I(e,t,[],[])},k.isEmpty=function(e){if(null==e)return!0;if(k.isArray(e)||k.isString(e))return 0===e.length;for(var t in e)if(k.has(e,t))return!1;return!0},k.isElement=function(e){return!(!e||1!==e.nodeType)},k.isArray=E||function(e){return"[object Array]"==c.call(e)},k.isObject=function(e){return e===Object(e)},b(["Arguments","Function","String","Number","Date","RegExp"],function(e){k["is"+e]=function(t){return c.call(t)=="[object "+e+"]"}}),k.isArguments(arguments)||(k.isArguments=function(e){return!(!e||!k.has(e,"callee"))}),"function"!=typeof/./&&(k.isFunction=function(e){return"function"==typeof e}),k.isFinite=function(e){return isFinite(e)&&!isNaN(parseFloat(e))},k.isNaN=function(e){return k.isNumber(e)&&e!=+e},k.isBoolean=function(e){return e===!0||e===!1||"[object Boolean]"==c.call(e)},k.isNull=function(e){return null===e},k.isUndefined=function(e){return void 0===e},k.has=function(e,t){return u.call(e,t)},k.noConflict=function(){return e._=t,this},k.identity=function(e){return e},k.times=function(e,t,o){for(var n=Array(Math.max(0,e)),i=0;e>i;i++)n[i]=t.call(o,i);return n},k.random=function(e,t){return null==t&&(t=e,e=0),e+Math.floor(Math.random()*(t-e+1))};var F={escape:{"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;"}};F.unescape=k.invert(F.escape);var L={escape:new RegExp("["+k.keys(F.escape).join("")+"]","g"),unescape:new RegExp("("+k.keys(F.unescape).join("|")+")","g")};k.each(["escape","unescape"],function(e){k[e]=function(t){return null==t?"":(""+t).replace(L[e],function(t){return F[e][t]})}}),k.result=function(e,t){if(null==e)return void 0;var o=e[t];return k.isFunction(o)?o.call(e):o},k.mixin=function(e){b(k.functions(e),function(t){var o=k[t]=e[t];k.prototype[t]=function(){var e=[this._wrapped];return s.apply(e,arguments),P.call(this,o.apply(k,e))}})};var N=0;k.uniqueId=function(e){var t=++N+"";return e?e+t:t},k.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var O=/(.)^/,x={"'":"'","\\":"\\","\r":"r","\n":"n"," ":"t","\u2028":"u2028","\u2029":"u2029"},M=/\\|'|\r|\n|\t|\u2028|\u2029/g;k.template=function(e,t,o){var n;o=k.defaults({},o,k.templateSettings);var i=new RegExp([(o.escape||O).source,(o.interpolate||O).source,(o.evaluate||O).source].join("|")+"|$","g"),r=0,s="__p+='";e.replace(i,function(t,o,n,i,l){return s+=e.slice(r,l).replace(M,function(e){return"\\"+x[e]}),o&&(s+="'+\n((__t=("+o+"))==null?'':_.escape(__t))+\n'"),n&&(s+="'+\n((__t=("+n+"))==null?'':__t)+\n'"),i&&(s+="';\n"+i+"\n__p+='"),r=l+t.length,t}),s+="';\n",o.variable||(s="with(obj||{}){\n"+s+"}\n"),s="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+s+"return __p;\n";try{n=new Function(o.variable||"obj","_",s)}catch(l){throw l.source=s,l}if(t)return n(t,k);var a=function(e){return n.call(this,e,k)};return a.source="function("+(o.variable||"obj")+"){\n"+s+"}",a},k.chain=function(e){return k(e).chain()};var P=function(e){return this._chain?k(e).chain():e};k.mixin(k),b(["pop","push","reverse","shift","sort","splice","unshift"],function(e){var t=n[e];k.prototype[e]=function(){var o=this._wrapped;return t.apply(o,arguments),"shift"!=e&&"splice"!=e||0!==o.length||delete o[0],P.call(this,o)}}),b(["concat","join","slice"],function(e){var t=n[e];k.prototype[e]=function(){return P.call(this,t.apply(this._wrapped,arguments))}}),k.extend(k.prototype,{chain:function(){return this._chain=!0,this},value:function(){return this._wrapped}})}.call(this),function(){{var e,t=this,o=t.Backbone,n=[],i=(n.push,n.slice);n.splice}e="undefined"!=typeof exports?exports:t.Backbone={},e.VERSION="1.1.0";var r=t._;r||"undefined"==typeof require||(r=require("underscore")),e.$=t.jQuery||t.Zepto||t.ender||t.$,e.noConflict=function(){return t.Backbone=o,this},e.emulateHTTP=!1,e.emulateJSON=!1;var s=e.Events={on:function(e,t,o){if(!a(this,"on",e,[t,o])||!t)return this;this._events||(this._events={});var n=this._events[e]||(this._events[e]=[]);return n.push({callback:t,context:o,ctx:o||this}),this},once:function(e,t,o){if(!a(this,"once",e,[t,o])||!t)return this;var n=this,i=r.once(function(){n.off(e,i),t.apply(this,arguments)});return i._callback=t,this.on(e,i,o)},off:function(e,t,o){var n,i,s,l,c,u,g,h;if(!this._events||!a(this,"off",e,[t,o]))return this;if(!e&&!t&&!o)return this._events={},this;for(l=e?[e]:r.keys(this._events),c=0,u=l.length;u>c;c++)if(e=l[c],s=this._events[e]){if(this._events[e]=n=[],t||o)for(g=0,h=s.length;h>g;g++)i=s[g],(t&&t!==i.callback&&t!==i.callback._callback||o&&o!==i.context)&&n.push(i);n.length||delete this._events[e]}return this},trigger:function(e){if(!this._events)return this;var t=i.call(arguments,1);if(!a(this,"trigger",e,t))return this;var o=this._events[e],n=this._events.all;return o&&c(o,t),n&&c(n,arguments),this},stopListening:function(e,t,o){var n=this._listeningTo;if(!n)return this;var i=!t&&!o;o||"object"!=typeof t||(o=this),e&&((n={})[e._listenId]=e);for(var s in n)e=n[s],e.off(t,o,this),(i||r.isEmpty(e._events))&&delete this._listeningTo[s];return this}},l=/\s+/,a=function(e,t,o,n){if(!o)return!0;if("object"==typeof o){for(var i in o)e[t].apply(e,[i,o[i]].concat(n));return!1}if(l.test(o)){for(var r=o.split(l),s=0,a=r.length;a>s;s++)e[t].apply(e,[r[s]].concat(n));
32
32
  return!1}return!0},c=function(e,t){var o,n=-1,i=e.length,r=t[0],s=t[1],l=t[2];switch(t.length){case 0:for(;++n<i;)(o=e[n]).callback.call(o.ctx);return;case 1:for(;++n<i;)(o=e[n]).callback.call(o.ctx,r);return;case 2:for(;++n<i;)(o=e[n]).callback.call(o.ctx,r,s);return;case 3:for(;++n<i;)(o=e[n]).callback.call(o.ctx,r,s,l);return;default:for(;++n<i;)(o=e[n]).callback.apply(o.ctx,t)}},u={listenTo:"on",listenToOnce:"once"};r.each(u,function(e,t){s[t]=function(t,o,n){var i=this._listeningTo||(this._listeningTo={}),s=t._listenId||(t._listenId=r.uniqueId("l"));return i[s]=t,n||"object"!=typeof o||(n=this),t[e](o,n,this),this}}),s.bind=s.on,s.unbind=s.off,r.extend(e,s);var g=e.Model=function(e,t){var o=e||{};t||(t={}),this.cid=r.uniqueId("c"),this.attributes={},t.collection&&(this.collection=t.collection),t.parse&&(o=this.parse(o,t)||{}),o=r.defaults({},o,r.result(this,"defaults")),this.set(o,t),this.changed={},this.initialize.apply(this,arguments)};r.extend(g.prototype,s,{changed:null,validationError:null,idAttribute:"id",initialize:function(){},toJSON:function(){return r.clone(this.attributes)},sync:function(){return e.sync.apply(this,arguments)},get:function(e){return this.attributes[e]},escape:function(e){return r.escape(this.get(e))},has:function(e){return null!=this.get(e)},set:function(e,t,o){var n,i,s,l,a,c,u,g;if(null==e)return this;if("object"==typeof e?(i=e,o=t):(i={})[e]=t,o||(o={}),!this._validate(i,o))return!1;s=o.unset,a=o.silent,l=[],c=this._changing,this._changing=!0,c||(this._previousAttributes=r.clone(this.attributes),this.changed={}),g=this.attributes,u=this._previousAttributes,this.idAttribute in i&&(this.id=i[this.idAttribute]);for(n in i)t=i[n],r.isEqual(g[n],t)||l.push(n),r.isEqual(u[n],t)?delete this.changed[n]:this.changed[n]=t,s?delete g[n]:g[n]=t;if(!a){l.length&&(this._pending=!0);for(var h=0,d=l.length;d>h;h++)this.trigger("change:"+l[h],this,g[l[h]],o)}if(c)return this;if(!a)for(;this._pending;)this._pending=!1,this.trigger("change",this,o);return this._pending=!1,this._changing=!1,this},unset:function(e,t){return this.set(e,void 0,r.extend({},t,{unset:!0}))},clear:function(e){var t={};for(var o in this.attributes)t[o]=void 0;return this.set(t,r.extend({},e,{unset:!0}))},hasChanged:function(e){return null==e?!r.isEmpty(this.changed):r.has(this.changed,e)},changedAttributes:function(e){if(!e)return this.hasChanged()?r.clone(this.changed):!1;var t,o=!1,n=this._changing?this._previousAttributes:this.attributes;for(var i in e)r.isEqual(n[i],t=e[i])||((o||(o={}))[i]=t);return o},previous:function(e){return null!=e&&this._previousAttributes?this._previousAttributes[e]:null},previousAttributes:function(){return r.clone(this._previousAttributes)},fetch:function(e){e=e?r.clone(e):{},void 0===e.parse&&(e.parse=!0);var t=this,o=e.success;return e.success=function(n){return t.set(t.parse(n,e),e)?(o&&o(t,n,e),t.trigger("sync",t,n,e),void 0):!1},x(this,e),this.sync("read",this,e)},save:function(e,t,o){var n,i,s,l=this.attributes;if(null==e||"object"==typeof e?(n=e,o=t):(n={})[e]=t,o=r.extend({validate:!0},o),n&&!o.wait){if(!this.set(n,o))return!1}else if(!this._validate(n,o))return!1;n&&o.wait&&(this.attributes=r.extend({},l,n)),void 0===o.parse&&(o.parse=!0);var a=this,c=o.success;return o.success=function(e){a.attributes=l;var t=a.parse(e,o);return o.wait&&(t=r.extend(n||{},t)),r.isObject(t)&&!a.set(t,o)?!1:(c&&c(a,e,o),a.trigger("sync",a,e,o),void 0)},x(this,o),i=this.isNew()?"create":o.patch?"patch":"update","patch"===i&&(o.attrs=n),s=this.sync(i,this,o),n&&o.wait&&(this.attributes=l),s},destroy:function(e){e=e?r.clone(e):{};var t=this,o=e.success,n=function(){t.trigger("destroy",t,t.collection,e)};if(e.success=function(i){(e.wait||t.isNew())&&n(),o&&o(t,i,e),t.isNew()||t.trigger("sync",t,i,e)},this.isNew())return e.success(),!1;x(this,e);var i=this.sync("delete",this,e);return e.wait||n(),i},url:function(){var e=r.result(this,"urlRoot")||r.result(this.collection,"url")||O();return this.isNew()?e:e+("/"===e.charAt(e.length-1)?"":"/")+encodeURIComponent(this.id)},parse:function(e){return e},clone:function(){return new this.constructor(this.attributes)},isNew:function(){return null==this.id},isValid:function(e){return this._validate({},r.extend(e||{},{validate:!0}))},_validate:function(e,t){if(!t.validate||!this.validate)return!0;e=r.extend({},this.attributes,e);var o=this.validationError=this.validate(e,t)||null;return o?(this.trigger("invalid",this,o,r.extend(t,{validationError:o})),!1):!0}});var h=["keys","values","pairs","invert","pick","omit"];r.each(h,function(e){g.prototype[e]=function(){var t=i.call(arguments);return t.unshift(this.attributes),r[e].apply(r,t)}});var d=e.Collection=function(e,t){t||(t={}),t.model&&(this.model=t.model),void 0!==t.comparator&&(this.comparator=t.comparator),this._reset(),this.initialize.apply(this,arguments),e&&this.reset(e,r.extend({silent:!0},t))},p={add:!0,remove:!0,merge:!0},f={add:!0,remove:!1};r.extend(d.prototype,s,{model:g,initialize:function(){},toJSON:function(e){return this.map(function(t){return t.toJSON(e)})},sync:function(){return e.sync.apply(this,arguments)},add:function(e,t){return this.set(e,r.extend({merge:!1},t,f))},remove:function(e,t){var o=!r.isArray(e);e=o?[e]:r.clone(e),t||(t={});var n,i,s,l;for(n=0,i=e.length;i>n;n++)l=e[n]=this.get(e[n]),l&&(delete this._byId[l.id],delete this._byId[l.cid],s=this.indexOf(l),this.models.splice(s,1),this.length--,t.silent||(t.index=s,l.trigger("remove",l,this,t)),this._removeReference(l));return o?e[0]:e},set:function(e,t){t=r.defaults({},t,p),t.parse&&(e=this.parse(e,t));var o=!r.isArray(e);e=o?e?[e]:[]:r.clone(e);var n,i,s,l,a,c,u,h=t.at,d=this.model,f=this.comparator&&null==h&&t.sort!==!1,m=r.isString(this.comparator)?this.comparator:null,y=[],_=[],v={},E=t.add,B=t.merge,C=t.remove,k=!f&&E&&C?[]:!1;for(n=0,i=e.length;i>n;n++){if(a=e[n],s=a instanceof g?l=a:a[d.prototype.idAttribute],c=this.get(s))C&&(v[c.cid]=!0),B&&(a=a===l?l.attributes:a,t.parse&&(a=c.parse(a,t)),c.set(a,t),f&&!u&&c.hasChanged(m)&&(u=!0)),e[n]=c;else if(E){if(l=e[n]=this._prepareModel(a,t),!l)continue;y.push(l),l.on("all",this._onModelEvent,this),this._byId[l.cid]=l,null!=l.id&&(this._byId[l.id]=l)}k&&k.push(c||l)}if(C){for(n=0,i=this.length;i>n;++n)v[(l=this.models[n]).cid]||_.push(l);_.length&&this.remove(_,t)}if(y.length||k&&k.length)if(f&&(u=!0),this.length+=y.length,null!=h)for(n=0,i=y.length;i>n;n++)this.models.splice(h+n,0,y[n]);else{k&&(this.models.length=0);var b=k||y;for(n=0,i=b.length;i>n;n++)this.models.push(b[n])}if(u&&this.sort({silent:!0}),!t.silent){for(n=0,i=y.length;i>n;n++)(l=y[n]).trigger("add",l,this,t);(u||k&&k.length)&&this.trigger("sort",this,t)}return o?e[0]:e},reset:function(e,t){t||(t={});for(var o=0,n=this.models.length;n>o;o++)this._removeReference(this.models[o]);return t.previousModels=this.models,this._reset(),e=this.add(e,r.extend({silent:!0},t)),t.silent||this.trigger("reset",this,t),e},push:function(e,t){return this.add(e,r.extend({at:this.length},t))},pop:function(e){var t=this.at(this.length-1);return this.remove(t,e),t},unshift:function(e,t){return this.add(e,r.extend({at:0},t))},shift:function(e){var t=this.at(0);return this.remove(t,e),t},slice:function(){return i.apply(this.models,arguments)},get:function(e){return null==e?void 0:this._byId[e.id]||this._byId[e.cid]||this._byId[e]},at:function(e){return this.models[e]},where:function(e,t){return r.isEmpty(e)?t?void 0:[]:this[t?"find":"filter"](function(t){for(var o in e)if(e[o]!==t.get(o))return!1;return!0})},findWhere:function(e){return this.where(e,!0)},sort:function(e){if(!this.comparator)throw new Error("Cannot sort a set without a comparator");return e||(e={}),r.isString(this.comparator)||1===this.comparator.length?this.models=this.sortBy(this.comparator,this):this.models.sort(r.bind(this.comparator,this)),e.silent||this.trigger("sort",this,e),this},pluck:function(e){return r.invoke(this.models,"get",e)},fetch:function(e){e=e?r.clone(e):{},void 0===e.parse&&(e.parse=!0);var t=e.success,o=this;return e.success=function(n){var i=e.reset?"reset":"set";o[i](n,e),t&&t(o,n,e),o.trigger("sync",o,n,e)},x(this,e),this.sync("read",this,e)},create:function(e,t){if(t=t?r.clone(t):{},!(e=this._prepareModel(e,t)))return!1;t.wait||this.add(e,t);var o=this,n=t.success;return t.success=function(e,t,i){i.wait&&o.add(e,i),n&&n(e,t,i)},e.save(null,t),e},parse:function(e){return e},clone:function(){return new this.constructor(this.models)},_reset:function(){this.length=0,this.models=[],this._byId={}},_prepareModel:function(e,t){if(e instanceof g)return e.collection||(e.collection=this),e;t=t?r.clone(t):{},t.collection=this;var o=new this.model(e,t);return o.validationError?(this.trigger("invalid",this,o.validationError,t),!1):o},_removeReference:function(e){this===e.collection&&delete e.collection,e.off("all",this._onModelEvent,this)},_onModelEvent:function(e,t,o,n){("add"!==e&&"remove"!==e||o===this)&&("destroy"===e&&this.remove(t,n),t&&e==="change:"+t.idAttribute&&(delete this._byId[t.previous(t.idAttribute)],null!=t.id&&(this._byId[t.id]=t)),this.trigger.apply(this,arguments))}});var m=["forEach","each","map","collect","reduce","foldl","inject","reduceRight","foldr","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","max","min","toArray","size","first","head","take","initial","rest","tail","drop","last","without","difference","indexOf","shuffle","lastIndexOf","isEmpty","chain"];r.each(m,function(e){d.prototype[e]=function(){var t=i.call(arguments);return t.unshift(this.models),r[e].apply(r,t)}});var y=["groupBy","countBy","sortBy"];r.each(y,function(e){d.prototype[e]=function(t,o){var n=r.isFunction(t)?t:function(e){return e.get(t)};return r[e](this.models,n,o)}});var _=e.View=function(e){this.cid=r.uniqueId("view"),e||(e={}),r.extend(this,r.pick(e,E)),this._ensureElement(),this.initialize.apply(this,arguments),this.delegateEvents()},v=/^(\S+)\s*(.*)$/,E=["model","collection","el","id","attributes","className","tagName","events"];r.extend(_.prototype,s,{tagName:"div",$:function(e){return this.$el.find(e)},initialize:function(){},render:function(){return this},remove:function(){return this.$el.remove(),this.stopListening(),this},setElement:function(t,o){return this.$el&&this.undelegateEvents(),this.$el=t instanceof e.$?t:e.$(t),this.el=this.$el[0],o!==!1&&this.delegateEvents(),this},delegateEvents:function(e){if(!e&&!(e=r.result(this,"events")))return this;this.undelegateEvents();for(var t in e){var o=e[t];if(r.isFunction(o)||(o=this[e[t]]),o){var n=t.match(v),i=n[1],s=n[2];o=r.bind(o,this),i+=".delegateEvents"+this.cid,""===s?this.$el.on(i,o):this.$el.on(i,s,o)}}return this},undelegateEvents:function(){return this.$el.off(".delegateEvents"+this.cid),this},_ensureElement:function(){if(this.el)this.setElement(r.result(this,"el"),!1);else{var t=r.extend({},r.result(this,"attributes"));this.id&&(t.id=r.result(this,"id")),this.className&&(t["class"]=r.result(this,"className"));var o=e.$("<"+r.result(this,"tagName")+">").attr(t);this.setElement(o,!1)}}}),e.sync=function(t,o,n){var i=C[t];r.defaults(n||(n={}),{emulateHTTP:e.emulateHTTP,emulateJSON:e.emulateJSON});var s={type:i,dataType:"json"};if(n.url||(s.url=r.result(o,"url")||O()),null!=n.data||!o||"create"!==t&&"update"!==t&&"patch"!==t||(s.contentType="application/json",s.data=JSON.stringify(n.attrs||o.toJSON(n))),n.emulateJSON&&(s.contentType="application/x-www-form-urlencoded",s.data=s.data?{model:s.data}:{}),n.emulateHTTP&&("PUT"===i||"DELETE"===i||"PATCH"===i)){s.type="POST",n.emulateJSON&&(s.data._method=i);var l=n.beforeSend;n.beforeSend=function(e){return e.setRequestHeader("X-HTTP-Method-Override",i),l?l.apply(this,arguments):void 0}}"GET"===s.type||n.emulateJSON||(s.processData=!1),"PATCH"===s.type&&B&&(s.xhr=function(){return new ActiveXObject("Microsoft.XMLHTTP")});var a=n.xhr=e.ajax(r.extend(s,n));return o.trigger("request",o,a,n),a};var B=!("undefined"==typeof window||!window.ActiveXObject||window.XMLHttpRequest&&(new XMLHttpRequest).dispatchEvent),C={create:"POST",update:"PUT",patch:"PATCH","delete":"DELETE",read:"GET"};e.ajax=function(){return e.$.ajax.apply(e.$,arguments)};var k=e.Router=function(e){e||(e={}),e.routes&&(this.routes=e.routes),this._bindRoutes(),this.initialize.apply(this,arguments)},b=/\((.*?)\)/g,A=/(\(\?)?:\w+/g,T=/\*\w+/g,S=/[\-{}\[\]+?.,\\\^$|#\s]/g;r.extend(k.prototype,s,{initialize:function(){},route:function(t,o,n){r.isRegExp(t)||(t=this._routeToRegExp(t)),r.isFunction(o)&&(n=o,o=""),n||(n=this[o]);var i=this;return e.history.route(t,function(r){var s=i._extractParameters(t,r);n&&n.apply(i,s),i.trigger.apply(i,["route:"+o].concat(s)),i.trigger("route",o,s),e.history.trigger("route",i,o,s)}),this},navigate:function(t,o){return e.history.navigate(t,o),this},_bindRoutes:function(){if(this.routes){this.routes=r.result(this,"routes");for(var e,t=r.keys(this.routes);null!=(e=t.pop());)this.route(e,this.routes[e])}},_routeToRegExp:function(e){return e=e.replace(S,"\\$&").replace(b,"(?:$1)?").replace(A,function(e,t){return t?e:"([^/]+)"}).replace(T,"(.*?)"),new RegExp("^"+e+"$")},_extractParameters:function(e,t){var o=e.exec(t).slice(1);return r.map(o,function(e){return e?decodeURIComponent(e):null})}});var R=e.History=function(){this.handlers=[],r.bindAll(this,"checkUrl"),"undefined"!=typeof window&&(this.location=window.location,this.history=window.history)},w=/^[#\/]|\s+$/g,D=/^\/+|\/+$/g,I=/msie [\w.]+/,F=/\/$/,L=/[?#].*$/;R.started=!1,r.extend(R.prototype,s,{interval:50,getHash:function(e){var t=(e||this).location.href.match(/#(.*)$/);return t?t[1]:""},getFragment:function(e,t){if(null==e)if(this._hasPushState||!this._wantsHashChange||t){e=this.location.pathname;var o=this.root.replace(F,"");e.indexOf(o)||(e=e.slice(o.length))}else e=this.getHash();return e.replace(w,"")},start:function(t){if(R.started)throw new Error("Backbone.history has already been started");R.started=!0,this.options=r.extend({root:"/"},this.options,t),this.root=this.options.root,this._wantsHashChange=this.options.hashChange!==!1,this._wantsPushState=!!this.options.pushState,this._hasPushState=!!(this.options.pushState&&this.history&&this.history.pushState);var o=this.getFragment(),n=document.documentMode,i=I.exec(navigator.userAgent.toLowerCase())&&(!n||7>=n);this.root=("/"+this.root+"/").replace(D,"/"),i&&this._wantsHashChange&&(this.iframe=e.$('<iframe src="javascript:0" tabindex="-1" />').hide().appendTo("body")[0].contentWindow,this.navigate(o)),this._hasPushState?e.$(window).on("popstate",this.checkUrl):this._wantsHashChange&&"onhashchange"in window&&!i?e.$(window).on("hashchange",this.checkUrl):this._wantsHashChange&&(this._checkUrlInterval=setInterval(this.checkUrl,this.interval)),this.fragment=o;var s=this.location,l=s.pathname.replace(/[^\/]$/,"$&/")===this.root;if(this._wantsHashChange&&this._wantsPushState){if(!this._hasPushState&&!l)return this.fragment=this.getFragment(null,!0),this.location.replace(this.root+this.location.search+"#"+this.fragment),!0;this._hasPushState&&l&&s.hash&&(this.fragment=this.getHash().replace(w,""),this.history.replaceState({},document.title,this.root+this.fragment+s.search))}return this.options.silent?void 0:this.loadUrl()},stop:function(){e.$(window).off("popstate",this.checkUrl).off("hashchange",this.checkUrl),clearInterval(this._checkUrlInterval),R.started=!1},route:function(e,t){this.handlers.unshift({route:e,callback:t})},checkUrl:function(){var e=this.getFragment();return e===this.fragment&&this.iframe&&(e=this.getFragment(this.getHash(this.iframe))),e===this.fragment?!1:(this.iframe&&this.navigate(e),this.loadUrl(),void 0)},loadUrl:function(e){return e=this.fragment=this.getFragment(e),r.any(this.handlers,function(t){return t.route.test(e)?(t.callback(e),!0):void 0})},navigate:function(e,t){if(!R.started)return!1;t&&t!==!0||(t={trigger:!!t});var o=this.root+(e=this.getFragment(e||""));if(e=e.replace(L,""),this.fragment!==e){if(this.fragment=e,""===e&&"/"!==o&&(o=o.slice(0,-1)),this._hasPushState)this.history[t.replace?"replaceState":"pushState"]({},document.title,o);else{if(!this._wantsHashChange)return this.location.assign(o);this._updateHash(this.location,e,t.replace),this.iframe&&e!==this.getFragment(this.getHash(this.iframe))&&(t.replace||this.iframe.document.open().close(),this._updateHash(this.iframe.location,e,t.replace))}return t.trigger?this.loadUrl(e):void 0}},_updateHash:function(e,t,o){if(o){var n=e.href.replace(/(javascript:|#).*$/,"");e.replace(n+"#"+t)}else e.hash="#"+t}}),e.history=new R;var N=function(e,t){var o,n=this;o=e&&r.has(e,"constructor")?e.constructor:function(){return n.apply(this,arguments)},r.extend(o,n,t);var i=function(){this.constructor=o};return i.prototype=n.prototype,o.prototype=new i,e&&r.extend(o.prototype,e),o.__super__=n.prototype,o};g.extend=d.extend=k.extend=_.extend=R.extend=N;var O=function(){throw new Error('A "url" property or function must be specified')},x=function(e,t){var o=t.error;t.error=function(n){o&&o(e,n,t),e.trigger("error",e,n,t)}}}.call(this),function(){window.SmalrubyEditor={},window.changed=!1,window.textEditor=null,window.blockMode=!0,window.successMessage=function(e,t,o){var n;null==t&&(t=""),null==o&&(o="#messages"),n=$('<div class="alert alert-success" style="display: none">').append('<h4><i class="icon-star"></i>'+e+"</h4>").append(t),$(o).append(n),n.fadeIn("slow").delay(3e3).fadeOut("slow")},window.errorMessage=function(e,t){var o;null==t&&(t="#messages"),o=$('<div class="alert alert-error" style="display: none">').append('<button type="button" class="close" data-dismiss="alert">×</button>').append('<h4><i class="icon-exclamation-sign"></i>エラー</h4>').append(e),$(t).append(o),o.fadeIn("slow")},window.clearMessages=function(e){return null==e&&(e="#messages"),$(e).empty()},window.Smalruby={Models:{},Collections:{},Views:{},Routers:{},initialize:function(){var e,t,o=this;return $.ajaxSetup({headers:{"X-CSRF-Token":$('meta[name="csrf-token"]').attr("content")}}),_.extend(_.templateSettings,{escape:/{{-([\s\S]+?)}}/,evaluate:/{{([\s\S]+?)}}/,interpolate:/{{=([\s\S]+?)}}/}),Blockly.Toolbox.TreeNode.prototype.onMouseDown=function(){return this.hasChildren()&&this.isUserCollapsible_?(this.toggle(),this.select()):this.isSelected()||this.select(),this.updateRow()},this.Collections.CharacterSet=new Smalruby.CharacterSet,this.Views.MainMenuView=new Smalruby.MainMenuView,this.Views.SigninModalView=new Smalruby.SigninModalView({el:$("#signin-modal")}),this.Views.CharacterSelectorView=new Smalruby.CharacterSelectorView({model:this.Collections.CharacterSet}),this.Views.CharacterModalView=new Smalruby.CharacterModalView({el:$("#character-modal")}),this.Views.LoadModalView=new Smalruby.LoadModalView({el:$("#load-modal")}),this.Views.ResetModalView=new Smalruby.ResetModalView({el:$("#reset-modal")}),Smalruby.downloading=!1,window.onbeforeunload=function(){return!Smalruby.downloading&&window.changed?"作成中のプログラムが消えてしまうよ!":(Smalruby.downloading=!1,void 0)},Blockly.HSV_SATURATION=1,Blockly.HSV_VALUE=.8,Blockly.inject(document.getElementById("blockly-div"),{path:"/blockly/",toolbox:document.getElementById("toolbox"),trashcan:!0}),Blockly.Toolbox.tree_.expandAll(),this.blocklyFirst=!0,this.blocklyLoading=!1,Blockly.addChangeListener(function(){return Smalruby.changedAfterTranslating=!0,o.blocklyFirst?(o.blocklyFirst=!1,void 0):o.blocklyLoading?(o.blocklyLoading=!1,void 0):window.changed=!0}),window.textEditor=t=ace.edit("text-editor"),t.setTheme("ace/theme/clouds"),t.setShowInvisibles(!0),t.gotoLine(0,0),t.on("change",function(){return o.translating?void 0:(window.changed=!0,Smalruby.changedAfterTranslating=!0)}),e=t.getSession(),e.setMode("ace/mode/ruby"),e.setTabSize(2),e.setUseSoftTabs(!0)},loadXml:function(e,t){var o,n,i,r,s;for(null==t&&(t=Blockly.mainWorkspace),r=Blockly.Xml.textToDom(e),t.clear(),n=[],i=0;s=r.childNodes[i];)"character"===s.nodeName.toLowerCase()&&(o=new Smalruby.Character({name:s.getAttribute("name"),costumes:s.getAttribute("costumes").split(","),x:parseInt(s.getAttribute("x"),10),y:parseInt(s.getAttribute("y"),10),angle:parseInt(s.getAttribute("angle"),10),rotationStyle:s.getAttribute("rotation_style")||"free"}),n.push(o)),i++;return Smalruby.Collections.CharacterSet.reset(n),Blockly.Xml.domToWorkspace(t,r)},dumpXml:function(e,t){var o,n;return null==e&&(e=Blockly.mainWorkspace),null==t&&(t=Smalruby.Collections.CharacterSet),n=Blockly.Xml.workspaceToDom(e),o=n.firstChild,t.each(function(e){var t,i;return t=goog.dom.createDom("character"),t.setAttribute("x",e.get("x")),t.setAttribute("y",e.get("y")),t.setAttribute("name",e.get("name")),t.setAttribute("costumes",e.get("costumes").join(",")),t.setAttribute("angle",e.get("angle")),i=e.get("rotationStyle"),"free"!==i&&t.setAttribute("rotation_style",i),n.insertBefore(t,o)}),Blockly.Xml.domToPrettyText(n)},ignoreEnterKey:function(e){return e.find("input[type=text]").keypress(function(e){return e||(e=window.event),13===e.keyCode?!1:!0})},reset:function(){return this.blocklyLoading=!0,Blockly.mainWorkspace.clear(),this.Collections.CharacterSet.reset(),$("#filename").val(""),window.textEditor.getSession().getDocument().setValue(""),window.textEditor.moveCursorTo(0,0),window.changed=!1},bm:function(e){var t;return t=Blockly.Msg[e],"string"==typeof t?t:e}},$(document).ready(function(){return Smalruby.initialize()})}.call(this),function(){Smalruby.Character=Backbone.Model.extend({defaults:{name:null,costumes:[],costumeIndex:0,x:0,y:0,angle:0,rotationStyle:"free",visible:!0,using:!1},initialize:function(){return this.objects=[],0===this.get("costumes").length?this.set({costumes:[Smalruby.Character.PRESET_COSTUMES[0]]}):void 0},validate:function(e){var t,o;return t=[],o=e.name,(_.isUndefined(o)||_.isNull(o)||_.isString(o)&&0===o.length)&&t.push({attr:"name",message:"Name is required"}),_.isString(o)&&o.match(/^[0-9A-Z]|[!\"\#$%&\'()\-=^~\\|@`\[{;+:*\]},<.>/?]/)&&t.push({attr:"name",message:"Name is invalid"}),t.length>0?t:void 0},link:function(e){return this.objects.push(e),this.objects=_.uniq(this.objects),this.objects.length>0?this.set("using",!0):void 0},unlink:function(e){return this.objects=_.without(this.objects,e),0===this.objects.length?this.set("using",!1):void 0},namePrefix:function(){return Smalruby.Character.costumeToNamePrefix(this.get("name"))},costume:function(){return this.get("costumes")[this.get("costumeIndex")]},costumeUrl:function(e){var t;return null==e&&(e=this.get("costumeIndex")),t=this.get("costumes")[e],-1===_.indexOf(Smalruby.Character.PRESET_COSTUMES,t)?t:"/smalruby/assets/"+t},nextCostume:function(){var e;return e=this.get("costumeIndex")+1,e>=this.get("costumes").length&&(e=0),this.set({costumeIndex:e}),e},rotationStyleIconName:function(){switch(this.get("rotationStyle")){case"free":return"icon-repeat";case"left_right":return"icon-resize-horizontal";case"none":return"icon-arrow-right"}},rotateImage:function(e){var t,o;switch(t=this.get("angle"),this.get("rotationStyle")){case"free":o="rotate("+t+"deg) scaleX(1)";break;case"left_right":o=90>t||t>=270?"rotate(0deg) scaleX(1)":"rotate(0deg) scaleX(-1)";break;case"none":o="rotate(0deg) scaleX(1)"}return $(e).css({"-moz-transform":o,"-webkit-transform":o,transform:o})}},{PRESET_COSTUMES:["car1.png","car2.png","car3.png","car4.png","ball1.png","ball2.png","ball3.png","ball4.png","ball5.png","ball6.png","cat1.png","cat2.png","cat3.png","frog1.png","ryu1.png","ryu2.png","taichi1.png","taichi2.png"],costumeToNamePrefix:function(e){return e.substring(e.lastIndexOf("/")+1).replace(/\.[^.]*$/,"").replace(/[\d]*$/,"")}})}.call(this),function(){Smalruby.Scene=Backbone.Model.extend({defaults:{width:640,height:480,color:"black"}})}.call(this),function(){Smalruby.SourceCode=Backbone.Model.extend({defaults:{filename:null,data:null},initialize:function(){var e,t,o;return this.get("filename")||(o=Smalruby.Views.MainMenuView.getFilename(),0===o.length&&(e=Smalruby.Collections.CharacterSet.first(),o=e?""+e.get("name")+".rb":"1.rb"),this.set("filename",o)),this.get("data")?void 0:(t=this.get("filename").match(/\.xml$/)?Smalruby.dumpXml():window.blockMode?Blockly.Ruby.workspaceToCode():window.textEditor.getSession().getDocument().getValue(),this.set("data",t))},getRbxmlFilename:function(){var e;return e=this.get("filename"),e.match(/\.rb\.xml$/)?e:e.match(/\.rb$/)?e+".xml":e.match(/\.xml$/)?e.replace(/\.xml$/,".rb.xml"):e+".rb.xml"},run:function(){return this.post_("run")},check:function(){return this.post_("check")},save2:function(){return this.post_("")},write:function(e){var t;return null==e&&(e=!1),t="write",e&&(t+="?force=1"),this.delete_(t)},toBlocks:function(){return this.post_("to_blocks","html")},post_:function(e,t){var o;return null==t&&(t="json"),o=$.Deferred(),$.ajax({url:"/source_codes/"+e,type:"POST",data:{source_code:{filename:this.get("filename"),data:this.get("data")}},dataType:t,success:function(e){return o.resolve(e)},error:o.reject}),o.promise()},delete_:function(e){var t;return t=$.Deferred(),$.ajax({url:"/source_codes/"+e,type:"DELETE",dataType:"json",success:function(e){return t.resolve(e)},error:t.reject}),t.promise()}})}.call(this),function(){Smalruby.CharacterSet=Backbone.Collection.extend({model:Smalruby.Character,uniqueName:function(e){var t,o,n;return null==e&&(e=Smalruby.Character.PRESET_COSTUMES[0]),o=e.substring(e.lastIndexOf("/")+1).replace(/\.[^.]*$/,"").replace(/[\d]*$/,""),t=0,n=new RegExp("^"+o+"(\\d+)$"),_.each(this.pluck("name"),function(e){return e.match(n)?t=_.max([t,parseInt(RegExp.$1)]):void 0}),""+o+(t+1)}})}.call(this),function(){Smalruby.CharacterModalView=Backbone.View.extend({model:new Smalruby.Character,events:{"click #character-modal-costume-selector a":"onSelectCostume","click #character_rotation_style_free":"onRotationStyleFree","click #character_rotation_style_left_right":"onRotationStyleLeftRight","click #character_rotation_style_none":"onRotationStyleNone","click #character-modal-ok-button":"onOk"},previewZoomLevel:.5,initialize:function(){var e,t,o,n=this;return this.target=null,$("#character-modal-costume-selector img").on("dragstart",function(e){return e.preventDefault()}),o=function(e){return n.model.set({x:parseInt(e.left/n.previewZoomLevel),y:parseInt(e.top/n.previewZoomLevel)})},$("#character-modal-character").draggable({containment:"#character-modal-preview",cursor:"move",drag:function(e,t){return o(t.position)}}),$("#character-modal-preview").droppable({drop:function(e,t){return o(t.draggable.position())}}),this.$el.find('input[name="character[name]"]').keypress(function(e){return e||(e=window.event),13===e.keyCode?!1:!0}),t=this,e=function(){return t.model.set({name:$(this).val()}),t.nameChanged=!0},this.$el.find('input[name="character[name]"]').change(e),this.$el.find('input[name="character[name]"]').keyup(e),this.$el.find('input[name="character[x]"]').change(function(){return t.model.set({x:$(this).val()})}),this.$el.find('input[name="character[y]"]').change(function(){return t.model.set({y:$(this).val()})}),this.$el.find('input[name="character[angle]"]').change(function(){return t.model.set({angle:$(this).val()})}),this.listenTo(this.model,"change:name",this.onChangeName),this.listenTo(this.model,"change:x",this.onChangeX),this.listenTo(this.model,"change:y",this.onChangeY),this.listenTo(this.model,"change:angle",this.onChangeAngle),this.listenTo(this.model,"change:costumes",this.onChangeCostumes),this.listenTo(this.model,"change:rotationStyle",this.onChangeRotationStyle),this.listenTo(this.model,"change",this.onChange),this.callAllOnChangeAttributes_()},render:function(){var e;return this.onChange(this.model),this.$el.modal("show"),e=function(){var t;return this.readImageSizeflag?(t=$("#character-modal-costume-selector .active img"),t.width()>0?($("#character-modal-character").css({width:""+t.width()/2+"px",height:""+t.height()/2+"px"}),this.readImageSizeflag=!1):setTimeout(_.bind(e,this),50)):void 0},this.readImageSizeflag?setTimeout(_.bind(e,this),1):void 0},callAllOnChangeAttributes_:function(){return this.onChangeName(this.model,this.model.get("name")),this.onChangeX(this.model,this.model.get("x")),this.onChangeY(this.model,this.model.get("y")),this.onChangeAngle(this.model,this.model.get("angle")),this.onChangeCostumes(this.model,this.model.get("costumes")),this.onChangeRotationStyle(this.model,this.model.get("rotationStyle"))},onChangeName:function(e,t){return this.$el.find('input[name="character[name]"]').val(t)},onChangeX:function(e,t){return this.$el.find('input[name="character[x]"]').val(t),$("#character_x_value").text(t),$("#character-modal-character").css("left",parseInt(t*this.previewZoomLevel))},onChangeY:function(e,t){return this.$el.find('input[name="character[y]"]').val(t),$("#character_y_value").text(t),$("#character-modal-character").css("top",parseInt(t*this.previewZoomLevel))},onChangeAngle:function(e,t){var o;return this.$el.find('input[name="character[angle]"]').val(t),$("#character_angle_value").text(""+t+"°"),o="rotate("+t+"deg)",$("#character_angle_vector").css({"-moz-transform":o,"-webkit-transform":o,transform:o}),this.model.rotateImage("#character-modal-character")},onChangeCostumes:function(e){var t,o;return t=$("<img>").attr({src:e.costumeUrl(),alt:e.costume()}),$("#character-modal-character img").replaceWith(t),this.$el.find("#character-modal-costume-selector a.thumbnail").removeClass("active"),o=this.$el.find('#character-modal-costume-selector img[alt="'+e.costume()+'"]'),o.parent().addClass("active"),o.width()>0?$("#character-modal-character").css({width:""+o.width()/2+"px",height:""+o.height()/2+"px"}):this.readImageSizeflag=!0},onChangeRotationStyle:function(e,t){return $("#character_rotation_style button.btn").removeClass("btn-primary"),$("#character_rotation_style_"+t).addClass("btn-primary"),this.onChangeAngle(this.model,this.model.get("angle"))},onChange:function(){var e;if(this.target)return this.$el.find('.control-group[for="character[name]"]').removeClass("error"),this.$el.find("#character-modal-ok-button").removeClass("disabled").removeAttr("disabled"),this.model.isValid()||(this.$el.find('.control-group[for="character[name]"]').addClass("error"),this.$el.find("#character-modal-ok-button").addClass("disabled").attr({disabled:"disabled"})),e=this.model.get("name"),this.target.get("name")!==e&&Smalruby.Collections.CharacterSet.findWhere({name:e})?(this.$el.find('.control-group[for="character[name]"]').addClass("error"),this.$el.find("#character-modal-ok-button").addClass("disabled").attr({disabled:"disabled"})):void 0},onSelectCostume:function(e){var t,o,n;return e.preventDefault(),o=$(e.target).attr("alt")||$(e.target).find("img").attr("alt"),t={costumes:[o]},this.nameChanged||(n=Smalruby.Character.costumeToNamePrefix(o),n!==this.model.namePrefix()&&(t.name=n===this.target.namePrefix()?this.target.get("name"):Smalruby.Collections.CharacterSet.uniqueName(o))),this.model.set(t)},onRotationStyleFree:function(){return this.model.set({rotationStyle:"free"})},onRotationStyleLeftRight:function(){return this.model.set({rotationStyle:"left_right"})},onRotationStyleNone:function(){return this.model.set({rotationStyle:"none"})},onOk:function(){return this.$el.modal("hide"),this.target?this.target.set(_.clone(this.model.attributes)):void 0},setCharacter:function(e){return this.target=e,this.model.set(_.clone(this.target.attributes)),this.nameChanged=!1,this}})}.call(this),function(){Smalruby.CharacterSelectorView=Backbone.View.extend({el:"#character-selector-tab",initialize:function(){var e,t,o,n;for(this.klass=Smalruby.CharacterSelectorView,n=["add","remove","reset","change"],t=0,o=n.length;o>t;t++)e=n[t],this.listenTo(this.model,e,this.onChange);return this.templateText=$("#character-selector-template").text(),$("#add-character-button").click(function(e){var t,o,n,i;return e.preventDefault(),n=Smalruby.Collections.CharacterSet,t=(i=_.last(n.models))?{name:n.uniqueName(i.costume()),costumes:_.clone(i.get("costumes"))}:{name:n.uniqueName()},o=new Smalruby.Character(t),n.add(o),Smalruby.Views.CharacterModalView.setCharacter(o).render()}),this.render()},render:function(){var e,t=this;return e=$("#character-selector-character-set"),e.children().remove(),this.model.each(function(o){var n,i,r;return n=$(_.template(t.templateText,o)),e.append(n),n.find("a.character").click(function(e){return e.preventDefault(),Smalruby.Views.CharacterModalView.setCharacter(o).render()}),n.find("a.add-block-button").click(function(e){return e.preventDefault(),t.addBlock_(o)}),r=n.find("a.remove-button"),r.click(function(e){return e.preventDefault(),t.removeCharacter_(o)}),o.get("using")&&r.hide(),i=n.find("img"),o.rotateImage(i),i.on("dragstart",function(e){return e.preventDefault()})})},onChange:function(){return Smalruby.blocklyLoading||(Smalruby.changedAfterTranslating=!0,window.changed=!0),this.render()
33
- },addBlock_:function(e){var t,o;return t=new Blockly.Block(Blockly.mainWorkspace,"character_new"),t.setCharacter(e),t.initSvg(),t.render(),this.moveByNewBlock_(t),t.select(),o=new Blockly.Block(Blockly.mainWorkspace,"events_on_start"),o.initSvg(),o.render(),t.getInput("DO").connection.connect(o.previousConnection)},moveByNewBlock_:function(e){var t,o,n,i,r,s,l;return o=Blockly.mainWorkspace.getMetrics(),i={x:o.viewLeft+this.klass.NEW_BLOCK_MARGIN.LEFT,y:o.viewTop+this.klass.NEW_BLOCK_MARGIN.TOP},this.prevBlock&&(s=this.prevBlock.getRelativeToSurfaceXY(),t=this.prevBlock.getHeightWidth(),n=e.getHeightWidth(),s.x===this.prevXY.x&&s.y===this.prevXY.y?(r=s.x,l=s.y+t.height+this.klass.NEW_BLOCK_MARGIN.TOP,l+n.height>o.viewTop+o.viewHeight&&(r+=t.width+this.klass.NEW_BLOCK_MARGIN.LEFT,l=i.y)):(r=this.prevXY.x,l=this.prevXY.y),r>=o.viewLeft&&r+n.width<=o.viewLeft+o.viewWidth&&l>=o.viewTop&&l+n.height<=o.viewTop+o.viewHeight&&(i.x=r,i.y=l)),e.moveBy(i.x,i.y),this.prevBlock=e,this.prevXY=e.getRelativeToSurfaceXY()},removeCharacter_:function(e){return e.get("using")?void 0:Smalruby.Collections.CharacterSet.remove(e)}},{NEW_BLOCK_MARGIN:{LEFT:20,TOP:20}})}.call(this),function(){Smalruby.LoadModalView=Backbone.View.extend({events:{"click #load-modal-ok-button":"onOk","click #load-modal-remix-button":"onRemix"},initialize:function(){var e=this;return this.$el.find("#load-modal-find-from-computer").click(function(t){return t.preventDefault(),e.onFindFromComputerClick.call(e,t)})},render:function(){var e,t,o,n,i=this;return this.type=null,this.program=null,this.setRemix(!1),this.unselect(),o=this.$el.find("#load-modal-local-programs"),o.empty(),t=this.$el.find("#load-modal-demo-programs"),t.empty(),this.$el.find(".modal-body").block({message:null}),n=function(){return i.$el.find(".modal-body").unblock()},this.$el.modal("show"),e=$.Deferred(),$.ajax({url:"/source_codes/",type:"GET",dataType:"json",success:function(t){return e.resolve(t)},error:e.reject}),e.promise().then(function(e){var n,r,s,l,a,c,u,g,h;for(u=e.localPrograms,r=function(e){var t;return t=i.programToHtml(e,i.onLocalProgramClick),o.append(t)},s=0,a=u.length;a>s;s++)n=u[s],r(n);for(g=e.demoPrograms,h=[],l=0,c=g.length;c>l;l++)n=g[l],h.push(function(e){var o;return o=i.programToHtml(e,i.onDemoProgramClick),t.append(o)}(n));return h}).then(n,n).fail(function(){return i.$el.modal("hide"),errorMessage("ロードに失敗しました")})},onOk:function(){switch(this.type){case"local":$.ajax({url:"/source_codes/load_local",type:"POST",data:{source_code:{filename:this.program.filename,remix:this.remix}},dataType:"json",success:function(e){return Smalruby.Views.MainMenuView.load(e.source_code)}});break;case"demo":$.ajax({url:"/source_codes/load_demo",type:"POST",data:{source_code:{filename:this.program.filename,remix:this.remix}},dataType:"json",success:function(e){return Smalruby.Views.MainMenuView.load(e.source_code)}});break;case"find-from-computer":$('input#load-file[name="source_code[file]"]').click()}return this.$el.modal("hide")},onRemix:function(){return this.setRemix(!this.remix)},setRemix:function(e){var t,o;return this.remix=e,o=$("#load-modal-remix-button"),t="btn-success",this.remix?o.addClass(t):o.removeClass(t)},onLocalProgramClick:function(e,t){return this.select(e.currentTarget,"local",t)},onDemoProgramClick:function(e,t){return this.select(e.currentTarget,"demo",t)},onFindFromComputerClick:function(e){return this.select(e.currentTarget,"find-from-computer")},select:function(e,t,o){return null==o&&(o=null),this.unselect(),$(e).addClass("active"),this.type=t,this.program=o},unselect:function(){return this.$el.find("a.thumbnail").removeClass("active")},programToHtml:function(e,t){var o,n,i=this;return n=e.imageUrl?'<img src="'+e.imageUrl+'">':'<h1 class="icon"><i class="icon-file" /></h1>',o='<li>\n <a class="thumbnail">\n '+n+"\n <blockquote>\n <p>\n "+e.title+"\n </p>\n <small>"+e.filename+"</small>\n </blockquote>\n </div>\n</li>",o=$(o),o.find("a.thumbnail").click(function(o){return o.preventDefault(),t.call(i,o,e)}),o}})}.call(this),function(){Smalruby.MainMenuView=Backbone.View.extend({el:"#main-menu",events:{"click #block-mode-button":"onBlockMode","click #ruby-mode-button":"onRubyMode","click #run-button":"onRun","click #download-button":"onDownload","click #load-local-button":"onLoadLocal","click #load-button":"onLoad","click #save-button":"onSave","click #check-button":"onCheck","click #reset-button":"onReset","click #signin-button":"onSignin","click #signout-button":"onSignout","click #username-button":"onUsername"},initialize:function(){var e=this;return $("#filename").keypress(function(e){return e||(e=window.event),13===e.keyCode?($("#save-button").click(),!1):!0}),$("#file-form").fileupload({dataType:"json",done:function(t,o){return e.load(o.result.source_code)}})},onBlockMode:function(e){var t;return e.preventDefault(),window.blockMode?void 0:Smalruby.changedAfterTranslating?(this.blockUI({title:'<i class="icon-filter"></i>\n'+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE")}),t=new Smalruby.SourceCode,t.toBlocks().then(function(e){return window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show"),e.length>0?(Smalruby.blocklyLoading=!0,Smalruby.translating=!0,Smalruby.loadXml(e),Smalruby.translating=!1,Smalruby.changedAfterTranslating=!1):void 0}).then(this.unblockUI,this.unblockUI).fail(function(){return window.errorMessage(Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR"))})):(window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show"),void 0)},onRubyMode:function(e){var t;return e.preventDefault(),window.blockMode&&(window.blockMode=!1,$('#tabs a[href="#ruby-tab"]').tab("show"),Smalruby.changedAfterTranslating)?(t=Blockly.Ruby.workspaceToCode(),Smalruby.translating=!0,window.textEditor.getSession().getDocument().setValue(t),Smalruby.translating=!1,Smalruby.changedAfterTranslating=!1,window.textEditor.moveCursorTo(0,0),window.textEditor.focus()):void 0},onRun:function(e){var t,o,n,i=this;return e.preventDefault(),o=this.getSourceCode(),n=new Smalruby.SourceCode({filename:o.getRbxmlFilename()}),clearMessages(),this.blockUI({title:'<i class="icon-play"></i>\n'+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE"),notice:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE")}),t=Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN"),o.save2().then(function(){return o.write()}).then(function(e){return i.confirmOverwrite_.call(i,e,o,function(){return t=Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN")})}).then(function(){return Smalruby.savedFilename=o.get("filename"),window.changed=!1,o.check()}).then(function(e){var t,o,n,i;if(e.length>0){for(o=function(e){var t;return t=""+e.row+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LINES"),e.column>0&&(t+=""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_COMMA")+e.column+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS")),window.errorMessage(t+(": "+e.message))},n=0,i=e.length;i>n;n++)t=e[n],o(t);return $.Deferred().reject().promise()}}).then(function(){return n.save2()}).then(function(){return n.write(!0)}).then(function(){return o.run()}).then(function(e){var t,o,n,i;if(e.length>0){for(o=function(e){var t;return t=""+e.row+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LINES"),e.column>0&&(t+=""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_COMMA")+e.column+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS")),errorMessage(t+(": "+e.message))},n=0,i=e.length;i>n;n++)t=e[n],o(t);return $.Deferred().reject().promise()}}).then(this.unblockUI,this.unblockUI).fail(function(){return errorMessage(t)})},onDownload:function(e){var t;return e.preventDefault(),t=this.getSourceCode(),clearMessages(),this.blockUI({title:""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE"),notice:"ダウンロードしたプログラムは、<br>\nWindowsだと「ruby "+t.get("filename")+"」、<br>\nMacだと「rsdl "+t.get("filename")+"」で実行できます。"}),t.save2().then(function(){return window.changed=!1,window.successMessage("ダウンロードしました"),Smalruby.downloading=!0,$("#download-link").click()}).then(this.unblockUI,this.unblockUI).fail(function(){return window.errorMessage("ダウンロードできませんでした")})},onLoadLocal:function(e){return e.preventDefault(),!window.changed||confirm("まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?")?Smalruby.Views.LoadModalView.render():void 0},onLoad:function(e){return e.preventDefault(),!window.changed||confirm("まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?")?$('input#load-file[name="source_code[file]"]').click():void 0},onSave:function(e){var t,o,n,i=this;return e.preventDefault(),o=$.trim($("#filename").val()),o.length<=0?(window.errorMessage("セーブする前にプログラムに名前をつけてね!"),$("#filename").focus(),void 0):(n=this.getSourceCode(),window.blockMode&&(n=new Smalruby.SourceCode({filename:n.getRbxmlFilename()})),clearMessages(),this.blockUI({title:"プログラムのセーブ中",message:"プログラムをセーブしています。",notice:"プログラムの名前は「"+n.get("filename")+"」です。<br>\nプログラムはホームディレクトリにセーブします。<br>"}),t="セーブできませんでした",n.save2().then(function(){return n.write()}).then(function(e){return i.confirmOverwrite_.call(i,e,n,function(){return t="セーブをキャンセルしました"})}).then(this.unblockUI,this.unblockUI).done(function(){return Smalruby.savedFilename=n.get("filename"),window.changed=!1,window.successMessage("セーブしました")}).fail(function(){return window.errorMessage(t)}))},onCheck:function(e){var t;return e.preventDefault(),clearMessages(),t=this.getSourceCode(),this.blockUI({title:"プログラムのチェック中",message:"プログラムの文法をチェックしています。",notice:"このチェックは簡易的なものですので、<br>\nプログラムを動かすとエラーが見つかるかもしれません。"}),t.check().then(function(e){var t,o,n,i;if(0===e.length)return window.successMessage("チェックしました","ただし、プログラムを動かすとエラーが見つかるかもしれません。");for(i=[],o=0,n=e.length;n>o;o++)t=e[o],i.push(function(e){var t;return t=""+e.row+"行",e.column>0&&(t+="、"+e.column+"文字"),window.errorMessage(t+(": "+e.message))}(t));return i}).then(this.unblockUI,this.unblockUI).fail(function(){return errorMessage("チェックできませんでした")})},onReset:function(e){return e.preventDefault(),window.changed?Smalruby.Views.ResetModalView.render():Smalruby.reset(),!0},onSignin:function(e){return e.preventDefault(),Smalruby.Views.SigninModalView.render()},onSignout:function(e){return e.preventDefault(),$.ajax({url:"/signout",type:"DELETE"}).then(function(){return $("#signin-button").show(),$("#signout-button").hide(),$("#username-label").text(""),$("#username-button").hide(),successMessage("ログアウトしました")},function(){return errorMessage("ログアウトに失敗しました")})},onUsername:function(e){return e.preventDefault()},getFilename:function(){return $.trim($("#filename").val())},getSourceCode:function(){var e;return e=new Smalruby.SourceCode,$("#filename").val(e.get("filename")),e},blockUI:function(e){var t,o;return t="",e.title&&(t+="<h3>\n "+e.title+"\n</h3>"),(e.message||e.notice)&&(o="",e.message&&(o+="<p>\n "+e.message+"\n</p>"),e.notice&&(o+="<small>\n "+e.notice+"\n</small>"),t+="<blockquote>\n "+o+"\n</blockquote>"),$.blockUI({message:t,css:{border:"none","text-align":"left","padding-left":"2em"}})},unblockUI:function(){return $.unblockUI()},confirmOverwrite_:function(e,t,o){return null==o&&(o=$.noop),e.source_code.error?t.get("filename")===Smalruby.savedFilename||confirm("前に"+t.get("filename")+"という名前でセーブしているけど本当にセーブしますか?\nセーブすると前に作成したプログラムは消えてしまうよ!")?t.write(!0):(o.call(),$.Deferred().reject().promise()):void 0},load:function(e){var t;return e.error?window.errorMessage(e.filename+"は"+e.error):(clearMessages(),t=e.filename,t.match(/\.xml$/)?(window.blockMode||(window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show")),t=t.replace(/(\.rb)?\.xml$/,".rb"),Smalruby.blocklyLoading=!0,Smalruby.loadXml(e.data),e.data=Blockly.Ruby.workspaceToCode()):(Smalruby.Collections.CharacterSet.reset(),Blockly.mainWorkspace.clear(),window.blockMode&&(window.blockMode=!1,$('#tabs a[href="#ruby-tab"]').tab("show"),window.textEditor.focus())),$("#filename").val(t),window.textEditor.getSession().getDocument().setValue(e.data),window.textEditor.moveCursorTo(0,0),window.changed=!1,Smalruby.changedAfterTranslating=!0,window.successMessage("ロードしました"))}})}.call(this),function(){Smalruby.ResetModalView=Backbone.View.extend({events:{"click #reset-modal-ok-button":"onOk"},render:function(){return this.$el.modal("show")},onOk:function(){return Smalruby.reset(),this.$el.modal("hide")}})}.call(this),function(){Smalruby.SigninModalView=Backbone.View.extend({events:{"click #signin-modal-ok-button":"onOk"},initialize:function(){var e=this;return Smalruby.ignoreEnterKey(this.$el),this.$el.on("shown",function(){return e.$el.find("#signin-modal-username").focus()})},render:function(){return this.$el.find("#signin-modal-username").val($("#username-label").text()),this.$el.modal("show")},onOk:function(){var e,t=this;return e=this.$el.find("input[name=username]").val(),$.post("/sessions/",{username:e}).then(function(e){return $("#signin-button").hide(),$("#signout-button").show(),$("#username-label").text(e),$("#username-button").show(),successMessage("ログインしました"),(new $.Deferred).resolve().promise()},function(){return errorMessage("ログインに失敗しました"),(new $.Deferred).resolve().promise()}).done(function(){return t.$el.modal("hide")})}})}.call(this),function(){Blockly.Ruby=new Blockly.Generator("Ruby"),Blockly.Ruby.addReservedWords("BEGIN class ensure nil self whenEND def false not super whilealias defined? for or then yieldand do if redo true __LINE__begin else in rescue undef __FILE__break elsif module retry unless __ENCODING__case end next return until".split(/\s+/)),Blockly.Ruby.ORDER_ATOMIC=0,Blockly.Ruby.ORDER_COLLECTION=1,Blockly.Ruby.ORDER_STRING_CONVERSION=1,Blockly.Ruby.ORDER_MEMBER=2,Blockly.Ruby.ORDER_INDEX=3,Blockly.Ruby.ORDER_FUNCTION_CALL=4,Blockly.Ruby.ORDER_UNARY_SIGN=5,Blockly.Ruby.ORDER_EXPONENTIATION=6,Blockly.Ruby.ORDER_UNARY_MINUS_SIGN=7,Blockly.Ruby.ORDER_MULTIPLICATIVE=8,Blockly.Ruby.ORDER_ADDITIVE=9,Blockly.Ruby.ORDER_BITWISE_SHIFT=10,Blockly.Ruby.ORDER_BITWISE_AND=11,Blockly.Ruby.ORDER_BITWISE_XOR=12,Blockly.Ruby.ORDER_BITWISE_OR=12,Blockly.Ruby.ORDER_RELATIONAL=13,Blockly.Ruby.ORDER_EQUALS=14,Blockly.Ruby.ORDER_LOGICAL_AND=15,Blockly.Ruby.ORDER_LOGICAL_OR=16,Blockly.Ruby.ORDER_RANGE=17,Blockly.Ruby.ORDER_CONDITIONAL=18,Blockly.Ruby.ORDER_ASSIGNMENT=19,Blockly.Ruby.ORDER_NOT=20,Blockly.Ruby.ORDER_AND_OR=21,Blockly.Ruby.ORDER_NONE=99,Blockly.Ruby.INFINITE_LOOP_TRAP=null,Blockly.Ruby.init=function(){return this.definitions_=Object.create(null),Blockly.Variables?(this.variableDB_?this.variableDB_.reset():this.variableDB_=new Blockly.Names(Blockly.Ruby.RESERVED_WORDS_),this.definitions_.require_smalruby='require "smalruby"',this.definitions_.receiver_stack=["main"],this.definitions_.character_stack=[]):void 0},Blockly.Ruby.defineCharacter=function(e){var t,o,n;if(o=e.get("name"),t="character_"+o,!Blockly.Ruby.definitions_[t]){switch(e.get("rotationStyle")){case"left_right":n=", rotation_style: :left_right";break;case"none":n=", rotation_style: :none";break;default:n=""}return Blockly.Ruby.definitions_[t]=""+o+" = Character.new(costume: "+Blockly.Ruby.quote_(e.costume())+", x: "+e.get("x")+", y: "+e.get("y")+", angle: "+e.get("angle")+n+")"}},Blockly.Ruby.characterStack=function(){return this.definitions_.character_stack},Blockly.Ruby.character=function(){return _.last(this.characterStack())},Blockly.Ruby.receiverStack=function(){return this.definitions_.receiver_stack},Blockly.Ruby.receiver=function(){return _.last(this.receiverStack())},Blockly.Ruby.receiverName=function(e){var t,o;return null==e&&(e={}),t={object:Blockly.Ruby.character(),dropSelf:!0},_.extend(t,e),o=this.receiver(),o===t.object?t.dropSelf?"":"self.":""+t.object.get("name")+"."},Blockly.Ruby.cs=Blockly.Ruby.characterStack,Blockly.Ruby.cs_=Blockly.Ruby.characterStack,Blockly.Ruby.c=Blockly.Ruby.character,Blockly.Ruby.c_=Blockly.Ruby.character,Blockly.Ruby.rs=Blockly.Ruby.receiverStack,Blockly.Ruby.rs_=Blockly.Ruby.receiverStack,Blockly.Ruby.r=Blockly.Ruby.receiver,Blockly.Ruby.r_=Blockly.Ruby.receiver,Blockly.Ruby.rn=Blockly.Ruby.receiverName,Blockly.Ruby.rn_=Blockly.Ruby.receiverName,Blockly.Ruby.characterMethodCall_=function(e,t,o){var n;return null==o&&(o={}),n=this.characterMethodCallInput_(e,t,o),n[0]?""+n[0]+"\n":""},Blockly.Ruby.characterMethodCallInput_=function(e,t,o){var n;return null==o&&(o={}),n=this.c_()?t&&t.length>0?""+this.rn_(o)+e+"("+t+")":""+this.rn_(o)+e:null,[n,this.ORDER_FUNCTION_CALL]},Blockly.Ruby.characterSetVariable_=function(e,t,o){return null==o&&(o="="),this.c_()?""+this.rn_({dropSelf:!1})+e+" "+o+" "+t+"\n":""},Blockly.Ruby.characterEvent_=function(e,t,o,n){var i,r;if(null==n&&(n=null),r=this.c_()){this.rs_().push(r);try{i=Blockly.Ruby.statementToCode(e,t)||"\n"}finally{this.rs_().pop()}return n=n?", "+n:"","\n"+this.rn_()+"on(:"+o+n+") do\n"+i+"end\n"}return""},Blockly.Ruby.finish=function(e){var t,o,n,i,r;i=[],o=[],r=function(e){var t;return t=Blockly.Ruby.definitions_[e],_.isString(t)?t.match(/^require\s*('\S+'|"\S+")/)?i.push(t):o.push(t):void 0};for(n in Blockly.Ruby.definitions_)r(n);return 0===o.length&&0===e.length?"":(t=i.join("\n")+"\n\n",o.length>0&&(t+=o.join("\n").replace(/\n\n+/g,"\n\n").replace(/\n*$/,"\n")),t+e)},Blockly.Ruby.scrubNakedValue=function(e){return e+"\n"},Blockly.Ruby.escapeChars_={'"':'\\"'},Blockly.Ruby.quote_=function(e){var t,o,n,i,r,s;for(o=String(e),n=['"'],i=function(e){var t;return t=o.charAt(e),n[e+1]=Blockly.Ruby.escapeChars_[t]||t},t=r=0,s=o.length;s>=0?s>r:r>s;t=s>=0?++r:--r)i(t);return n.push('"'),n.join("")},Blockly.Ruby.scrub_=function(e,t){var o,n,i,r,s,l,a,c,u,g=this;if(null===t)return"";if(n="",!e.outputConnection||!e.outputConnection.targetConnection)for(o=e.getCommentText(),o&&(n+=this.prefixLines(o,"# ")+"\n"),u=e.inputList,l=function(e){var t;return e.type===Blockly.INPUT_VALUE&&(t=e.connection.targetBlock(),t&&(o=g.allNestedComments(t)))?n+=g.prefixLines(o,"# "):void 0},a=0,c=u.length;c>a;a++)i=u[a],l(i);return r=e.nextConnection&&e.nextConnection.targetBlock(),s=this.blockToCode(r),n+t+s}}.call(this),function(){"use strict";goog.provide("Smalruby.FieldCharacter"),goog.require("Blockly.FieldDropdown"),Smalruby.FieldCharacter=function(e,t){var o,n,i=this;return o=t?function(e){var o,n;return n=Smalruby.FieldCharacter.dropdownChange.call(i,e),n?o=n:n=i.getValue(),t.call(i,o),n}:Smalruby.FieldCharacter.dropdownChange,Smalruby.FieldCharacter.superClass_.constructor.call(this,Smalruby.FieldCharacter.dropdownCreate,o),n=Smalruby.Collections.CharacterSet,n.on("add",this.onCharacterSetAdd_,this),n.on("remove",this.onCharacterSetRemove_,this),n.on("reset",this.onCharacterSetReset_,this),this.character=Smalruby.FieldCharacter.NullCharacter,e||(e=Smalruby.Collections.CharacterSet.first()),this.setCharacter(e)},goog.inherits(Smalruby.FieldCharacter,Blockly.FieldDropdown),Smalruby.FieldCharacter.prototype.setCharacter=function(e){return e!==this.character?(this.character.unlink(this),this.character.off("change:name",this.onCharacterChangeName_,this),this.character=e?e:Smalruby.FieldCharacter.NullCharacter,this.character.link(this),this.character.on("change:name",this.onCharacterChangeName_,this),this.setValue(this.character.get("name"))):void 0},Smalruby.FieldCharacter.prototype.onCharacterSetAdd_=function(e){return this.character===Smalruby.FieldCharacter.NullCharacter?this.setCharacter(e):void 0},Smalruby.FieldCharacter.prototype.onCharacterSetRemove_=function(e){return e===this.character?this.setCharacter():void 0},Smalruby.FieldCharacter.prototype.onCharacterSetReset_=function(e){return this.character===Smalruby.FieldCharacter.NullCharacter?this.setCharacter(e.first()):this.setCharacter(e.findWhere({name:this.getValue()}))},Smalruby.FieldCharacter.prototype.onCharacterChangeName_=function(e,t){return this.setValue(t)},Smalruby.FieldCharacter.prototype.clone=function(){return new Smalruby.FieldCharacter(this.character,this.changeHandler_)},Smalruby.FieldCharacter.prototype.dispose=function(){var e;return e=Smalruby.Collections.CharacterSet,e.off("add",this.onCharacterSetAdd_,this),e.off("remove",this.onCharacterSetRemove_,this),e.off("reset",this.onCharacterSetReset_,this),this.setCharacter(),Blockly.FieldDropdown.prototype.dispose.call(this)},Smalruby.FieldCharacter.prototype.setText=function(e){var t;return this.character||(this.character=Smalruby.FieldCharacter.NullCharacter,t=Smalruby.Collections.CharacterSet,this.setCharacter(t.findWhere({name:e}))),Blockly.FieldDropdown.prototype.setText.call(this,e)},Smalruby.FieldCharacter.dropdownCreate=function(){var e;return e=Smalruby.Collections.CharacterSet,e.length>0?Smalruby.Collections.CharacterSet.map(function(e){var t;return t=e.get("name"),[t,t]}):[[Smalruby.FieldCharacter.NullCharacter.get("name"),""]]},Smalruby.FieldCharacter.dropdownChange=function(e){var t;return t=Smalruby.Collections.CharacterSet.findWhere({name:e}),t?(this.setCharacter(t),e):null},Smalruby.FieldCharacter.NullCharacter={get:function(){return Smalruby.bm("BLOCKS_FIELD_CHARACTER_NO_CHARACTER")},on:function(){return $.noop},off:function(){return $.noop},link:function(){return $.noop},unlink:function(){return $.noop}},Blockly.Block.prototype.getCharacterFieldValue=function(e){var t,o;return null==e&&(e="CHAR"),o=this.getFieldValue(e),Blockly.Ruby.c()&&(t=Smalruby.Collections.CharacterSet.findWhere({name:o}),Blockly.Ruby.defineCharacter(t)),o}}.call(this),function(){Blockly.Ruby.math_number=function(){var e,t;return e=parseFloat(this.getFieldValue("NUM")),t=0>e?Blockly.Ruby.ORDER_UNARY_MINUS_SIGN:Blockly.Ruby.ORDER_ATOMIC,[e,t]},Blockly.Ruby.text=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("TEXT")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Ruby.variables_get=function(e){var t;return t=Blockly.Ruby.variableDB_.getName(e.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),[t,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Ruby.variables_set=function(e){var t,o;return o=Blockly.Ruby.valueToCode(e,"VALUE",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.variableDB_.getName(e.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),t+" = "+o+"\n"}}.call(this),function(){Blockly.Blocks.character_new={init:function(){var e,t,o;return this.setHelpUrl(""),this.setColour(198),o=2*Blockly.BlockSvg.FIELD_HEIGHT,e=new Blockly.FieldImage(null,o,o),t=new Blockly.FieldLabel(""),t.EDITABLE=!0,t.textElement_.setAttribute("y",10),t.setText=_.bind(this.nameFieldSetText_,this),this.appendDummyInput().appendField(e,"COSTUME").appendField(t,"NAME"),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")},dispose:function(){var e;return this.character.off("change",this.changeHandler),"function"==typeof(e=this.character).unlink&&e.unlink(this),Blockly.Block.prototype.dispose.apply(this,arguments)},nameFieldSetText_:function(e){var t,o;return o=Smalruby.Collections.CharacterSet,t=o.findWhere({name:e}),t?this.setCharacter(t):this.fieldLableSetText_(this.getField_("NAME"),e)},fieldLableSetText_:function(e,t){return Blockly.FieldLabel.prototype.setText.call(e,t)},setCharacter:function(e){var t=this;return this.changeHandler&&this.character.off("change",this.changeHandler),this.character=e,this.setFieldValue(e.costumeUrl(),"COSTUME"),this.fieldLableSetText_(this.getField_("NAME"),e.get("name")),e.link(this),this.changeHandler=function(o){return t.setFieldValue(o.costumeUrl(),"COSTUME"),t.fieldLableSetText_(t.getField_("NAME"),e.get("name"))},e.on("change",this.changeHandler),this}},Blockly.Ruby.character_new=function(e){var t,o,n;t=e.character,Blockly.Ruby.defineCharacter(t),Blockly.Ruby.cs_().push(t);try{n=e.getInputTargetBlock("DO"),o=Blockly.Ruby.blockToCode(n)||"\n"}finally{Blockly.Ruby.cs_().pop()}return o}}.call(this),function(){Blockly.Blocks.control_sleep={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_SLEEP"),["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_sleep=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_FUNCTION_CALL)||"0","sleep("+e+")\n"},Blockly.Blocks.control_loop={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP")),this.appendStatementInput("DO"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP_END")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_loop=function(e){var t;return"main"===Blockly.Ruby.r_()?"":(t=Blockly.Ruby.statementToCode(e,"DO")||"\n","loop do\n"+t+"end\n")},Blockly.Blocks.control_break={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_BREAK")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_break=function(){return"main"===Blockly.Ruby.receiver()?"":"break\n"},Blockly.Blocks.control_next={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_NEXT")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_next=function(){return"main"===Blockly.Ruby.receiver()?"":"next\n"},Blockly.Blocks.control_redo={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_REDO")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_redo=function(){return"main"===Blockly.Ruby.receiver()?"":"redo\n"},Blockly.Blocks.control_if={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendValueInput("COND").setCheck("Boolean").appendField(Smalruby.bm("BLOCKS_CONTROL_IF")),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_THEN")),this.appendStatementInput("THEN"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip("")}},Blockly.Ruby.control_if=function(e){var t,o;return o=Blockly.Ruby.valueToCode(e,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"false",t=Blockly.Ruby.statementToCode(e,"THEN")||"\n","if "+o+"\n"+t+"end\n"},Blockly.Blocks.control_if_else={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendValueInput("COND").setCheck("Boolean").appendField(Smalruby.bm("BLOCKS_CONTROL_IF")),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_THEN")),this.appendStatementInput("THEN"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_ELSE")),this.appendStatementInput("ELSE"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip("")}},Blockly.Ruby.control_if_else=function(e){var t,o,n;return n=Blockly.Ruby.valueToCode(e,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"false",t=Blockly.Ruby.statementToCode(e,"THEN")||"\n",o=Blockly.Ruby.statementToCode(e,"ELSE")||"\n","if "+n+"\n"+t+"else\n"+o+"end\n"},Blockly.Blocks.control_times={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_TIMES"),["COUNT",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_times=function(e){var t,o;return o=Blockly.Ruby.valueToCode(this,"COUNT",Blockly.Ruby.ORDER_NONE)||0,t=Blockly.Ruby.statementToCode(e,"DO")||"\n",""+o+".times do\n"+t+"end\n"},Blockly.Blocks.control_await_until={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_AWAIT_UNTIL"),["COND",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_await_until=function(){var e,t;return"main"===Blockly.Ruby.receiver()?"":(e=Blockly.Ruby.characterMethodCallInput_("await")[0],t=Blockly.Ruby.valueToCode(this,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"true",""+e+" until "+t+"\n")},Blockly.Blocks.control_until={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_UNTIL"),["COND",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP_END")).setAlign(Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_until=function(e){var t,o;return o=Blockly.Ruby.valueToCode(this,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"true",t=Blockly.Ruby.statementToCode(e,"DO")||"\n","until "+o+"\n"+t+"end\n"},Blockly.Blocks.control_await={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_AWAIT")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_await=function(){return"main"===Blockly.Ruby.receiver()?"":Blockly.Ruby.characterMethodCall_("await")}}.call(this),function(){}.call(this),function(){}.call(this),function(){Blockly.Blocks.events_on_start={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_START")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_start=function(e){return Blockly.Ruby.characterEvent_(e,"DO","start")},Blockly.Blocks.events_on_key_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.KeyDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"KEY").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_key_push_or_down=function(e){var t,o;return t=this.getFieldValue("KEY"),o=this.getFieldValue("POD"),Blockly.Ruby.characterEvent_(e,"DO","key_"+o,t)},Blockly.Blocks.events_on_click={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_CLICK")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_click=function(e){return Blockly.Ruby.characterEvent_(e,"DO","click")},Blockly.Blocks.events_on_hit={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_HIT_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_HIT_SUFFIX")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_hit=function(e){var t;return t=this.getCharacterFieldValue(),Blockly.Ruby.characterEvent_(e,"DO","hit",t)}}.call(this),function(){var e,t,o,n,i,r,s;o=null,i=null,r=null,t=null,e=null,n=null,s=null,$(document).ready(function(){var l;return window.SmalrubyEditor.Hardware={Type:"Arduino",DioPins:[2,3,4,5,6,7,8,9,10,11,12,13],PwmPins:[3,5,6,9,10,11],AiPins:[0,1,2,3,4,5]},o=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.DioPins,n=[],e=0,t=o.length;t>e;e++)l=o[e],n.push(["D"+l,"D"+l]);return n}(),i=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.PwmPins,n=[],e=0,t=o.length;t>e;e++)l=o[e],n.push(["D"+l,"D"+l]);return n}(),r=function(){var e,t,o,n;for(o=[3,9],n=[],e=0,t=o.length;t>e;e++)l=o[e],n.push(["D"+l,"D"+l]);return n}(),t=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.AiPins,n=[],e=0,t=o.length;t>e;e++)l=o[e],n.push(["A"+l,"A"+l]);return n}(),e=[[Smalruby.bm("BLOCKS_HARDWARE_ANODE"),"anode"],[Smalruby.bm("BLOCKS_HARDWARE_CATHODE"),"cathode"]],n=[[Smalruby.bm("BLOCKS_HARDWARE_LEFT"),"left"],[Smalruby.bm("BLOCKS_HARDWARE_RIGHT"),"right"]],s=function(){var e,t,o,n;for(o=[5,6],n=[],e=0,t=o.length;t>e;e++)l=o[e],n.push(["D"+l,"D"+l]);return n}()}),Blockly.Blocks.hardware_init_hardware={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_INIT_HARDWARE")),this.setTooltip("")
34
- }},Blockly.Ruby.hardware_init_hardware=function(){return Blockly.Ruby.definitions_.init_hardware="init_hardware",""},Blockly.Blocks.hardware_led_on={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LED_ON"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(""),this.setFieldValue("D2","PIN")}},Blockly.Ruby.hardware_led_on=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("led("+Blockly.Ruby.quote_(e)+").on")},Blockly.Blocks.hardware_led_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LED_OFF"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(""),this.setFieldValue("D2","PIN")}},Blockly.Ruby.hardware_led_off=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("led("+Blockly.Ruby.quote_(e)+").off")},Blockly.Blocks.hardware_rgb_led_on={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_RGB_LED_ON"),["AC",["Dropdown",e],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["COLOUR",["Colour","#ff0000"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_rgb_led_on=function(e){var t,o,n,i,r,s;return t=this.getFieldValue("AC"),r=this.getFieldValue("PIN"),n=e.getFieldValue("COLOUR"),s=parseInt(n.slice(1,3),16),i=parseInt(n.slice(3,5),16),o=parseInt(n.slice(5,7),16),Blockly.Ruby.characterMethodCall_("rgb_led_"+t+"("+Blockly.Ruby.quote_(r)+").on","color: ["+s+", "+i+", "+o+"]")},Blockly.Blocks.hardware_rgb_led_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_RGB_LED_OFF"),["AC",["Dropdown",e],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_rgb_led_off=function(){var e,t;return e=this.getFieldValue("AC"),t=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("rgb_led_"+e+"("+Blockly.Ruby.quote_(t)+").off")},Blockly.Blocks.hardware_seven_segment_display_show={init:function(){var e,t;return e=function(){var e,o;for(o=[],t=e=0;9>=e;t=++e)o.push([String(t),String(t)]);return o}(),this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW"),["NUM",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_seven_segment_display_show=function(){var e;return e=parseInt(this.getFieldValue("NUM")),Blockly.Ruby.characterMethodCall_("seven_segment_display.show("+e+")")},Blockly.Blocks.hardware_seven_segment_display_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_seven_segment_display_off=function(){return Blockly.Ruby.characterMethodCall_("seven_segment_display.off")},Blockly.Blocks.hardware_lcd_puts={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LCD_PUTS"),["TEXT",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_lcd_puts=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||"",Blockly.Ruby.characterMethodCall_("lcd.puts("+e+")")},Blockly.Blocks.hardware_lcd_clear={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_LCD_CLEAR")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_lcd_clear=function(){return Blockly.Ruby.characterMethodCall_("lcd.clear")},Blockly.Blocks.hardware_servo_set_position={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SERVO_SET_POSITION"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],["POS",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_servo_set_position=function(){var e,t;return e=this.getFieldValue("PIN"),t=Blockly.Ruby.valueToCode(this,"POS",Blockly.Ruby.ORDER_FUNCTION_CALL)||"5",Blockly.Ruby.characterMethodCall_("servo("+Blockly.Ruby.quote_(e)+").position = "+t)},Blockly.Blocks.hardware_two_wheel_drive_car_forward={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD"),["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_forward=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").forward")},Blockly.Blocks.hardware_two_wheel_drive_car_backward={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD"),["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_backward=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").backward")},Blockly.Blocks.hardware_two_wheel_drive_car_turn_left={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT"),["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_turn_left=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").turn_left")},Blockly.Blocks.hardware_two_wheel_drive_car_turn_right={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT"),["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_turn_right=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").turn_right")},Blockly.Blocks.hardware_two_wheel_drive_car_stop={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP"),["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_stop=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").stop")},Blockly.Blocks.hardware_two_wheel_drive_car_run={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN"),["COMMAND",["String"],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_run=function(){var e,t,o;return t=this.getFieldValue("PIN"),o=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||0,e=Blockly.Ruby.valueToCode(this,"COMMAND",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_("stop"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+").run(command: "+e+", sec: "+o+")")},Blockly.Blocks.hardware_two_wheel_drive_car_commands={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_FORWARD"),"forward"],[Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_BACKWARD"),"backward"],[Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_LEFT"),"turn_left"],[Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_RIGHT"),"turn_right"],[Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_STOP"),"stop"]],this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"COMMAND"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_commands=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("COMMAND")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.hardware_two_wheel_drive_car_set_speed={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],["LOR",["Dropdown",n],Blockly.ALIGN_RIGHT],["SPEED",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_set_speed=function(){var e,t,o;return t=this.getFieldValue("PIN"),e=this.getFieldValue("LOR"),o=Blockly.Ruby.valueToCode(this,"SPEED",Blockly.Ruby.ORDER_NONE)||"100",Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+")."+e+"_speed = "+o)},Blockly.Blocks.hardware_two_wheel_drive_car_speed={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],["LOR",["Dropdown",n],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_speed=function(){var e,t;return t=this.getFieldValue("PIN"),e=this.getFieldValue("LOR"),Blockly.Ruby.characterMethodCallInput_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+")."+e+"_speed")},Blockly.Blocks.hardware_motor_driver={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD"),"forward"],[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD"),"backward"],[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_STOP"),"stop"]],this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],["METHOD",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver=function(){var e,t;return t=this.getFieldValue("PIN"),e=this.getFieldValue("METHOD"),Blockly.Ruby.characterMethodCall_("motor_driver("+Blockly.Ruby.quote_(t)+")."+e)},Blockly.Blocks.hardware_motor_driver_set_speed={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],["SPEED",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver_set_speed=function(){var e,t;return e=this.getFieldValue("PIN"),t=Blockly.Ruby.valueToCode(this,"SPEED",Blockly.Ruby.ORDER_NONE)||"100",Blockly.Ruby.characterMethodCall_("motor_driver("+Blockly.Ruby.quote_(e)+").speed = "+t)},Blockly.Blocks.hardware_motor_driver_speed={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED"),["PIN",["Dropdown",i],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver_speed=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCallInput_("motor_driver("+Blockly.Ruby.quote_(e)+").speed")},Blockly.Blocks.hardware_button_down_or_up={init:function(){var e;return e=window.SmalrubyEditor.Sensing.DownOrUpDropdown,this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_BUTTON_DOWN_OR_UP"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],["DOU",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.hardware_button_down_or_up=function(){var e,t;return t=this.getFieldValue("PIN"),e=this.getFieldValue("DOU"),Blockly.Ruby.characterMethodCallInput_("button("+Blockly.Ruby.quote_(t)+")."+e+"?")},Blockly.Blocks.hardware_on_button_down_or_up={init:function(){var e;return e=window.SmalrubyEditor.Sensing.DownOrUpDropdown,this.setHelpUrl(""),this.setColour(33),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_ON_BUTTON_DOWN_OR_UP"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],["DOU",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_on_button_down_or_up=function(e){var t,o;return o=this.getFieldValue("PIN"),t=this.getFieldValue("DOU"),Blockly.Ruby.characterEvent_(e,"DO","button_"+t,Blockly.Ruby.quote_(o))},Blockly.Blocks.hardware_button_not_use_pullup={init:function(){return this.setHelpUrl(""),this.setColour(340),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_BUTTON_NOT_USE_PULLUP"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_button_not_use_pullup=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("button("+Blockly.Ruby.quote_(e)+").not_use_pullup")},Blockly.Blocks.hardware_sensor_value={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SENSOR_VALUE"),["PIN",["Dropdown",t],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_sensor_value=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCallInput_("sensor("+Blockly.Ruby.quote_(e)+").value")},Blockly.Blocks.hardware_on_sensor_change={init:function(){return this.setHelpUrl(""),this.setColour(33),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_ON_SENSOR_CHANGE"),["PIN",["Dropdown",t],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_on_sensor_change=function(e){var t;return t=this.getFieldValue("PIN"),Blockly.Ruby.characterEvent_(e,"DO","sensor_change",Blockly.Ruby.quote_(t))}}.call(this),function(){Blockly.Blocks.looks_say_second={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_SAY_WITH_SECOND"),["TEXT",null,Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_say_second=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("say","message: "+t+", second: "+e)},Blockly.Blocks.looks_say={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_SAY"),["TEXT",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_say=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("say","message: "+e)},Blockly.Blocks.looks_think_second={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_THINK_WITH_SECOND"),["TEXT",null,Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_think_second=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("think","message: "+t+", second: "+e)},Blockly.Blocks.looks_think={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_THINK"),["TEXT",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_think=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("think","message: "+e)},Blockly.Blocks.looks_show={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_SHOW")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_show=function(){return Blockly.Ruby.characterSetVariable_("visible","true")},Blockly.Blocks.looks_hide={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_HIDE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_hide=function(){return Blockly.Ruby.characterSetVariable_("visible","false")},Blockly.Blocks.looks_vanish={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_VANISH")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_vanish=function(){return Blockly.Ruby.characterMethodCall_("vanish")},Blockly.Blocks.looks_change_scale_by={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg("大きさを%1%ずつ変える",["SCALE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_change_scale_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SCALE",Blockly.Ruby.ORDER_NONE)||"0",e=parseInt(e)/100,"self.scale += "+e+"\n"},Blockly.Blocks.looks_set_scale={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg("大きさを%1%にする",["SCALE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_set_scale=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SCALE",Blockly.Ruby.ORDER_NONE)||"0",e=parseInt(e)/100,"self.scale = "+e+"\n"},Blockly.Blocks.looks_self_scale={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField("大きさ"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.looks_self_scale=function(){return["scale",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.looks_preset_images={init:function(){var e;return e=[["車1","car1.png"],["車2","car2.png"],["車3","car3.png"],["車4","car4.png"],["ボール1","ball1.png"],["ボール2","ball2.png"],["ボール3","ball3.png"],["ボール4","ball4.png"],["ボール5","ball5.png"],["ボール6","ball6.png"],["猫1","cat1.png"],["猫2","cat2.png"],["猫3","cat3.png"],["かえる1","frog1.png"],["コウガ リュウ1","ryu1.png"],["コウガ リュウ2","ryu2.png"],["イタチのタイチ","taichi1.png"],["イタチのタイチ","taichi2.png"]],this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"NAME"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.looks_preset_images=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("NAME")),[e,Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.motion_move={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_MOVE"),["STEP",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_move=function(){var e;return e=Blockly.Ruby.valueToCode(this,"STEP",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("move",""+e)},Blockly.Blocks.motion_rotate_right={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_TURN_RIGHT_DEGREES"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_rotate_right=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("rotate",""+e)},Blockly.Blocks.motion_rotate_left={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_TURN_LEFT_DEGREES"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_rotate_left=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("rotate","-"+e)},Blockly.Blocks.motion_set_angle={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_POINT_IN_DIRECTION"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_angle=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("angle",e)},Blockly.Blocks.motion_point_towards_mouse={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_POINT_TOWARDS_MOUSE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_point_towards_mouse=function(){return""+Blockly.Ruby.rn()+"point_towards(:mouse)\n"},Blockly.Blocks.motion_point_towards_character={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_MOTION_POINT_TOWARDS_CHARACTER")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_point_towards_character=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCall_("point_towards",e)},Blockly.Blocks.motion_set_x_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_X")),this.appendValueInput("X").setCheck("Number"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_Y")),this.appendValueInput("Y").setCheck("Number"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_SUFFIX")),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_x_y=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("position","["+e+", "+t+"]")},Blockly.Blocks.motion_go_to_mouse={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_MOUSE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_go_to_mouse=function(){return Blockly.Ruby.characterMethodCall_("go_to(:mouse)")},Blockly.Blocks.motion_go_to_character={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_go_to_character=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCall_("go_to("+e+")")},Blockly.Blocks.motion_glide_to_x_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg("%1秒でx座標を%2、y座標を%3に変える",["SEC",["Number"],Blockly.ALIGN_RIGHT],["X",["Number"],Blockly.ALIGN_RIGHT],["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_glide_to_x_y=function(){var e,t,o;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",o=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",""+Blockly.Ruby.rn()+"glide_to(second: "+e+", x: "+t+", y: "+o+")\n"},Blockly.Blocks.motion_change_x_by={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_CHANGE_X_BY"),["X",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_change_x_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("x",e,"+=")},Blockly.Blocks.motion_set_x={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_SET_X"),["X",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_x=function(){var e;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("x",e,"=")},Blockly.Blocks.motion_change_y_by={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_CHANGE_Y_BY"),["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_change_y_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("y",e,"+=")},Blockly.Blocks.motion_set_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_SET_Y"),["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_y=function(){var e;return e=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("y",e,"=")},Blockly.Blocks.motion_turn_if_reach_wall={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN_IF_REACH_WALL")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn_if_reach_wall=function(){return Blockly.Ruby.characterMethodCall_("turn_if_reach_wall")},Blockly.Blocks.motion_turn={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn=function(){return Blockly.Ruby.characterMethodCall_("turn")},Blockly.Blocks.motion_turn_xy={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_MOTION_TURN_XY_X"),"x"],[Smalruby.bm("BLOCKS_MOTION_TURN_XY_Y"),"y"]],this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN_XY_PREFIX")).appendField(new Blockly.FieldDropdown(e),"XY").appendField(Smalruby.bm("BLOCKS_MOTION_TURN_XY_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn_xy=function(){var e;return e=this.getFieldValue("XY"),Blockly.Ruby.characterMethodCall_("turn_"+e)},Blockly.Blocks.motion_set_rotation_style={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT"),"left_right"],[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_NONE"),"none"],[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_FREE"),"free"]],this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX")).appendField(new Blockly.FieldDropdown(e),"STYLE").appendField(Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_rotation_style=function(){var e;return e=this.getFieldValue("STYLE"),Blockly.Ruby.characterSetVariable_("rotation_style",":"+e)},Blockly.Blocks.motion_self_x={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_X")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_x=function(){return Blockly.Ruby.characterMethodCallInput_("x")},Blockly.Blocks.motion_self_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_Y")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_y=function(){return Blockly.Ruby.characterMethodCallInput_("y")},Blockly.Blocks.motion_self_angle={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_ANGLE")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_angle=function(){return Blockly.Ruby.characterMethodCallInput_("angle")}}.call(this),function(){Blockly.Blocks.operators_add={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_ADD"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_add=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_ADDITIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" + "+o,n]},Blockly.Blocks.operators_minus={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MINUS"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_minus=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_ADDITIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" - "+o,n]},Blockly.Blocks.operators_multiply={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MULTIPLY"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_multiply=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" * "+o,n]},Blockly.Blocks.operators_divide={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_DIVIDE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_divide=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"1",[t+" / "+o,n]},Blockly.Blocks.operators_compare_lt={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_LT"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")
35
- }},Blockly.Ruby.operators_compare_lt=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" < "+o,n]},Blockly.Blocks.operators_compare_lte={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_LTE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_lte=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" <= "+o,n]},Blockly.Blocks.operators_compare_eq={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_EQ"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_eq=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_EQUALS,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" == "+o,n]},Blockly.Blocks.operators_compare_gte={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_GTE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_gte=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" >= "+o,n]},Blockly.Blocks.operators_compare_gt={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_GT"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_gt=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" > "+o,n]},Blockly.Blocks.operators_rand={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_RAND"),["A",["Number"],Blockly.ALIGN_RIGHT],["B",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_rand=function(e){var t,o;return t=Blockly.Ruby.valueToCode(e,"A",Blockly.Ruby.ORDER_RANGE)||"0",o=Blockly.Ruby.valueToCode(e,"B",Blockly.Ruby.ORDER_RANGE)||"0",["rand("+t+".."+o+")",Blockly.Ruby.ORDER_FUNCTION_CALL]},Blockly.Blocks.operators_and={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_AND"),["A",["Boolean"],Blockly.ALIGN_RIGHT],["B",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_and=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_LOGICAL_AND,t=Blockly.Ruby.valueToCode(e,"A",n)||"true",o=Blockly.Ruby.valueToCode(e,"B",n)||"true",[""+t+" && "+o,n]},Blockly.Blocks.operators_or={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_OR"),["A",["Boolean"],Blockly.ALIGN_RIGHT],["B",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_or=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_LOGICAL_OR,t=Blockly.Ruby.valueToCode(e,"A",n)||"true",o=Blockly.Ruby.valueToCode(e,"B",n)||"true",[""+t+" || "+o,n]},Blockly.Blocks.operators_negate={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_NOT"),["A",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_negate=function(e){var t,o;return o=Blockly.Ruby.ORDER_UNARY_SIGN,t=Blockly.Ruby.valueToCode(e,"A",o)||"true",["!"+t,o]},Blockly.Blocks.operators_index_of={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_INDEX_OF"),["A",null,Blockly.ALIGN_RIGHT],["INDEX",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_index_of=function(e){var t,o;return t=Blockly.Ruby.valueToCode(e,"A",Blockly.Ruby.ORDER_FUNCTION_CALL)||'""',o=Blockly.Ruby.valueToCode(e,"INDEX",Blockly.Ruby.ORDER_INDEX)||"0",[""+t+"["+o+"]",Blockly.Ruby.ORDER_FUNCTION_CALL]},Blockly.Blocks.operators_length={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_LENGTH"),["A",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_length=function(e){var t,o;return o=Blockly.Ruby.ORDER_FUNCTION_CALL,t=Blockly.Ruby.valueToCode(e,"A",o)||'""',[""+t+".length",o]},Blockly.Blocks.operators_modulo={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MODULO"),["A",["Number"],Blockly.ALIGN_RIGHT],["B",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_modulo=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"1",o=Blockly.Ruby.valueToCode(e,"B",n)||"1",[""+t+" % "+o,n]},Blockly.Blocks.operators_round={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_ROUND"),["A",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_round=function(e){var t,o;return o=Blockly.Ruby.ORDER_FUNCTION_CALL,t=Blockly.Ruby.valueToCode(e,"A",o)||"0",[""+t+".round",o]},Blockly.Blocks.operators_math_method={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ABS"),"%num%.abs"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_FLOOR"),"%num%.floor"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_CEIL"),"%num%.ceil"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_SQRT"),"Math.sqrt(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_SIN"),"Math.sin(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_COS"),"Math.cos(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_TAN"),"Math.tan(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ASIN"),"Math.asin(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ACOS"),"Math.acos(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ATAN"),"Math.atan(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_LN"),"Math.log(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_LOG"),"Math.log10(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE"),"Math::E ** %num%"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE"),"10 ** %num%"]],this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD"),["NUM",["Number"],Blockly.ALIGN_RIGHT],["METHOD",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_math_method=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_FUNCTION_CALL,t=this.getFieldValue("METHOD"),o=Blockly.Ruby.valueToCode(e,"NUM",n)||"0",[t.replace(/%num%/,o),n]},Blockly.Blocks.operators_true={init:function(){return this.setHelpUrl(""),this.setColour(100),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_OPERATORS_TRUE")),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_true=function(){return["true",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.operators_false={init:function(){return this.setHelpUrl(""),this.setColour(100),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_OPERATORS_FALSE")),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_false=function(){return["false",Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.pen_down_pen={init:function(){return this.setHelpUrl(""),this.setColour(160),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_PEN_DOWN_PEN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_down_pen=function(){return Blockly.Ruby.characterMethodCall_("down_pen")},Blockly.Blocks.pen_up_pen={init:function(){return this.setHelpUrl(""),this.setColour(160),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_PEN_UP_PEN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_up_pen=function(){return Blockly.Ruby.characterMethodCall_("up_pen")},Blockly.Blocks.pen_set_pen_color={init:function(){return this.setHelpUrl(""),this.setColour(160),this.interpolateMsg(Smalruby.bm("BLOCKS_PEN_SET_PEN_COLOR"),["COLOUR",["Colour","#ff0000"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_set_pen_color=function(){var e,t,o,n;return t=this.getFieldValue("COLOUR"),n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),e=parseInt(t.slice(5,7),16),Blockly.Ruby.characterSetVariable_("pen_color","["+n+", "+o+", "+e+"]")}}.call(this),function(){Blockly.Blocks.ruby_statement={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_STATEMENT")).appendField(new Blockly.FieldTextInput(""),"STATEMENT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_statement=function(){var e;return e=this.getFieldValue("STATEMENT"),""+e+"\n"},Blockly.Blocks.ruby_expression={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_EXPRESSION")).appendField(new Blockly.FieldTextInput(""),"EXP"),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.ruby_expression=function(){var e;return e=this.getFieldValue("EXP"),["("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.ruby_comment={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_COMMENT")).appendField(new Blockly.FieldTextInput(""),"COMMENT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_comment=function(){var e;return e=this.getFieldValue("COMMENT"),"# "+e+"\n"},Blockly.Blocks.ruby_p={init:function(){return this.setHelpUrl(""),this.setColour(340),this.interpolateMsg("p %1",["ARG",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_p=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ARG",Blockly.Ruby.ORDER_NONE)||'""',"p("+e+")\n"}}.call(this),function(){$(document).ready(function(){return window.SmalrubyEditor.Sensing={KeyDropdown:[[Smalruby.bm("BLOCKS_SENSING_K_UP"),"K_UP"],[Smalruby.bm("BLOCKS_SENSING_K_DOWN"),"K_DOWN"],[Smalruby.bm("BLOCKS_SENSING_K_LEFT"),"K_LEFT"],[Smalruby.bm("BLOCKS_SENSING_K_RIGHT"),"K_RIGHT"],[Smalruby.bm("BLOCKS_SENSING_K_SPACE"),"K_SPACE"],["a","K_A"],["b","K_B"],["c","K_C"],["d","K_D"],["e","K_E"],["f","K_F"],["g","K_G"],["h","K_H"],["i","K_I"],["j","K_J"],["k","K_K"],["l","K_L"],["m","K_M"],["n","K_N"],["o","K_O"],["p","K_P"],["q","K_Q"],["r","K_R"],["s","K_S"],["t","K_T"],["u","K_U"],["v","K_V"],["w","K_W"],["x","K_X"],["y","K_Y"],["z","K_Z"],["0","K_0"],["1","K_1"],["2","K_2"],["3","K_3"],["4","K_4"],["5","K_5"],["6","K_6"],["7","K_7"],["8","K_8"],["9","K_9"]],PushOrDownDropdown:[[Smalruby.bm("BLOCKS_SENSING_PUSH"),"push"],[Smalruby.bm("BLOCKS_SENSING_HOLD_DOWN"),"down"]],MouseButtonDropdown:[[Smalruby.bm("BLOCKS_SENSING_M_LBUTTON"),"M_LBUTTON"],[Smalruby.bm("BLOCKS_SENSING_M_MBUTTON"),"M_MBUTTON"],[Smalruby.bm("BLOCKS_SENSING_M_RBUTTON"),"M_RBUTTON"]],DownOrUpDropdown:[[Smalruby.bm("BLOCKS_SENSING_DOWN"),"down"],[Smalruby.bm("BLOCKS_SENSING_UP"),"up"]]}}),Blockly.Blocks.sensing_reach_wall={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_REACH_WALL")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_reach_wall=function(){return Blockly.Ruby.characterMethodCallInput_("reach_wall?")},Blockly.Blocks.motion_reach_wall=Blockly.Blocks.sensing_reach_wall,Blockly.Ruby.motion_reach_wall=Blockly.Ruby.sensing_reach_wall,Blockly.Blocks.sensing_input_key_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.KeyDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"KEY").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_input_key_push_or_down=function(){var e,t;return e=this.getFieldValue("KEY"),t=this.getFieldValue("POD"),["Input.key_"+t+"?("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.MouseButtonDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"MOUSE_BUTTON").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_push_or_down=function(){var e,t;return e=this.getFieldValue("MOUSE_BUTTON"),t=this.getFieldValue("POD"),["Input.mouse_"+t+"?("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_pos_x={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_POS_X")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_pos_x=function(){return["Input.mouse_pos_x",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_pos_y={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_POS_Y")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_pos_y=function(){return["Input.mouse_pos_y",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_hit={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_HIT_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_SENSING_HIT_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_hit=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCallInput_("hit?",e)},Blockly.Blocks.sensing_ask={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg("%1と聞いて待つ",["TEXT",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sensing_ask=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||'""',"ask("+e+")\n"},Blockly.Blocks.sensing_answer={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("答え"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.sensing_answer=function(){return["answer",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_timer_count={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("タイマー"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_timer_count=function(){return["timer.count",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_timer_reset={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("タイマーをリセット"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sensing_timer_reset=function(){return"timer.reset\n"},Blockly.Blocks.sensing_character_property={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_X"),"x"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_Y"),"y"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE"),"angle"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX"),"costume_index"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME"),"costume"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE"),"scale"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME"),"volume"]],this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE")).appendField(new Blockly.FieldDropdown(e),"PROPERTY"),this.setOutput(!0,["Number","String"]),this.setTooltip("")}},Blockly.Ruby.sensing_character_property=function(){var e,t,o;return t=this.getCharacterFieldValue(),o=this.getFieldValue("PROPERTY"),e=Smalruby.Collections.CharacterSet.findWhere({name:t}),Blockly.Ruby.characterMethodCallInput_(o,null,{object:e})},Blockly.Blocks.sensing_time_now={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_YEAR"),"year"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_MONTH"),"month"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_DAY"),"day"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_WDAY"),"wday"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_HOUR"),"hour"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_MIN"),"min"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_SEC"),"sec"]],this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_TIME_NOW")).appendField(new Blockly.FieldDropdown(e),"METHOD"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_time_now=function(){var e;return e=this.getFieldValue("METHOD"),["Time.now."+e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_days_since_2000={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("2000年からの日数"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_days_since_2000=function(){return["(Time.now - Time.mktime(2000, 1, 1)).to_i / 1.day",Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.sound_preset_sounds={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO"),"piano_do.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE"),"piano_re.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI"),"piano_mi.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA"),"piano_fa.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO"),"piano_so.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA"),"piano_ra.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI"),"piano_si.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2"),"piano_do_2.wav"]],this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"NAME"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.sound_preset_sounds=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("NAME")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sound_play={init:function(){return this.setHelpUrl(""),this.setColour(300),this.interpolateMsg(Smalruby.bm("BLOCKS_SOUND_PLAY"),["NAME",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sound_play=function(){var e;return e=Blockly.Ruby.valueToCode(this,"NAME",Blockly.Ruby.ORDER_NONE)||"",Blockly.Ruby.characterMethodCall_("play","name: "+e)},Blockly.Blocks.sound_stop={init:function(){return this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField("すべての音を止める"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sound_stop=function(){return"stop\n"},Blockly.Blocks.sound_volume={init:function(){return this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField("ボリューム"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sound_volume=function(){return["volume",Blockly.Ruby.ORDER_ATOMIC]}}.call(this);
33
+ },addBlock_:function(e){var t,o;return t=new Blockly.Block(Blockly.mainWorkspace,"character_new"),t.setCharacter(e),t.initSvg(),t.render(),this.moveByNewBlock_(t),t.select(),o=new Blockly.Block(Blockly.mainWorkspace,"events_on_start"),o.initSvg(),o.render(),t.getInput("DO").connection.connect(o.previousConnection)},moveByNewBlock_:function(e){var t,o,n,i,r,s,l;return o=Blockly.mainWorkspace.getMetrics(),i={x:o.viewLeft+this.klass.NEW_BLOCK_MARGIN.LEFT,y:o.viewTop+this.klass.NEW_BLOCK_MARGIN.TOP},this.prevBlock&&(s=this.prevBlock.getRelativeToSurfaceXY(),t=this.prevBlock.getHeightWidth(),n=e.getHeightWidth(),s.x===this.prevXY.x&&s.y===this.prevXY.y?(r=s.x,l=s.y+t.height+this.klass.NEW_BLOCK_MARGIN.TOP,l+n.height>o.viewTop+o.viewHeight&&(r+=t.width+this.klass.NEW_BLOCK_MARGIN.LEFT,l=i.y)):(r=this.prevXY.x,l=this.prevXY.y),r>=o.viewLeft&&r+n.width<=o.viewLeft+o.viewWidth&&l>=o.viewTop&&l+n.height<=o.viewTop+o.viewHeight&&(i.x=r,i.y=l)),e.moveBy(i.x,i.y),this.prevBlock=e,this.prevXY=e.getRelativeToSurfaceXY()},removeCharacter_:function(e){return e.get("using")?void 0:Smalruby.Collections.CharacterSet.remove(e)}},{NEW_BLOCK_MARGIN:{LEFT:20,TOP:20}})}.call(this),function(){Smalruby.LoadModalView=Backbone.View.extend({events:{"click #load-modal-ok-button":"onOk","click #load-modal-remix-button":"onRemix"},initialize:function(){var e=this;return this.$el.find("#load-modal-find-from-computer").click(function(t){return t.preventDefault(),e.onFindFromComputerClick.call(e,t)})},render:function(){var e,t,o,n,i=this;return this.type=null,this.program=null,this.setRemix(!1),this.unselect(),o=this.$el.find("#load-modal-local-programs"),o.empty(),t=this.$el.find("#load-modal-demo-programs"),t.empty(),this.$el.find(".modal-body").block({message:null}),n=function(){return i.$el.find(".modal-body").unblock()},this.$el.modal("show"),e=$.Deferred(),$.ajax({url:"/source_codes/",type:"GET",dataType:"json",success:function(t){return e.resolve(t)},error:e.reject}),e.promise().then(function(e){var n,r,s,l,a,c,u,g,h;for(u=e.localPrograms,r=function(e){var t;return t=i.programToHtml(e,i.onLocalProgramClick),o.append(t)},s=0,a=u.length;a>s;s++)n=u[s],r(n);for(g=e.demoPrograms,h=[],l=0,c=g.length;c>l;l++)n=g[l],h.push(function(e){var o;return o=i.programToHtml(e,i.onDemoProgramClick),t.append(o)}(n));return h}).then(n,n).fail(function(){return i.$el.modal("hide"),errorMessage("ロードに失敗しました")})},onOk:function(){switch(this.type){case"local":$.ajax({url:"/source_codes/load_local",type:"POST",data:{source_code:{filename:this.program.filename,remix:this.remix}},dataType:"json",success:function(e){return Smalruby.Views.MainMenuView.load(e.source_code)}});break;case"demo":$.ajax({url:"/source_codes/load_demo",type:"POST",data:{source_code:{filename:this.program.filename,remix:this.remix}},dataType:"json",success:function(e){return Smalruby.Views.MainMenuView.load(e.source_code)}});break;case"find-from-computer":$('input#load-file[name="source_code[file]"]').click()}return this.$el.modal("hide")},onRemix:function(){return this.setRemix(!this.remix)},setRemix:function(e){var t,o;return this.remix=e,o=$("#load-modal-remix-button"),t="btn-success",this.remix?o.addClass(t):o.removeClass(t)},onLocalProgramClick:function(e,t){return this.select(e.currentTarget,"local",t)},onDemoProgramClick:function(e,t){return this.select(e.currentTarget,"demo",t)},onFindFromComputerClick:function(e){return this.select(e.currentTarget,"find-from-computer")},select:function(e,t,o){return null==o&&(o=null),this.unselect(),$(e).addClass("active"),this.type=t,this.program=o},unselect:function(){return this.$el.find("a.thumbnail").removeClass("active")},programToHtml:function(e,t){var o,n,i=this;return n=e.imageUrl?'<img src="'+e.imageUrl+'">':'<h1 class="icon"><i class="icon-file" /></h1>',o='<li>\n <a class="thumbnail">\n '+n+"\n <blockquote>\n <p>\n "+e.title+"\n </p>\n <small>"+e.filename+"</small>\n </blockquote>\n </div>\n</li>",o=$(o),o.find("a.thumbnail").click(function(o){return o.preventDefault(),t.call(i,o,e)}),o}})}.call(this),function(){Smalruby.MainMenuView=Backbone.View.extend({el:"#main-menu",events:{"click #block-mode-button":"onBlockMode","click #ruby-mode-button":"onRubyMode","click #run-button":"onRun","click #download-button":"onDownload","click #load-local-button":"onLoadLocal","click #load-button":"onLoad","click #save-button":"onSave","click #check-button":"onCheck","click #reset-button":"onReset","click #signin-button":"onSignin","click #signout-button":"onSignout","click #username-button":"onUsername"},initialize:function(){var e=this;return $("#filename").keypress(function(e){return e||(e=window.event),13===e.keyCode?($("#save-button").click(),!1):!0}),$("#file-form").fileupload({dataType:"json",done:function(t,o){return e.load(o.result.source_code)}})},onBlockMode:function(e){var t;return e.preventDefault(),window.blockMode?void 0:Smalruby.changedAfterTranslating?(this.blockUI({title:'<i class="icon-filter"></i>\n'+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE")}),t=new Smalruby.SourceCode,t.toBlocks().then(function(e){return window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show"),e.length>0?(Smalruby.blocklyLoading=!0,Smalruby.translating=!0,Smalruby.loadXml(e),Smalruby.translating=!1,Smalruby.changedAfterTranslating=!1):void 0}).then(this.unblockUI,this.unblockUI).fail(function(){return window.errorMessage(Smalruby.bm("VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR"))})):(window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show"),void 0)},onRubyMode:function(e){var t;return e.preventDefault(),window.blockMode&&(window.blockMode=!1,$('#tabs a[href="#ruby-tab"]').tab("show"),Smalruby.changedAfterTranslating)?(t=Blockly.Ruby.workspaceToCode(),Smalruby.translating=!0,window.textEditor.getSession().getDocument().setValue(t),Smalruby.translating=!1,Smalruby.changedAfterTranslating=!1,window.textEditor.moveCursorTo(0,0),window.textEditor.focus()):void 0},onRun:function(e){var t,o,n,i=this;return e.preventDefault(),o=this.getSourceCode(),n=new Smalruby.SourceCode({filename:o.getRbxmlFilename()}),clearMessages(),this.blockUI({title:'<i class="icon-play"></i>\n'+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE"),notice:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE")}),t=Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN"),o.save2().then(function(){return o.write()}).then(function(e){return i.confirmOverwrite_.call(i,e,o,function(){return t=Smalruby.bm("VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN")})}).then(function(){return Smalruby.savedFilename=o.get("filename"),window.changed=!1,o.check()}).then(function(e){var t,o,n,i;if(e.length>0){for(o=function(e){var t;return t=""+e.row+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LINES"),e.column>0&&(t+=""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_COMMA")+e.column+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS")),window.errorMessage(t+(": "+e.message))},n=0,i=e.length;i>n;n++)t=e[n],o(t);return $.Deferred().reject().promise()}}).then(function(){return n.save2()}).then(function(){return n.write(!0)}).then(function(){return o.run()}).then(function(e){var t,o,n,i;if(e.length>0){for(o=function(e){var t;return t=""+e.row+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LINES"),e.column>0&&(t+=""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_COMMA")+e.column+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS")),errorMessage(t+(": "+e.message))},n=0,i=e.length;i>n;n++)t=e[n],o(t);return $.Deferred().reject().promise()}}).then(this.unblockUI,this.unblockUI).fail(function(){return errorMessage(t)})},onDownload:function(e){var t;return e.preventDefault(),t=this.getSourceCode(),clearMessages(),this.blockUI({title:""+Smalruby.bm("VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE"),message:Smalruby.bm("VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE"),notice:"ダウンロードしたプログラムは、<br>\nWindowsだと「ruby "+t.get("filename")+"」、<br>\nMacだと「rsdl "+t.get("filename")+"」で実行できます。"}),t.save2().then(function(){return window.changed=!1,window.successMessage("ダウンロードしました"),Smalruby.downloading=!0,$("#download-link").click()}).then(this.unblockUI,this.unblockUI).fail(function(){return window.errorMessage("ダウンロードできませんでした")})},onLoadLocal:function(e){return e.preventDefault(),!window.changed||confirm("まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?")?Smalruby.Views.LoadModalView.render():void 0},onLoad:function(e){return e.preventDefault(),!window.changed||confirm("まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?")?$('input#load-file[name="source_code[file]"]').click():void 0},onSave:function(e){var t,o,n,i=this;return e.preventDefault(),o=$.trim($("#filename").val()),o.length<=0?(window.errorMessage("セーブする前にプログラムに名前をつけてね!"),$("#filename").focus(),void 0):(n=this.getSourceCode(),window.blockMode&&(n=new Smalruby.SourceCode({filename:n.getRbxmlFilename()})),clearMessages(),this.blockUI({title:"プログラムのセーブ中",message:"プログラムをセーブしています。",notice:"プログラムの名前は「"+n.get("filename")+"」です。<br>\nプログラムはホームディレクトリにセーブします。<br>"}),t="セーブできませんでした",n.save2().then(function(){return n.write()}).then(function(e){return i.confirmOverwrite_.call(i,e,n,function(){return t="セーブをキャンセルしました"})}).then(this.unblockUI,this.unblockUI).done(function(){return Smalruby.savedFilename=n.get("filename"),window.changed=!1,window.successMessage("セーブしました")}).fail(function(){return window.errorMessage(t)}))},onCheck:function(e){var t;return e.preventDefault(),clearMessages(),t=this.getSourceCode(),this.blockUI({title:"プログラムのチェック中",message:"プログラムの文法をチェックしています。",notice:"このチェックは簡易的なものですので、<br>\nプログラムを動かすとエラーが見つかるかもしれません。"}),t.check().then(function(e){var t,o,n,i;if(0===e.length)return window.successMessage("チェックしました","ただし、プログラムを動かすとエラーが見つかるかもしれません。");for(i=[],o=0,n=e.length;n>o;o++)t=e[o],i.push(function(e){var t;return t=""+e.row+"行",e.column>0&&(t+="、"+e.column+"文字"),window.errorMessage(t+(": "+e.message))}(t));return i}).then(this.unblockUI,this.unblockUI).fail(function(){return errorMessage("チェックできませんでした")})},onReset:function(e){return e.preventDefault(),window.changed?Smalruby.Views.ResetModalView.render():Smalruby.reset(),!0},onSignin:function(e){return e.preventDefault(),Smalruby.Views.SigninModalView.render()},onSignout:function(e){return e.preventDefault(),$.ajax({url:"/signout",type:"DELETE"}).then(function(){return $("#signin-button").show(),$("#signout-button").hide(),$("#username-label").text(""),$("#username-button").hide(),successMessage("ログアウトしました")},function(){return errorMessage("ログアウトに失敗しました")})},onUsername:function(e){return e.preventDefault()},getFilename:function(){return $.trim($("#filename").val())},getSourceCode:function(){var e;return e=new Smalruby.SourceCode,$("#filename").val(e.get("filename")),e},blockUI:function(e){var t,o;return t="",e.title&&(t+="<h3>\n "+e.title+"\n</h3>"),(e.message||e.notice)&&(o="",e.message&&(o+="<p>\n "+e.message+"\n</p>"),e.notice&&(o+="<small>\n "+e.notice+"\n</small>"),t+="<blockquote>\n "+o+"\n</blockquote>"),$.blockUI({message:t,css:{border:"none","text-align":"left","padding-left":"2em"}})},unblockUI:function(){return $.unblockUI()},confirmOverwrite_:function(e,t,o){return null==o&&(o=$.noop),e.source_code.error?t.get("filename")===Smalruby.savedFilename||confirm("前に"+t.get("filename")+"という名前でセーブしているけど本当にセーブしますか?\nセーブすると前に作成したプログラムは消えてしまうよ!")?t.write(!0):(o.call(),$.Deferred().reject().promise()):void 0},load:function(e){var t;return e.error?window.errorMessage(e.filename+"は"+e.error):(clearMessages(),t=e.filename,t.match(/\.xml$/)?(window.blockMode||(window.blockMode=!0,$('#tabs a[href="#block-tab"]').tab("show")),t=t.replace(/(\.rb)?\.xml$/,".rb"),Smalruby.blocklyLoading=!0,Smalruby.loadXml(e.data),e.data=Blockly.Ruby.workspaceToCode()):(Smalruby.Collections.CharacterSet.reset(),Blockly.mainWorkspace.clear(),window.blockMode&&(window.blockMode=!1,$('#tabs a[href="#ruby-tab"]').tab("show"),window.textEditor.focus())),$("#filename").val(t),window.textEditor.getSession().getDocument().setValue(e.data),window.textEditor.moveCursorTo(0,0),window.changed=!1,Smalruby.changedAfterTranslating=!0,window.successMessage("ロードしました"))}})}.call(this),function(){Smalruby.ResetModalView=Backbone.View.extend({events:{"click #reset-modal-ok-button":"onOk"},render:function(){return this.$el.modal("show")},onOk:function(){return Smalruby.reset(),this.$el.modal("hide")}})}.call(this),function(){Smalruby.SigninModalView=Backbone.View.extend({events:{"click #signin-modal-ok-button":"onOk"},initialize:function(){var e=this;return Smalruby.ignoreEnterKey(this.$el),this.$el.on("shown",function(){return e.$el.find("#signin-modal-username").focus()})},render:function(){return this.$el.find("#signin-modal-username").val($("#username-label").text()),this.$el.modal("show")},onOk:function(){var e,t=this;return e=this.$el.find("input[name=username]").val(),$.post("/sessions/",{username:e}).then(function(e){return $("#signin-button").hide(),$("#signout-button").show(),$("#username-label").text(e),$("#username-button").show(),successMessage("ログインしました"),(new $.Deferred).resolve().promise()},function(){return errorMessage("ログインに失敗しました"),(new $.Deferred).resolve().promise()}).done(function(){return t.$el.modal("hide")})}})}.call(this),function(){Blockly.Ruby=new Blockly.Generator("Ruby"),Blockly.Ruby.addReservedWords("BEGIN class ensure nil self whenEND def false not super whilealias defined? for or then yieldand do if redo true __LINE__begin else in rescue undef __FILE__break elsif module retry unless __ENCODING__case end next return until".split(/\s+/)),Blockly.Ruby.ORDER_ATOMIC=0,Blockly.Ruby.ORDER_COLLECTION=1,Blockly.Ruby.ORDER_STRING_CONVERSION=1,Blockly.Ruby.ORDER_MEMBER=2,Blockly.Ruby.ORDER_INDEX=3,Blockly.Ruby.ORDER_FUNCTION_CALL=4,Blockly.Ruby.ORDER_UNARY_SIGN=5,Blockly.Ruby.ORDER_EXPONENTIATION=6,Blockly.Ruby.ORDER_UNARY_MINUS_SIGN=7,Blockly.Ruby.ORDER_MULTIPLICATIVE=8,Blockly.Ruby.ORDER_ADDITIVE=9,Blockly.Ruby.ORDER_BITWISE_SHIFT=10,Blockly.Ruby.ORDER_BITWISE_AND=11,Blockly.Ruby.ORDER_BITWISE_XOR=12,Blockly.Ruby.ORDER_BITWISE_OR=12,Blockly.Ruby.ORDER_RELATIONAL=13,Blockly.Ruby.ORDER_EQUALS=14,Blockly.Ruby.ORDER_LOGICAL_AND=15,Blockly.Ruby.ORDER_LOGICAL_OR=16,Blockly.Ruby.ORDER_RANGE=17,Blockly.Ruby.ORDER_CONDITIONAL=18,Blockly.Ruby.ORDER_ASSIGNMENT=19,Blockly.Ruby.ORDER_NOT=20,Blockly.Ruby.ORDER_AND_OR=21,Blockly.Ruby.ORDER_NONE=99,Blockly.Ruby.INFINITE_LOOP_TRAP=null,Blockly.Ruby.init=function(){return this.definitions_=Object.create(null),Blockly.Variables?(this.variableDB_?this.variableDB_.reset():this.variableDB_=new Blockly.Names(Blockly.Ruby.RESERVED_WORDS_),this.definitions_.require_smalruby='require "smalruby"',this.definitions_.receiver_stack=["main"],this.definitions_.character_stack=[]):void 0},Blockly.Ruby.defineCharacter=function(e){var t,o,n;if(o=e.get("name"),t="character_"+o,!Blockly.Ruby.definitions_[t]){switch(e.get("rotationStyle")){case"left_right":n=", rotation_style: :left_right";break;case"none":n=", rotation_style: :none";break;default:n=""}return Blockly.Ruby.definitions_[t]=""+o+" = Character.new(costume: "+Blockly.Ruby.quote_(e.costume())+", x: "+e.get("x")+", y: "+e.get("y")+", angle: "+e.get("angle")+n+")"}},Blockly.Ruby.characterStack=function(){return this.definitions_.character_stack},Blockly.Ruby.character=function(){return _.last(this.characterStack())},Blockly.Ruby.receiverStack=function(){return this.definitions_.receiver_stack},Blockly.Ruby.receiver=function(){return _.last(this.receiverStack())},Blockly.Ruby.receiverName=function(e){var t,o;return null==e&&(e={}),t={object:Blockly.Ruby.character(),dropSelf:!0},_.extend(t,e),o=this.receiver(),o===t.object?t.dropSelf?"":"self.":""+t.object.get("name")+"."},Blockly.Ruby.cs=Blockly.Ruby.characterStack,Blockly.Ruby.cs_=Blockly.Ruby.characterStack,Blockly.Ruby.c=Blockly.Ruby.character,Blockly.Ruby.c_=Blockly.Ruby.character,Blockly.Ruby.rs=Blockly.Ruby.receiverStack,Blockly.Ruby.rs_=Blockly.Ruby.receiverStack,Blockly.Ruby.r=Blockly.Ruby.receiver,Blockly.Ruby.r_=Blockly.Ruby.receiver,Blockly.Ruby.rn=Blockly.Ruby.receiverName,Blockly.Ruby.rn_=Blockly.Ruby.receiverName,Blockly.Ruby.characterMethodCall_=function(e,t,o){var n;return null==o&&(o={}),n=this.characterMethodCallInput_(e,t,o),n[0]?""+n[0]+"\n":""},Blockly.Ruby.characterMethodCallInput_=function(e,t,o){var n;return null==o&&(o={}),n=this.c_()?t&&t.length>0?""+this.rn_(o)+e+"("+t+")":""+this.rn_(o)+e:null,[n,this.ORDER_FUNCTION_CALL]},Blockly.Ruby.characterSetVariable_=function(e,t,o){return null==o&&(o="="),this.c_()?""+this.rn_({dropSelf:!1})+e+" "+o+" "+t+"\n":""},Blockly.Ruby.characterEvent_=function(e,t,o,n){var i,r;if(null==n&&(n=null),r=this.c_()){this.rs_().push(r);try{i=Blockly.Ruby.statementToCode(e,t)||"\n"}finally{this.rs_().pop()}return n=n?", "+n:"","\n"+this.rn_()+"on(:"+o+n+") do\n"+i+"end\n"}return""},Blockly.Ruby.finish=function(e){var t,o,n,i,r;i=[],o=[],r=function(e){var t;return t=Blockly.Ruby.definitions_[e],_.isString(t)?t.match(/^require\s*('\S+'|"\S+")/)?i.push(t):o.push(t):void 0};for(n in Blockly.Ruby.definitions_)r(n);return 0===o.length&&0===e.length?"":(t=i.join("\n")+"\n\n",o.length>0&&(t+=o.join("\n").replace(/\n\n+/g,"\n\n").replace(/\n*$/,"\n")),t+e)},Blockly.Ruby.scrubNakedValue=function(e){return e+"\n"},Blockly.Ruby.escapeChars_={'"':'\\"'},Blockly.Ruby.quote_=function(e){var t,o,n,i,r,s;for(o=String(e),n=['"'],i=function(e){var t;return t=o.charAt(e),n[e+1]=Blockly.Ruby.escapeChars_[t]||t},t=r=0,s=o.length;s>=0?s>r:r>s;t=s>=0?++r:--r)i(t);return n.push('"'),n.join("")},Blockly.Ruby.scrub_=function(e,t){var o,n,i,r,s,l,a,c,u,g=this;if(null===t)return"";if(n="",!e.outputConnection||!e.outputConnection.targetConnection)for(o=e.getCommentText(),o&&(n+=this.prefixLines(o,"# ")+"\n"),u=e.inputList,l=function(e){var t;return e.type===Blockly.INPUT_VALUE&&(t=e.connection.targetBlock(),t&&(o=g.allNestedComments(t)))?n+=g.prefixLines(o,"# "):void 0},a=0,c=u.length;c>a;a++)i=u[a],l(i);return r=e.nextConnection&&e.nextConnection.targetBlock(),s=this.blockToCode(r),n+t+s}}.call(this),function(){"use strict";goog.provide("Smalruby.FieldCharacter"),goog.require("Blockly.FieldDropdown"),Smalruby.FieldCharacter=function(e,t){var o,n,i=this;return o=t?function(e){var o,n;return n=Smalruby.FieldCharacter.dropdownChange.call(i,e),n?o=n:n=i.getValue(),t.call(i,o),n}:Smalruby.FieldCharacter.dropdownChange,Smalruby.FieldCharacter.superClass_.constructor.call(this,Smalruby.FieldCharacter.dropdownCreate,o),n=Smalruby.Collections.CharacterSet,n.on("add",this.onCharacterSetAdd_,this),n.on("remove",this.onCharacterSetRemove_,this),n.on("reset",this.onCharacterSetReset_,this),this.character=Smalruby.FieldCharacter.NullCharacter,e||(e=Smalruby.Collections.CharacterSet.first()),this.setCharacter(e)},goog.inherits(Smalruby.FieldCharacter,Blockly.FieldDropdown),Smalruby.FieldCharacter.prototype.setCharacter=function(e){return e!==this.character?(this.character.unlink(this),this.character.off("change:name",this.onCharacterChangeName_,this),this.character=e?e:Smalruby.FieldCharacter.NullCharacter,this.character.link(this),this.character.on("change:name",this.onCharacterChangeName_,this),this.setValue(this.character.get("name"))):void 0},Smalruby.FieldCharacter.prototype.onCharacterSetAdd_=function(e){return this.character===Smalruby.FieldCharacter.NullCharacter?this.setCharacter(e):void 0},Smalruby.FieldCharacter.prototype.onCharacterSetRemove_=function(e){return e===this.character?this.setCharacter():void 0},Smalruby.FieldCharacter.prototype.onCharacterSetReset_=function(e){return this.character===Smalruby.FieldCharacter.NullCharacter?this.setCharacter(e.first()):this.setCharacter(e.findWhere({name:this.getValue()}))},Smalruby.FieldCharacter.prototype.onCharacterChangeName_=function(e,t){return this.setValue(t)},Smalruby.FieldCharacter.prototype.clone=function(){return new Smalruby.FieldCharacter(this.character,this.changeHandler_)},Smalruby.FieldCharacter.prototype.dispose=function(){var e;return e=Smalruby.Collections.CharacterSet,e.off("add",this.onCharacterSetAdd_,this),e.off("remove",this.onCharacterSetRemove_,this),e.off("reset",this.onCharacterSetReset_,this),this.setCharacter(),Blockly.FieldDropdown.prototype.dispose.call(this)},Smalruby.FieldCharacter.prototype.setText=function(e){var t;return this.character||(this.character=Smalruby.FieldCharacter.NullCharacter,t=Smalruby.Collections.CharacterSet,this.setCharacter(t.findWhere({name:e}))),Blockly.FieldDropdown.prototype.setText.call(this,e)},Smalruby.FieldCharacter.dropdownCreate=function(){var e;return e=Smalruby.Collections.CharacterSet,e.length>0?Smalruby.Collections.CharacterSet.map(function(e){var t;return t=e.get("name"),[t,t]}):[[Smalruby.FieldCharacter.NullCharacter.get("name"),""]]},Smalruby.FieldCharacter.dropdownChange=function(e){var t;return t=Smalruby.Collections.CharacterSet.findWhere({name:e}),t?(this.setCharacter(t),e):null},Smalruby.FieldCharacter.NullCharacter={get:function(){return Smalruby.bm("BLOCKS_FIELD_CHARACTER_NO_CHARACTER")},on:function(){return $.noop},off:function(){return $.noop},link:function(){return $.noop},unlink:function(){return $.noop}},Blockly.Block.prototype.getCharacterFieldValue=function(e){var t,o;return null==e&&(e="CHAR"),o=this.getFieldValue(e),Blockly.Ruby.c()&&(t=Smalruby.Collections.CharacterSet.findWhere({name:o}),Blockly.Ruby.defineCharacter(t)),o}}.call(this),function(){Blockly.Ruby.math_number=function(){var e,t;return e=parseFloat(this.getFieldValue("NUM")),t=0>e?Blockly.Ruby.ORDER_UNARY_MINUS_SIGN:Blockly.Ruby.ORDER_ATOMIC,[e,t]},Blockly.Ruby.text=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("TEXT")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Ruby.variables_get=function(e){var t;return t=Blockly.Ruby.variableDB_.getName(e.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),[t,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Ruby.variables_set=function(e){var t,o;return o=Blockly.Ruby.valueToCode(e,"VALUE",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.variableDB_.getName(e.getFieldValue("VAR"),Blockly.Variables.NAME_TYPE),t+" = "+o+"\n"}}.call(this),function(){Blockly.Blocks.character_new={init:function(){var e,t,o;return this.setHelpUrl(""),this.setColour(198),o=2*Blockly.BlockSvg.FIELD_HEIGHT,e=new Blockly.FieldImage(null,o,o),t=new Blockly.FieldLabel(""),t.EDITABLE=!0,t.textElement_.setAttribute("y",10),t.setText=_.bind(this.nameFieldSetText_,this),this.appendDummyInput().appendField(e,"COSTUME").appendField(t,"NAME"),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")},dispose:function(){var e;return this.character.off("change",this.changeHandler),"function"==typeof(e=this.character).unlink&&e.unlink(this),Blockly.Block.prototype.dispose.apply(this,arguments)},nameFieldSetText_:function(e){var t,o;return o=Smalruby.Collections.CharacterSet,t=o.findWhere({name:e}),t?this.setCharacter(t):this.fieldLableSetText_(this.getField_("NAME"),e)},fieldLableSetText_:function(e,t){return Blockly.FieldLabel.prototype.setText.call(e,t)},setCharacter:function(e){var t=this;return this.changeHandler&&this.character.off("change",this.changeHandler),this.character=e,this.setFieldValue(e.costumeUrl(),"COSTUME"),this.fieldLableSetText_(this.getField_("NAME"),e.get("name")),e.link(this),this.changeHandler=function(o){return t.setFieldValue(o.costumeUrl(),"COSTUME"),t.fieldLableSetText_(t.getField_("NAME"),e.get("name"))},e.on("change",this.changeHandler),this}},Blockly.Ruby.character_new=function(e){var t,o,n;t=e.character,Blockly.Ruby.defineCharacter(t),Blockly.Ruby.cs_().push(t);try{n=e.getInputTargetBlock("DO"),o=Blockly.Ruby.blockToCode(n)||"\n"}finally{Blockly.Ruby.cs_().pop()}return o}}.call(this),function(){Blockly.Blocks.control_sleep={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_SLEEP"),["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_sleep=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_FUNCTION_CALL)||"0","sleep("+e+")\n"},Blockly.Blocks.control_loop={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP")),this.appendStatementInput("DO"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP_END")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_loop=function(e){var t;return"main"===Blockly.Ruby.r_()?"":(t=Blockly.Ruby.statementToCode(e,"DO")||"\n","loop do\n"+t+"end\n")},Blockly.Blocks.control_break={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_BREAK")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_break=function(){return"main"===Blockly.Ruby.receiver()?"":"break\n"},Blockly.Blocks.control_next={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_NEXT")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_next=function(){return"main"===Blockly.Ruby.receiver()?"":"next\n"},Blockly.Blocks.control_redo={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_REDO")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_redo=function(){return"main"===Blockly.Ruby.receiver()?"":"redo\n"},Blockly.Blocks.control_if={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendValueInput("COND").setCheck("Boolean").appendField(Smalruby.bm("BLOCKS_CONTROL_IF")),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_THEN")),this.appendStatementInput("THEN"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip("")}},Blockly.Ruby.control_if=function(e){var t,o;return o=Blockly.Ruby.valueToCode(e,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"false",t=Blockly.Ruby.statementToCode(e,"THEN")||"\n","if "+o+"\n"+t+"end\n"},Blockly.Blocks.control_if_else={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendValueInput("COND").setCheck("Boolean").appendField(Smalruby.bm("BLOCKS_CONTROL_IF")),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_THEN")),this.appendStatementInput("THEN"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_ELSE")),this.appendStatementInput("ELSE"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setInputsInline(!0),this.setTooltip("")}},Blockly.Ruby.control_if_else=function(e){var t,o,n;return n=Blockly.Ruby.valueToCode(e,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"false",t=Blockly.Ruby.statementToCode(e,"THEN")||"\n",o=Blockly.Ruby.statementToCode(e,"ELSE")||"\n","if "+n+"\n"+t+"else\n"+o+"end\n"},Blockly.Blocks.control_times={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_TIMES"),["COUNT",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_times=function(e){var t,o;return o=Blockly.Ruby.valueToCode(this,"COUNT",Blockly.Ruby.ORDER_NONE)||0,t=Blockly.Ruby.statementToCode(e,"DO")||"\n",""+o+".times do\n"+t+"end\n"},Blockly.Blocks.control_await_until={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_AWAIT_UNTIL"),["COND",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_await_until=function(){var e,t;return"main"===Blockly.Ruby.receiver()?"":(e=Blockly.Ruby.characterMethodCallInput_("await")[0],t=Blockly.Ruby.valueToCode(this,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"true",""+e+" until "+t+"\n")},Blockly.Blocks.control_until={init:function(){return this.setHelpUrl(""),this.setColour(43),this.interpolateMsg(Smalruby.bm("BLOCKS_CONTROL_UNTIL"),["COND",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.appendStatementInput("DO"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_LOOP_END")).setAlign(Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_until=function(e){var t,o;return o=Blockly.Ruby.valueToCode(this,"COND",Blockly.Ruby.ORDER_CONDITIONAL)||"true",t=Blockly.Ruby.statementToCode(e,"DO")||"\n","until "+o+"\n"+t+"end\n"},Blockly.Blocks.control_await={init:function(){return this.setHelpUrl(""),this.setColour(43),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_CONTROL_AWAIT")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.control_await=function(){return"main"===Blockly.Ruby.receiver()?"":Blockly.Ruby.characterMethodCall_("await")}}.call(this),function(){}.call(this),function(){}.call(this),function(){Blockly.Blocks.events_on_start={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_START")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_start=function(e){return Blockly.Ruby.characterEvent_(e,"DO","start")},Blockly.Blocks.events_on_key_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.KeyDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"KEY").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_key_push_or_down=function(e){var t,o;return t=this.getFieldValue("KEY"),o=this.getFieldValue("POD"),Blockly.Ruby.characterEvent_(e,"DO","key_"+o,t)},Blockly.Blocks.events_on_click={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_CLICK")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_click=function(e){return Blockly.Ruby.characterEvent_(e,"DO","click")},Blockly.Blocks.events_on_hit={init:function(){return this.setHelpUrl(""),this.setColour(33),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_EVENTS_ON_HIT_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_EVENTS_ON_HIT_SUFFIX")),this.appendStatementInput("DO"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.events_on_hit=function(e){var t;return t=this.getCharacterFieldValue(),Blockly.Ruby.characterEvent_(e,"DO","hit",t)}}.call(this),function(){var e,t,o,n,i,r,s,l;n=null,r=null,s=null,o=null,e=null,i=null,l=null,t=null,$(document).ready(function(){var a;return window.SmalrubyEditor.Hardware={Type:"Arduino",DioPins:[2,3,4,5,6,7,8,9,10,11,12,13],PwmPins:[3,5,6,9,10,11],AiPins:[0,1,2,3,4,5]},n=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.DioPins,n=[],e=0,t=o.length;t>e;e++)a=o[e],n.push(["D"+a,"D"+a]);return n}(),r=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.PwmPins,n=[],e=0,t=o.length;t>e;e++)a=o[e],n.push(["D"+a,"D"+a]);return n}(),s=function(){var e,t,o,n;for(o=[3,9],n=[],e=0,t=o.length;t>e;e++)a=o[e],n.push(["D"+a,"D"+a]);return n}(),o=function(){var e,t,o,n;for(o=window.SmalrubyEditor.Hardware.AiPins,n=[],e=0,t=o.length;t>e;e++)a=o[e],n.push(["A"+a,"A"+a]);return n}(),e=[[Smalruby.bm("BLOCKS_HARDWARE_ANODE"),"anode"],[Smalruby.bm("BLOCKS_HARDWARE_CATHODE"),"cathode"]],i=[[Smalruby.bm("BLOCKS_HARDWARE_LEFT"),"left"],[Smalruby.bm("BLOCKS_HARDWARE_RIGHT"),"right"]],l=function(){var e,t,o,n;for(o=[5,6],n=[],e=0,t=o.length;t>e;e++)a=o[e],n.push(["D"+a,"D"+a]);return n}(),t=[[Smalruby.bm("COMMON_FORWARD"),"forward"],[Smalruby.bm("COMMON_BACKWARD"),"backward"],[Smalruby.bm("COMMON_TURN_LEFT"),"turn_left"],[Smalruby.bm("COMMON_TURN_RIGHT"),"turn_right"],[Smalruby.bm("COMMON_STOP"),"stop"]]
34
+ }),Blockly.Blocks.hardware_init_hardware={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_INIT_HARDWARE")),this.setTooltip("")}},Blockly.Ruby.hardware_init_hardware=function(){return Blockly.Ruby.definitions_.init_hardware="init_hardware",""},Blockly.Blocks.hardware_led_turn_on={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LED_TURN_ON"),["PIN",["Dropdown",n],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(""),this.setFieldValue("D2","PIN")}},Blockly.Ruby.hardware_led_turn_on=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("led("+Blockly.Ruby.quote_(e)+").turn_on")},Blockly.Blocks.hardware_led_turn_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LED_TURN_OFF"),["PIN",["Dropdown",n],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip(""),this.setFieldValue("D2","PIN")}},Blockly.Ruby.hardware_led_turn_off=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("led("+Blockly.Ruby.quote_(e)+").turn_off")},Blockly.Blocks.hardware_rgb_led_set_color={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_RGB_LED_SET_COLOR"),["AC",["Dropdown",e],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],["COLOUR",["Colour","#ff0000"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_rgb_led_set_color=function(e){var t,o,n,i,r,s;return t=this.getFieldValue("AC"),r=this.getFieldValue("PIN"),n=e.getFieldValue("COLOUR"),s=parseInt(n.slice(1,3),16),i=parseInt(n.slice(3,5),16),o=parseInt(n.slice(5,7),16),Blockly.Ruby.characterSetVariable_("rgb_led_"+t+"("+Blockly.Ruby.quote_(r)+").color","["+s+", "+i+", "+o+"]")},Blockly.Blocks.hardware_rgb_led_turn_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_RGB_LED_TURN_OFF"),["AC",["Dropdown",e],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",s],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_rgb_led_turn_off=function(){var e,t;return e=this.getFieldValue("AC"),t=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("rgb_led_"+e+"("+Blockly.Ruby.quote_(t)+").turn_off")},Blockly.Blocks.hardware_seven_segment_display_show={init:function(){var e,t;return e=function(){var e,o;for(o=[],t=e=0;9>=e;t=++e)o.push([String(t),String(t)]);return o}(),this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW"),["NUM",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_seven_segment_display_show=function(){var e;return e=parseInt(this.getFieldValue("NUM")),Blockly.Ruby.characterMethodCall_("seven_segment_display.show("+e+")")},Blockly.Blocks.hardware_seven_segment_display_off={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_seven_segment_display_off=function(){return Blockly.Ruby.characterMethodCall_("seven_segment_display.off")},Blockly.Blocks.hardware_lcd_puts={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_LCD_PUTS"),["TEXT",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_lcd_puts=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||"",Blockly.Ruby.characterMethodCall_("lcd.puts("+e+")")},Blockly.Blocks.hardware_lcd_clear={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_LCD_CLEAR")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_lcd_clear=function(){return Blockly.Ruby.characterMethodCall_("lcd.clear")},Blockly.Blocks.hardware_servo_set_position={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SERVO_SET_POSITION"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["POS",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_servo_set_position=function(){var e,t;return e=this.getFieldValue("PIN"),t=Blockly.Ruby.valueToCode(this,"POS",Blockly.Ruby.ORDER_FUNCTION_CALL)||"5",Blockly.Ruby.characterMethodCall_("servo("+Blockly.Ruby.quote_(e)+").position = "+t)},Blockly.Blocks.hardware_two_wheel_drive_car_forward={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD"),["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_forward=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").forward")},Blockly.Blocks.hardware_two_wheel_drive_car_backward={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD"),["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_backward=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").backward")},Blockly.Blocks.hardware_two_wheel_drive_car_turn_left={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT"),["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_turn_left=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").turn_left")},Blockly.Blocks.hardware_two_wheel_drive_car_turn_right={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT"),["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_turn_right=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").turn_right")},Blockly.Blocks.hardware_two_wheel_drive_car_stop={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP"),["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_stop=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(e)+").stop")},Blockly.Blocks.hardware_two_wheel_drive_car_run={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN"),["COMMAND",["String"],Blockly.ALIGN_RIGHT],["PIN",["Dropdown",l],Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_run=function(){var e,t,o;return t=this.getFieldValue("PIN"),o=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||0,e=Blockly.Ruby.valueToCode(this,"COMMAND",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_("stop"),Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+").run(command: "+e+", sec: "+o+")")},Blockly.Blocks.hardware_two_wheel_drive_car_commands={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(new Blockly.FieldDropdown(t),"COMMAND"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_commands=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("COMMAND")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.hardware_two_wheel_drive_car_set_speed={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["LOR",["Dropdown",i],Blockly.ALIGN_RIGHT],["SPEED",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_set_speed=function(){var e,t,o;return t=this.getFieldValue("PIN"),e=this.getFieldValue("LOR"),o=Blockly.Ruby.valueToCode(this,"SPEED",Blockly.Ruby.ORDER_NONE)||"100",Blockly.Ruby.characterMethodCall_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+")."+e+"_speed = "+o)},Blockly.Blocks.hardware_two_wheel_drive_car_speed={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["LOR",["Dropdown",i],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_two_wheel_drive_car_speed=function(){var e,t;return t=this.getFieldValue("PIN"),e=this.getFieldValue("LOR"),Blockly.Ruby.characterMethodCallInput_("two_wheel_drive_car("+Blockly.Ruby.quote_(t)+")."+e+"_speed")},Blockly.Blocks.hardware_motor_driver={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD"),"forward"],[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD"),"backward"],[Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_STOP"),"stop"]],this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["METHOD",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver=function(){var e,t;return t=this.getFieldValue("PIN"),e=this.getFieldValue("METHOD"),Blockly.Ruby.characterMethodCall_("motor_driver("+Blockly.Ruby.quote_(t)+")."+e)},Blockly.Blocks.hardware_motor_driver_set_speed={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],["SPEED",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver_set_speed=function(){var e,t;return e=this.getFieldValue("PIN"),t=Blockly.Ruby.valueToCode(this,"SPEED",Blockly.Ruby.ORDER_NONE)||"100",Blockly.Ruby.characterMethodCall_("motor_driver("+Blockly.Ruby.quote_(e)+").speed = "+t)},Blockly.Blocks.hardware_motor_driver_speed={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED"),["PIN",["Dropdown",r],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_motor_driver_speed=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCallInput_("motor_driver("+Blockly.Ruby.quote_(e)+").speed")},Blockly.Blocks.hardware_button_pressed_or_released={init:function(){var e;return e=window.SmalrubyEditor.Sensing.PressedOrReleasedDropdown,this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_BUTTON_PRESSED_OR_RELEASED"),["PIN",["Dropdown",n],Blockly.ALIGN_RIGHT],["POR",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.hardware_button_pressed_or_released=function(){var e,t;return e=this.getFieldValue("PIN"),t=this.getFieldValue("POR"),Blockly.Ruby.characterMethodCallInput_("button("+Blockly.Ruby.quote_(e)+")."+t+"?")},Blockly.Blocks.hardware_sensor_value={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SENSOR_VALUE"),["PIN",["Dropdown",o],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_sensor_value=function(){var e;return e=this.getFieldValue("PIN"),Blockly.Ruby.characterMethodCallInput_("sensor("+Blockly.Ruby.quote_(e)+").value")},Blockly.Blocks.hardware_smalrubot_v3_led_turn_on_or_off={init:function(){var e,t;return e=[[Smalruby.bm("COLOUR_RED"),"red"],[Smalruby.bm("COLOUR_GREEN"),"green"]],t=[[Smalruby.bm("COMMON_TURN_ON"),"turn_on"],[Smalruby.bm("COMMON_TURN_OFF"),"turn_off"]],this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_LED_TURN_ON_OR_OFF"),["COLOUR",["Dropdown",e],Blockly.ALIGN_RIGHT],["OOO",["Dropdown",t],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_led_turn_on_or_off=function(){var e,t;return e=this.getFieldValue("COLOUR"),t=this.getFieldValue("OOO"),Blockly.Ruby.characterMethodCall_("smalrubot_v3."+e+"_led."+t)},Blockly.Blocks.hardware_smalrubot_v3_motor_speed={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SPEED"),["LOR",["Dropdown",i],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_motor_speed=function(){var e;return e=this.getFieldValue("LOR"),Blockly.Ruby.characterMethodCallInput_("smalrubot_v3."+e+"_motor.speed")},Blockly.Blocks.hardware_smalrubot_v3_motor_set_speed={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SET_SPEED"),["LOR",["Dropdown",i],Blockly.ALIGN_RIGHT],["SPEED",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_motor_set_speed=function(){var e,t;return e=this.getFieldValue("LOR"),t=Blockly.Ruby.valueToCode(this,"SPEED",Blockly.Ruby.ORDER_NONE)||"100",Blockly.Ruby.characterSetVariable_("smalrubot_v3."+e+"_motor.speed",t)},Blockly.Blocks.hardware_smalrubot_v3_action={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION"),["ACTION",["Dropdown",t],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_action=function(){var e;return e=this.getFieldValue("ACTION"),Blockly.Ruby.characterMethodCall_("smalrubot_v3."+e)},Blockly.Blocks.hardware_smalrubot_v3_action_with_sec={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION_WITH_SEC"),["ACTION",["Dropdown",t],Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_action_with_sec=function(){var e,t;return e=this.getFieldValue("ACTION"),t=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_FUNCTION_CALL)||"nil",Blockly.Ruby.characterMethodCall_("smalrubot_v3."+e+"(sec: "+t+")")},Blockly.Blocks.hardware_smalrubot_v3_touch_sensor_pressed_or_released={init:function(){var e;return e=window.SmalrubyEditor.Sensing.PressedOrReleasedDropdown,this.setHelpUrl(""),this.setColour(190),this.interpolateMsg(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_TOUCH_SENSOR_PRESSED_OR_RELEASED"),["LOR",["Dropdown",i],Blockly.ALIGN_RIGHT],["POR",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_touch_sensor_pressed_or_released=function(){var e,t;return e=this.getFieldValue("LOR"),t=this.getFieldValue("POR"),Blockly.Ruby.characterMethodCallInput_("smalrubot_v3."+e+"_touch_sensor."+t+"?")},Blockly.Blocks.hardware_smalrubot_v3_light_sensor_value={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_HARDWARE_SMALRUBOT_V3_LIGHT_SENSOR_VALUE")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.hardware_smalrubot_v3_light_sensor_value=function(){return Blockly.Ruby.characterMethodCallInput_("smalrubot_v3.light_sensor.value")}}.call(this),function(){Blockly.Blocks.looks_say_second={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_SAY_WITH_SECOND"),["TEXT",null,Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_say_second=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("say","message: "+t+", second: "+e)},Blockly.Blocks.looks_say={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_SAY"),["TEXT",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_say=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("say","message: "+e)},Blockly.Blocks.looks_think_second={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_THINK_WITH_SECOND"),["TEXT",null,Blockly.ALIGN_RIGHT],["SEC",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_think_second=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("think","message: "+t+", second: "+e)},Blockly.Blocks.looks_think={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg(Smalruby.bm("BLOCKS_LOOKS_THINK"),["TEXT",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_think=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||Blockly.Ruby.quote_(""),Blockly.Ruby.characterMethodCall_("think","message: "+e)},Blockly.Blocks.looks_show={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_SHOW")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_show=function(){return Blockly.Ruby.characterSetVariable_("visible","true")},Blockly.Blocks.looks_hide={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_HIDE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_hide=function(){return Blockly.Ruby.characterSetVariable_("visible","false")},Blockly.Blocks.looks_vanish={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_LOOKS_VANISH")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_vanish=function(){return Blockly.Ruby.characterMethodCall_("vanish")},Blockly.Blocks.looks_change_scale_by={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg("大きさを%1%ずつ変える",["SCALE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_change_scale_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SCALE",Blockly.Ruby.ORDER_NONE)||"0",e=parseInt(e)/100,"self.scale += "+e+"\n"},Blockly.Blocks.looks_set_scale={init:function(){return this.setHelpUrl(""),this.setColour(270),this.interpolateMsg("大きさを%1%にする",["SCALE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.looks_set_scale=function(){var e;return e=Blockly.Ruby.valueToCode(this,"SCALE",Blockly.Ruby.ORDER_NONE)||"0",e=parseInt(e)/100,"self.scale = "+e+"\n"},Blockly.Blocks.looks_self_scale={init:function(){return this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField("大きさ"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.looks_self_scale=function(){return["scale",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.looks_preset_images={init:function(){var e;return e=[["車1","car1.png"],["車2","car2.png"],["車3","car3.png"],["車4","car4.png"],["ボール1","ball1.png"],["ボール2","ball2.png"],["ボール3","ball3.png"],["ボール4","ball4.png"],["ボール5","ball5.png"],["ボール6","ball6.png"],["猫1","cat1.png"],["猫2","cat2.png"],["猫3","cat3.png"],["かえる1","frog1.png"],["コウガ リュウ1","ryu1.png"],["コウガ リュウ2","ryu2.png"],["イタチのタイチ","taichi1.png"],["イタチのタイチ","taichi2.png"]],this.setHelpUrl(""),this.setColour(270),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"NAME"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.looks_preset_images=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("NAME")),[e,Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.motion_move={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_MOVE"),["STEP",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_move=function(){var e;return e=Blockly.Ruby.valueToCode(this,"STEP",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("move",""+e)},Blockly.Blocks.motion_rotate_right={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_TURN_RIGHT_DEGREES"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_rotate_right=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("rotate",""+e)},Blockly.Blocks.motion_rotate_left={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_TURN_LEFT_DEGREES"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_rotate_left=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterMethodCall_("rotate","-"+e)},Blockly.Blocks.motion_set_angle={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_POINT_IN_DIRECTION"),["ANGLE",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_angle=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ANGLE",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("angle",e)},Blockly.Blocks.motion_point_towards_mouse={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_POINT_TOWARDS_MOUSE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_point_towards_mouse=function(){return""+Blockly.Ruby.rn()+"point_towards(:mouse)\n"},Blockly.Blocks.motion_point_towards_character={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_MOTION_POINT_TOWARDS_CHARACTER")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_point_towards_character=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCall_("point_towards",e)},Blockly.Blocks.motion_set_x_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_X")),this.appendValueInput("X").setCheck("Number"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_Y")),this.appendValueInput("Y").setCheck("Number"),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_X_Y_SUFFIX")),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_x_y=function(){var e,t;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("position","["+e+", "+t+"]")},Blockly.Blocks.motion_go_to_mouse={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_MOUSE")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_go_to_mouse=function(){return Blockly.Ruby.characterMethodCall_("go_to(:mouse)")},Blockly.Blocks.motion_go_to_character={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_go_to_character=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCall_("go_to("+e+")")},Blockly.Blocks.motion_glide_to_x_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg("%1秒でx座標を%2、y座標を%3に変える",["SEC",["Number"],Blockly.ALIGN_RIGHT],["X",["Number"],Blockly.ALIGN_RIGHT],["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_glide_to_x_y=function(){var e,t,o;return e=Blockly.Ruby.valueToCode(this,"SEC",Blockly.Ruby.ORDER_NONE)||"0",t=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",o=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",""+Blockly.Ruby.rn()+"glide_to(second: "+e+", x: "+t+", y: "+o+")\n"},Blockly.Blocks.motion_change_x_by={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_CHANGE_X_BY"),["X",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_change_x_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("x",e,"+=")},Blockly.Blocks.motion_set_x={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_SET_X"),["X",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_x=function(){var e;return e=Blockly.Ruby.valueToCode(this,"X",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("x",e,"=")},Blockly.Blocks.motion_change_y_by={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_CHANGE_Y_BY"),["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_change_y_by=function(){var e;return e=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("y",e,"+=")},Blockly.Blocks.motion_set_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.interpolateMsg(Smalruby.bm("BLOCKS_MOTION_SET_Y"),["Y",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_y=function(){var e;return e=Blockly.Ruby.valueToCode(this,"Y",Blockly.Ruby.ORDER_NONE)||"0",Blockly.Ruby.characterSetVariable_("y",e,"=")},Blockly.Blocks.motion_turn_if_reach_wall={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN_IF_REACH_WALL")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn_if_reach_wall=function(){return Blockly.Ruby.characterMethodCall_("turn_if_reach_wall")},Blockly.Blocks.motion_turn={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn=function(){return Blockly.Ruby.characterMethodCall_("turn")},Blockly.Blocks.motion_turn_xy={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_MOTION_TURN_XY_X"),"x"],[Smalruby.bm("BLOCKS_MOTION_TURN_XY_Y"),"y"]],this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_TURN_XY_PREFIX")).appendField(new Blockly.FieldDropdown(e),"XY").appendField(Smalruby.bm("BLOCKS_MOTION_TURN_XY_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_turn_xy=function(){var e;return e=this.getFieldValue("XY"),Blockly.Ruby.characterMethodCall_("turn_"+e)},Blockly.Blocks.motion_set_rotation_style={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT"),"left_right"],[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_NONE"),"none"],[Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_FREE"),"free"]],this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX")).appendField(new Blockly.FieldDropdown(e),"STYLE").appendField(Smalruby.bm("BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.motion_set_rotation_style=function(){var e;return e=this.getFieldValue("STYLE"),Blockly.Ruby.characterSetVariable_("rotation_style",":"+e)},Blockly.Blocks.motion_self_x={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_X")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_x=function(){return Blockly.Ruby.characterMethodCallInput_("x")},Blockly.Blocks.motion_self_y={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_Y")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_y=function(){return Blockly.Ruby.characterMethodCallInput_("y")
35
+ },Blockly.Blocks.motion_self_angle={init:function(){return this.setHelpUrl(""),this.setColour(208),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_MOTION_SELF_ANGLE")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.motion_self_angle=function(){return Blockly.Ruby.characterMethodCallInput_("angle")}}.call(this),function(){Blockly.Blocks.operators_add={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_ADD"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_add=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_ADDITIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" + "+o,n]},Blockly.Blocks.operators_minus={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MINUS"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_minus=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_ADDITIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" - "+o,n]},Blockly.Blocks.operators_multiply={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MULTIPLY"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_multiply=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" * "+o,n]},Blockly.Blocks.operators_divide={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_DIVIDE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_divide=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"1",[t+" / "+o,n]},Blockly.Blocks.operators_compare_lt={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_LT"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_lt=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" < "+o,n]},Blockly.Blocks.operators_compare_lte={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_LTE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_lte=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" <= "+o,n]},Blockly.Blocks.operators_compare_eq={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_EQ"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_eq=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_EQUALS,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" == "+o,n]},Blockly.Blocks.operators_compare_gte={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_GTE"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_gte=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" >= "+o,n]},Blockly.Blocks.operators_compare_gt={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_COMPARE_GT"),["A",null,Blockly.ALIGN_RIGHT],["B",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_compare_gt=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_RELATIONAL,t=Blockly.Ruby.valueToCode(e,"A",n)||"0",o=Blockly.Ruby.valueToCode(e,"B",n)||"0",[t+" > "+o,n]},Blockly.Blocks.operators_rand={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_RAND"),["A",["Number"],Blockly.ALIGN_RIGHT],["B",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_rand=function(e){var t,o;return t=Blockly.Ruby.valueToCode(e,"A",Blockly.Ruby.ORDER_RANGE)||"0",o=Blockly.Ruby.valueToCode(e,"B",Blockly.Ruby.ORDER_RANGE)||"0",["rand("+t+".."+o+")",Blockly.Ruby.ORDER_FUNCTION_CALL]},Blockly.Blocks.operators_and={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_AND"),["A",["Boolean"],Blockly.ALIGN_RIGHT],["B",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_and=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_LOGICAL_AND,t=Blockly.Ruby.valueToCode(e,"A",n)||"true",o=Blockly.Ruby.valueToCode(e,"B",n)||"true",[""+t+" && "+o,n]},Blockly.Blocks.operators_or={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_OR"),["A",["Boolean"],Blockly.ALIGN_RIGHT],["B",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_or=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_LOGICAL_OR,t=Blockly.Ruby.valueToCode(e,"A",n)||"true",o=Blockly.Ruby.valueToCode(e,"B",n)||"true",[""+t+" || "+o,n]},Blockly.Blocks.operators_negate={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_NOT"),["A",["Boolean"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_negate=function(e){var t,o;return o=Blockly.Ruby.ORDER_UNARY_SIGN,t=Blockly.Ruby.valueToCode(e,"A",o)||"true",["!"+t,o]},Blockly.Blocks.operators_index_of={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_INDEX_OF"),["A",null,Blockly.ALIGN_RIGHT],["INDEX",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_index_of=function(e){var t,o;return t=Blockly.Ruby.valueToCode(e,"A",Blockly.Ruby.ORDER_FUNCTION_CALL)||'""',o=Blockly.Ruby.valueToCode(e,"INDEX",Blockly.Ruby.ORDER_INDEX)||"0",[""+t+"["+o+"]",Blockly.Ruby.ORDER_FUNCTION_CALL]},Blockly.Blocks.operators_length={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_LENGTH"),["A",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.operators_length=function(e){var t,o;return o=Blockly.Ruby.ORDER_FUNCTION_CALL,t=Blockly.Ruby.valueToCode(e,"A",o)||'""',[""+t+".length",o]},Blockly.Blocks.operators_modulo={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MODULO"),["A",["Number"],Blockly.ALIGN_RIGHT],["B",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_modulo=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_MULTIPLICATIVE,t=Blockly.Ruby.valueToCode(e,"A",n)||"1",o=Blockly.Ruby.valueToCode(e,"B",n)||"1",[""+t+" % "+o,n]},Blockly.Blocks.operators_round={init:function(){return this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_ROUND"),["A",["Number"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_round=function(e){var t,o;return o=Blockly.Ruby.ORDER_FUNCTION_CALL,t=Blockly.Ruby.valueToCode(e,"A",o)||"0",[""+t+".round",o]},Blockly.Blocks.operators_math_method={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ABS"),"%num%.abs"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_FLOOR"),"%num%.floor"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_CEIL"),"%num%.ceil"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_SQRT"),"Math.sqrt(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_SIN"),"Math.sin(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_COS"),"Math.cos(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_TAN"),"Math.tan(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ASIN"),"Math.asin(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ACOS"),"Math.acos(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_ATAN"),"Math.atan(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_LN"),"Math.log(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_LOG"),"Math.log10(%num%)"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE"),"Math::E ** %num%"],[Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE"),"10 ** %num%"]],this.setHelpUrl(""),this.setColour(100),this.interpolateMsg(Smalruby.bm("BLOCKS_OPERATORS_MATH_METHOD"),["NUM",["Number"],Blockly.ALIGN_RIGHT],["METHOD",["Dropdown",e],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.operators_math_method=function(e){var t,o,n;return n=Blockly.Ruby.ORDER_FUNCTION_CALL,t=this.getFieldValue("METHOD"),o=Blockly.Ruby.valueToCode(e,"NUM",n)||"0",[t.replace(/%num%/,o),n]},Blockly.Blocks.operators_true={init:function(){return this.setHelpUrl(""),this.setColour(100),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_OPERATORS_TRUE")),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_true=function(){return["true",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.operators_false={init:function(){return this.setHelpUrl(""),this.setColour(100),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_OPERATORS_FALSE")),this.setInputsInline(!0),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.operators_false=function(){return["false",Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.pen_down_pen={init:function(){return this.setHelpUrl(""),this.setColour(160),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_PEN_DOWN_PEN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_down_pen=function(){return Blockly.Ruby.characterMethodCall_("down_pen")},Blockly.Blocks.pen_up_pen={init:function(){return this.setHelpUrl(""),this.setColour(160),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_PEN_UP_PEN")),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_up_pen=function(){return Blockly.Ruby.characterMethodCall_("up_pen")},Blockly.Blocks.pen_set_pen_color={init:function(){return this.setHelpUrl(""),this.setColour(160),this.interpolateMsg(Smalruby.bm("BLOCKS_PEN_SET_PEN_COLOR"),["COLOUR",["Colour","#ff0000"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.pen_set_pen_color=function(){var e,t,o,n;return t=this.getFieldValue("COLOUR"),n=parseInt(t.slice(1,3),16),o=parseInt(t.slice(3,5),16),e=parseInt(t.slice(5,7),16),Blockly.Ruby.characterSetVariable_("pen_color","["+n+", "+o+", "+e+"]")}}.call(this),function(){Blockly.Blocks.ruby_statement={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_STATEMENT")).appendField(new Blockly.FieldTextInput(""),"STATEMENT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_statement=function(){var e;return e=this.getFieldValue("STATEMENT"),""+e+"\n"},Blockly.Blocks.ruby_expression={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_EXPRESSION")).appendField(new Blockly.FieldTextInput(""),"EXP"),this.setOutput(!0,null),this.setTooltip("")}},Blockly.Ruby.ruby_expression=function(){var e;return e=this.getFieldValue("EXP"),["("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.ruby_comment={init:function(){return this.setHelpUrl(""),this.setColour(340),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_RUBY_COMMENT")).appendField(new Blockly.FieldTextInput(""),"COMMENT"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_comment=function(){var e;return e=this.getFieldValue("COMMENT"),"# "+e+"\n"},Blockly.Blocks.ruby_p={init:function(){return this.setHelpUrl(""),this.setColour(340),this.interpolateMsg("p %1",["ARG",null,Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.ruby_p=function(){var e;return e=Blockly.Ruby.valueToCode(this,"ARG",Blockly.Ruby.ORDER_NONE)||'""',"p("+e+")\n"}}.call(this),function(){$(document).ready(function(){return window.SmalrubyEditor.Sensing={KeyDropdown:[[Smalruby.bm("BLOCKS_SENSING_K_UP"),"K_UP"],[Smalruby.bm("BLOCKS_SENSING_K_DOWN"),"K_DOWN"],[Smalruby.bm("BLOCKS_SENSING_K_LEFT"),"K_LEFT"],[Smalruby.bm("BLOCKS_SENSING_K_RIGHT"),"K_RIGHT"],[Smalruby.bm("BLOCKS_SENSING_K_SPACE"),"K_SPACE"],["a","K_A"],["b","K_B"],["c","K_C"],["d","K_D"],["e","K_E"],["f","K_F"],["g","K_G"],["h","K_H"],["i","K_I"],["j","K_J"],["k","K_K"],["l","K_L"],["m","K_M"],["n","K_N"],["o","K_O"],["p","K_P"],["q","K_Q"],["r","K_R"],["s","K_S"],["t","K_T"],["u","K_U"],["v","K_V"],["w","K_W"],["x","K_X"],["y","K_Y"],["z","K_Z"],["0","K_0"],["1","K_1"],["2","K_2"],["3","K_3"],["4","K_4"],["5","K_5"],["6","K_6"],["7","K_7"],["8","K_8"],["9","K_9"]],PushOrDownDropdown:[[Smalruby.bm("BLOCKS_SENSING_PUSH"),"push"],[Smalruby.bm("BLOCKS_SENSING_HOLD_DOWN"),"down"]],MouseButtonDropdown:[[Smalruby.bm("BLOCKS_SENSING_M_LBUTTON"),"M_LBUTTON"],[Smalruby.bm("BLOCKS_SENSING_M_MBUTTON"),"M_MBUTTON"],[Smalruby.bm("BLOCKS_SENSING_M_RBUTTON"),"M_RBUTTON"]],DownOrUpDropdown:[[Smalruby.bm("BLOCKS_SENSING_DOWN"),"down"],[Smalruby.bm("BLOCKS_SENSING_UP"),"up"]],PressedOrReleasedDropdown:[[Smalruby.bm("BLOCKS_SENSING_PRESSED"),"pressed"],[Smalruby.bm("BLOCKS_SENSING_RELEASED"),"released"]]}}),Blockly.Blocks.sensing_reach_wall={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_REACH_WALL")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_reach_wall=function(){return Blockly.Ruby.characterMethodCallInput_("reach_wall?")},Blockly.Blocks.motion_reach_wall=Blockly.Blocks.sensing_reach_wall,Blockly.Ruby.motion_reach_wall=Blockly.Ruby.sensing_reach_wall,Blockly.Blocks.sensing_input_key_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.KeyDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"KEY").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_input_key_push_or_down=function(){var e,t;return e=this.getFieldValue("KEY"),t=this.getFieldValue("POD"),["Input.key_"+t+"?("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_push_or_down={init:function(){var e,t;return e=window.SmalrubyEditor.Sensing.MouseButtonDropdown,t=window.SmalrubyEditor.Sensing.PushOrDownDropdown,this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX")).appendField(new Blockly.FieldDropdown(e),"MOUSE_BUTTON").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE")).appendField(new Blockly.FieldDropdown(t),"POD").appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_push_or_down=function(){var e,t;return e=this.getFieldValue("MOUSE_BUTTON"),t=this.getFieldValue("POD"),["Input.mouse_"+t+"?("+e+")",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_pos_x={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_POS_X")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_pos_x=function(){return["Input.mouse_pos_x",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_input_mouse_pos_y={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_INPUT_MOUSE_POS_Y")),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_input_mouse_pos_y=function(){return["Input.mouse_pos_y",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_hit={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_HIT_PREFIX")).appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_SENSING_HIT_SUFFIX")),this.setOutput(!0,"Boolean"),this.setTooltip("")}},Blockly.Ruby.sensing_hit=function(){var e;return e=this.getCharacterFieldValue(),Blockly.Ruby.characterMethodCallInput_("hit?",e)},Blockly.Blocks.sensing_ask={init:function(){return this.setHelpUrl(""),this.setColour(190),this.interpolateMsg("%1と聞いて待つ",["TEXT",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sensing_ask=function(){var e;return e=Blockly.Ruby.valueToCode(this,"TEXT",Blockly.Ruby.ORDER_NONE)||'""',"ask("+e+")\n"},Blockly.Blocks.sensing_answer={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("答え"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.sensing_answer=function(){return["answer",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_timer_count={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("タイマー"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_timer_count=function(){return["timer.count",Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_timer_reset={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("タイマーをリセット"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sensing_timer_reset=function(){return"timer.reset\n"},Blockly.Blocks.sensing_character_property={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_X"),"x"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_Y"),"y"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE"),"angle"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX"),"costume_index"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME"),"costume"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE"),"scale"],[Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME"),"volume"]],this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(new Smalruby.FieldCharacter,"CHAR").appendField(Smalruby.bm("BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE")).appendField(new Blockly.FieldDropdown(e),"PROPERTY"),this.setOutput(!0,["Number","String"]),this.setTooltip("")}},Blockly.Ruby.sensing_character_property=function(){var e,t,o;return t=this.getCharacterFieldValue(),o=this.getFieldValue("PROPERTY"),e=Smalruby.Collections.CharacterSet.findWhere({name:t}),Blockly.Ruby.characterMethodCallInput_(o,null,{object:e})},Blockly.Blocks.sensing_time_now={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_YEAR"),"year"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_MONTH"),"month"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_DAY"),"day"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_WDAY"),"wday"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_HOUR"),"hour"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_MIN"),"min"],[Smalruby.bm("BLOCKS_SENSING_TIME_NOW_SEC"),"sec"]],this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField(Smalruby.bm("BLOCKS_SENSING_TIME_NOW")).appendField(new Blockly.FieldDropdown(e),"METHOD"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_time_now=function(){var e;return e=this.getFieldValue("METHOD"),["Time.now."+e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sensing_days_since_2000={init:function(){return this.setHelpUrl(""),this.setColour(190),this.appendDummyInput().appendField("2000年からの日数"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sensing_days_since_2000=function(){return["(Time.now - Time.mktime(2000, 1, 1)).to_i / 1.day",Blockly.Ruby.ORDER_ATOMIC]}}.call(this),function(){Blockly.Blocks.sound_preset_sounds={init:function(){var e;return e=[[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO"),"piano_do.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE"),"piano_re.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI"),"piano_mi.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA"),"piano_fa.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO"),"piano_so.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA"),"piano_ra.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI"),"piano_si.wav"],[Smalruby.bm("BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2"),"piano_do_2.wav"]],this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField(new Blockly.FieldDropdown(e),"NAME"),this.setOutput(!0,"String"),this.setTooltip("")}},Blockly.Ruby.sound_preset_sounds=function(){var e;return e=Blockly.Ruby.quote_(this.getFieldValue("NAME")),[e,Blockly.Ruby.ORDER_ATOMIC]},Blockly.Blocks.sound_play={init:function(){return this.setHelpUrl(""),this.setColour(300),this.interpolateMsg(Smalruby.bm("BLOCKS_SOUND_PLAY"),["NAME",["String"],Blockly.ALIGN_RIGHT],Blockly.ALIGN_RIGHT),this.setInputsInline(!0),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sound_play=function(){var e;return e=Blockly.Ruby.valueToCode(this,"NAME",Blockly.Ruby.ORDER_NONE)||"",Blockly.Ruby.characterMethodCall_("play","name: "+e)},Blockly.Blocks.sound_stop={init:function(){return this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField("すべての音を止める"),this.setPreviousStatement(!0),this.setNextStatement(!0),this.setTooltip("")}},Blockly.Ruby.sound_stop=function(){return"stop\n"},Blockly.Blocks.sound_volume={init:function(){return this.setHelpUrl(""),this.setColour(300),this.appendDummyInput().appendField("ボリューム"),this.setOutput(!0,"Number"),this.setTooltip("")}},Blockly.Ruby.sound_volume=function(){return["volume",Blockly.Ruby.ORDER_ATOMIC]}}.call(this);
@@ -1 +1 @@
1
- {"files":{"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico":{"logical_path":"favicon.ico","mtime":"2014-12-02T18:24:29+09:00","size":5430,"digest":"d958ba1d3efbea2e9a10fda1b5970b6c"},"application-fda71a642d958ffbaf90185c471d6e51.js":{"logical_path":"application.js","mtime":"2015-01-11T23:15:57+09:00","size":1167563,"digest":"fda71a642d958ffbaf90185c471d6e51"},"msg/en_us-893d970ff8061fbe7459f009582c4df5.js":{"logical_path":"msg/en_us.js","mtime":"2015-01-10T03:02:51+09:00","size":11508,"digest":"893d970ff8061fbe7459f009582c4df5"},"msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js":{"logical_path":"msg/ja.js","mtime":"2015-01-11T14:27:38+09:00","size":12600,"digest":"4d22bd0341f464f9d1b9f373121bce6d"},"application-d5358d75a2c4e570c749b333c59b55ab.css":{"logical_path":"application.css","mtime":"2015-01-16T08:57:59+09:00","size":95948,"digest":"d5358d75a2c4e570c749b333c59b55ab"},"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js":{"logical_path":"blockly/msg/js/en_us.js","mtime":"2014-12-09T15:06:34+09:00","size":25835,"digest":"6f7333af29688596ef863fa36a22cb41"},"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js":{"logical_path":"blockly/msg/js/ja.js","mtime":"2014-12-02T18:28:32+09:00","size":30238,"digest":"d2cbf808bda8180571bc5f39141a98fe"},"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2015-01-11T23:15:23+09:00","size":1738,"digest":"9b629ab5247187e831ea51106acdf03a"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":180,"digest":"e055bc219bd3aed111713c2ef884d6f4"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":178,"digest":"1ed964fd6a424fc2d8653d5a64705840"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":120,"digest":"c47b4313972b0311e02e671fd15a66c9"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":105,"digest":"4b5173f329e3e9fbfcfcc88a84920e81"},"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":111,"digest":"b0155cdc12d3bcdfa7f4890938366181"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":110,"digest":"21014afa81b0fea76840432b22d9d0e5"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":119,"digest":"6526cba95388d3f36f03cc6296f192b5"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-01-11T23:15:23+09:00","size":101,"digest":"f0e42cc2ef6523f77aa730753cff0462"},"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"d5b2a50ddba8e90f9487cc29efbc9080"},"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"735b447c0a9f42ce6836a1e74aad6f23"},"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ed3057724414ea20ff7bae1cdb644aca"},"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ce584ffa171c3ea9a018cf0d7bec65c8"},"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"747e96029e8dedcabc224e5f7d1f2ede"},"loading-e77296be32d066d3e29d3bf9803fa417.gif":{"logical_path":"loading.gif","mtime":"2015-01-11T23:11:45+09:00","size":3897,"digest":"e77296be32d066d3e29d3bf9803fa417"},"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif":{"logical_path":"progressbar.gif","mtime":"2015-01-11T23:11:45+09:00","size":3323,"digest":"ee8fb1222f286f625bbf7332844a6a0c"}},"assets":{"favicon.ico":"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico","application.js":"application-fda71a642d958ffbaf90185c471d6e51.js","msg/en_us.js":"msg/en_us-893d970ff8061fbe7459f009582c4df5.js","msg/ja.js":"msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js","application.css":"application-d5358d75a2c4e570c749b333c59b55ab.css","blockly/msg/js/en_us.js":"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js","blockly/msg/js/ja.js":"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png","loading.gif":"loading-e77296be32d066d3e29d3bf9803fa417.gif","progressbar.gif":"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif"}}
1
+ {"files":{"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico":{"logical_path":"favicon.ico","mtime":"2014-12-02T18:24:29+09:00","size":5430,"digest":"d958ba1d3efbea2e9a10fda1b5970b6c"},"application-b305a6ea9e7c045a8e170bbf6fb09dd1.js":{"logical_path":"application.js","mtime":"2015-01-25T00:44:28+09:00","size":1170132,"digest":"b305a6ea9e7c045a8e170bbf6fb09dd1"},"msg/en_us-c6f8f0084f38560bf933b742ede64a52.js":{"logical_path":"msg/en_us.js","mtime":"2015-01-24T19:58:40+09:00","size":12480,"digest":"c6f8f0084f38560bf933b742ede64a52"},"msg/ja-3703e6ceebd04ae1f08b0e871800539d.js":{"logical_path":"msg/ja.js","mtime":"2015-01-24T20:04:02+09:00","size":13664,"digest":"3703e6ceebd04ae1f08b0e871800539d"},"application-d5358d75a2c4e570c749b333c59b55ab.css":{"logical_path":"application.css","mtime":"2015-01-16T08:57:59+09:00","size":95948,"digest":"d5358d75a2c4e570c749b333c59b55ab"},"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js":{"logical_path":"blockly/msg/js/en_us.js","mtime":"2014-12-09T15:06:34+09:00","size":25835,"digest":"6f7333af29688596ef863fa36a22cb41"},"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js":{"logical_path":"blockly/msg/js/ja.js","mtime":"2014-12-02T18:28:32+09:00","size":30238,"digest":"d2cbf808bda8180571bc5f39141a98fe"},"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2015-01-11T23:15:23+09:00","size":1738,"digest":"9b629ab5247187e831ea51106acdf03a"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":180,"digest":"e055bc219bd3aed111713c2ef884d6f4"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2015-01-11T23:15:23+09:00","size":178,"digest":"1ed964fd6a424fc2d8653d5a64705840"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":120,"digest":"c47b4313972b0311e02e671fd15a66c9"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":105,"digest":"4b5173f329e3e9fbfcfcc88a84920e81"},"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":111,"digest":"b0155cdc12d3bcdfa7f4890938366181"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":110,"digest":"21014afa81b0fea76840432b22d9d0e5"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2015-01-11T23:15:23+09:00","size":119,"digest":"6526cba95388d3f36f03cc6296f192b5"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2015-01-11T23:15:23+09:00","size":101,"digest":"f0e42cc2ef6523f77aa730753cff0462"},"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"d5b2a50ddba8e90f9487cc29efbc9080"},"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"735b447c0a9f42ce6836a1e74aad6f23"},"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ed3057724414ea20ff7bae1cdb644aca"},"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"ce584ffa171c3ea9a018cf0d7bec65c8"},"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2015-01-11T23:15:23+09:00","size":4369,"digest":"747e96029e8dedcabc224e5f7d1f2ede"},"loading-e77296be32d066d3e29d3bf9803fa417.gif":{"logical_path":"loading.gif","mtime":"2015-01-11T23:11:45+09:00","size":3897,"digest":"e77296be32d066d3e29d3bf9803fa417"},"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif":{"logical_path":"progressbar.gif","mtime":"2015-01-11T23:11:45+09:00","size":3323,"digest":"ee8fb1222f286f625bbf7332844a6a0c"}},"assets":{"favicon.ico":"favicon-d958ba1d3efbea2e9a10fda1b5970b6c.ico","application.js":"application-b305a6ea9e7c045a8e170bbf6fb09dd1.js","msg/en_us.js":"msg/en_us-c6f8f0084f38560bf933b742ede64a52.js","msg/ja.js":"msg/ja-3703e6ceebd04ae1f08b0e871800539d.js","application.css":"application-d5358d75a2c4e570c749b333c59b55ab.css","blockly/msg/js/en_us.js":"blockly/msg/js/en_us-6f7333af29688596ef863fa36a22cb41.js","blockly/msg/js/ja.js":"blockly/msg/js/ja-d2cbf808bda8180571bc5f39141a98fe.js","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-9b629ab5247187e831ea51106acdf03a.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-e055bc219bd3aed111713c2ef884d6f4.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-1ed964fd6a424fc2d8653d5a64705840.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-c47b4313972b0311e02e671fd15a66c9.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-4b5173f329e3e9fbfcfcc88a84920e81.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-b0155cdc12d3bcdfa7f4890938366181.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-21014afa81b0fea76840432b22d9d0e5.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-6526cba95388d3f36f03cc6296f192b5.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-f0e42cc2ef6523f77aa730753cff0462.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-d5b2a50ddba8e90f9487cc29efbc9080.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-735b447c0a9f42ce6836a1e74aad6f23.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-ed3057724414ea20ff7bae1cdb644aca.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-ce584ffa171c3ea9a018cf0d7bec65c8.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-747e96029e8dedcabc224e5f7d1f2ede.png","loading.gif":"loading-e77296be32d066d3e29d3bf9803fa417.gif","progressbar.gif":"progressbar-ee8fb1222f286f625bbf7332844a6a0c.gif"}}
@@ -0,0 +1 @@
1
+ goog.provide("Blockly.Msg.en_us.smalruby"),goog.require("Blockly.Msg"),Blockly.Msg.COMMON_TURN_ON="turn on",Blockly.Msg.COMMON_TURN_OFF="turn off",Blockly.Msg.COMMON_FORWARD="forward",Blockly.Msg.COMMON_BACKWARD="backward",Blockly.Msg.COMMON_TURN_LEFT="turn left",Blockly.Msg.COMMON_TURN_RIGHT="turn right",Blockly.Msg.COMMON_STOP="stop",Blockly.Msg.COLOUR_RED="red",Blockly.Msg.COLOUR_GREEN="green",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES=" Lines",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS=" Letters",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_COMMA=", ",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE="Converting Program",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE="Converting your program to instruction blocks.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR="Can't convert your program to instruction blocks.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE="Running",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE="Please switch your program's window.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE="Running your program after save & check it.<br>Press ESC key to quit.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN="Can't run your program.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN="Cancel to run your program.",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE="Downloading",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE="Downloading your program.",Blockly.Msg.BLOCKS_MOTION_MOVE="move %1 steps",Blockly.Msg.BLOCKS_MOTION_TURN_RIGHT_DEGREES="turn right %1 degrees",Blockly.Msg.BLOCKS_MOTION_TURN_LEFT_DEGREES="turn left %1 degrees",Blockly.Msg.BLOCKS_MOTION_POINT_IN_DIRECTION="point in direction %1",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_MOUSE="point towards mouse-pointer",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_CHARACTER="point towards",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_X="go to x:",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_Y="y:",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_SUFFIX="",Blockly.Msg.BLOCKS_MOTION_GO_TO_MOUSE="go to mouse-pointer",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX="go to ",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX="",Blockly.Msg.BLOCKS_MOTION_CHANGE_X_BY="change x by %1",Blockly.Msg.BLOCKS_MOTION_SET_X="set x to %1",Blockly.Msg.BLOCKS_MOTION_CHANGE_Y_BY="change y by %1",Blockly.Msg.BLOCKS_MOTION_SET_Y="set y to %1",Blockly.Msg.BLOCKS_MOTION_TURN_IF_REACH_WALL="if reach wall, turn",Blockly.Msg.BLOCKS_MOTION_TURN="turn",Blockly.Msg.BLOCKS_MOTION_TURN_XY_X="(x) horizontal",Blockly.Msg.BLOCKS_MOTION_TURN_XY_Y="(y) vertical",Blockly.Msg.BLOCKS_MOTION_TURN_XY_PREFIX="turn to ",Blockly.Msg.BLOCKS_MOTION_TURN_XY_SUFFIX="",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT="left-right",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_NONE="don't rorate",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_FREE="all around",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX="set rotation style ",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX="",Blockly.Msg.BLOCKS_MOTION_SELF_X="x position",Blockly.Msg.BLOCKS_MOTION_SELF_Y="y position",Blockly.Msg.BLOCKS_MOTION_SELF_ANGLE="direction",Blockly.Msg.BLOCKS_EVENTS_ON_START="when Run clicked",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX="when ",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE=" key ",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_EVENTS_ON_CLICK="when this sprite clicked",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_PREFIX="when ",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_SUFFIX=" hit",Blockly.Msg.BLOCKS_SENSING_K_UP="up arrow",Blockly.Msg.BLOCKS_SENSING_K_DOWN="down arrow",Blockly.Msg.BLOCKS_SENSING_K_LEFT="left arrow",Blockly.Msg.BLOCKS_SENSING_K_RIGHT="right arrow",Blockly.Msg.BLOCKS_SENSING_K_SPACE="space",Blockly.Msg.BLOCKS_SENSING_PRESSED="pressed",Blockly.Msg.BLOCKS_SENSING_PUSH=Blockly.Msg.BLOCKS_SENSING_PRESSED,Blockly.Msg.BLOCKS_SENSING_DOWN=Blockly.Msg.BLOCKS_SENSING_PRESSED,Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED="hold pressed",Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN=Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED,Blockly.Msg.BLOCKS_SENSING_M_LBUTTON="left-button",Blockly.Msg.BLOCKS_SENSING_M_MBUTTON="middle-button",Blockly.Msg.BLOCKS_SENSING_M_RBUTTON="right-button",Blockly.Msg.BLOCKS_SENSING_RELEASED="released",Blockly.Msg.BLOCKS_SENSING_UP=Blockly.Msg.BLOCKS_SENSING_RELEASED,Blockly.Msg.BLOCKS_SENSING_REACH_WALL="reach wall?",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX="key ",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE=" ",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX="mouse ",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE=" ",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_X="mouse x",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_Y="mouse y",Blockly.Msg.BLOCKS_SENSING_HIT_PREFIX="reach ",Blockly.Msg.BLOCKS_SENSING_HIT_SUFFIX="?",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_X="x position",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_Y="y position",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE="direction",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX="costume #",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME="contume name",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE="size",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME="volume",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE=" of ",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_YEAR="year",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MONTH="month",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_DAY="day",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_WDAY="day of week",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_HOUR="hour",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MIN="min",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_SEC="sec",Blockly.Msg.BLOCKS_SENSING_TIME_NOW="current ",Blockly.Msg.BLOCKS_CONTROL_SLEEP="wait %1 secs",Blockly.Msg.BLOCKS_CONTROL_LOOP="loop",Blockly.Msg.BLOCKS_CONTROL_LOOP_END="end of loop",Blockly.Msg.BLOCKS_CONTROL_BREAK="stop this loop",Blockly.Msg.BLOCKS_CONTROL_NEXT="next iteration of this loop",Blockly.Msg.BLOCKS_CONTROL_REDO="redo iteration of this loop",Blockly.Msg.BLOCKS_CONTROL_IF="if ",Blockly.Msg.BLOCKS_CONTROL_THEN=" then",Blockly.Msg.BLOCKS_CONTROL_ELSE="else",Blockly.Msg.BLOCKS_CONTROL_TIMES="repeat %1",Blockly.Msg.BLOCKS_CONTROL_AWAIT_UNTIL="wait until %1",Blockly.Msg.BLOCKS_CONTROL_UNTIL="repeat until %1",Blockly.Msg.BLOCKS_CONTROL_AWAIT="just wait a little",Blockly.Msg.BLOCKS_RUBY_STATEMENT="statement ",Blockly.Msg.BLOCKS_RUBY_EXPRESSION="expression ",Blockly.Msg.BLOCKS_RUBY_COMMENT="comment ",Blockly.Msg.BLOCKS_FIELD_CHARACTER_NO_CHARACTER="no character",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO="Middle C of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE="D of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI="E of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA="F of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO="G of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA="A of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI="B of piano",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2="High C of piano",Blockly.Msg.BLOCKS_SOUND_PLAY="play sound %1",Blockly.Msg.BLOCKS_LOOKS_SAY="say %1",Blockly.Msg.BLOCKS_LOOKS_THINK="think %1",Blockly.Msg.BLOCKS_LOOKS_SAY_WITH_SECOND="say %1 for %2 secs",Blockly.Msg.BLOCKS_LOOKS_THINK_WITH_SECOND="think %1 for %2 secs",Blockly.Msg.BLOCKS_LOOKS_SHOW="show",Blockly.Msg.BLOCKS_LOOKS_HIDE="hide",Blockly.Msg.BLOCKS_LOOKS_VANISH="vanish",Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_ON="turn on LED %1",Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_OFF="turn off LED %1",Blockly.Msg.BLOCKS_HARDWARE_ANODE="anode",Blockly.Msg.BLOCKS_HARDWARE_CATHODE="cathode",Blockly.Msg.BLOCKS_HARDWARE_LEFT="left",Blockly.Msg.BLOCKS_HARDWARE_RIGHT="right",Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE="setup hardware",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_SET_COLOR="set RGB LED %1 common %2 color to %3",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_TURN_OFF="turn off RGB LED %1 common %2",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW="show 7 segment display %1",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF="turn off 7 segment display",Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS="display %1 on the LCD",Blockly.Msg.BLOCKS_HARDWARE_LCD_CLEAR="clear LCD",Blockly.Msg.BLOCKS_HARDWARE_SERVO_SET_POSITION="servo motor %1 set %2 degree (5-180)",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD="forward 2WD car %1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD="backward 2WD car %1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT="turn left 2WD car %1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT="turn right 2WD car %1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP="stop 2WD car %1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN="%1 2WD car %2 %3 secs",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_FORWARD="forward",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_BACKWARD="backward",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_LEFT="turn left",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_RIGHT="turn right",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_STOP="stop",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED="set 2WD car %1 's %2 motor speed to %3 %",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED="2WD car %1 's %2 motor speed (%)",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD="forward",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD="backward",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP="stop",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER="%2 (motor driver %1's) motor",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED="set (motor driver %1's) motor speed to %2 %",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED="(motor driver %1's) motor speed (%)",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_PRESSED_OR_RELEASED="button %1 %2 ?",Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE="sensor %1 value",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LED_TURN_ON_OR_OFF="%2 Smalrubot v3 %1 LED",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SPEED="Smalrubot v3 %1 motor speed",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SET_SPEED="set Smalrubot v3 %1 motor speed to %2 %",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION="%1 Smalrubot v3",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION_WITH_SEC="%1 Smalrubot v3 for %2 secs",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_TOUCH_SENSOR_PRESSED_OR_RELEASED="Smalrubot v3 %1 touch sensor %2 ?",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LIGHT_SENSOR_VALUE="Smalrubot v3 light sensor value",Blockly.Msg.BLOCKS_OPERATORS_ADD="%1 + %2",Blockly.Msg.BLOCKS_OPERATORS_MINUS="%1 - %2",Blockly.Msg.BLOCKS_OPERATORS_MULTIPLY="%1 * %2",Blockly.Msg.BLOCKS_OPERATORS_DIVIDE="%1 / %2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LT="%1 < %2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LTE="%1 <= %2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_EQ="%1 = %2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GTE="%1 >= %2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GT="%1 > %2",Blockly.Msg.BLOCKS_OPERATORS_RAND="pick random %1 to %2",Blockly.Msg.BLOCKS_OPERATORS_AND="%1 and %2",Blockly.Msg.BLOCKS_OPERATORS_OR="%1 or %2",Blockly.Msg.BLOCKS_OPERATORS_NOT="not %1",Blockly.Msg.BLOCKS_OPERATORS_INDEX_OF="letter %1 of %2",Blockly.Msg.BLOCKS_OPERATORS_LENGTH="length of %1",Blockly.Msg.BLOCKS_OPERATORS_MODULO="%1 mod %2",Blockly.Msg.BLOCKS_OPERATORS_ROUND="round %1",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD="%1 of %2",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ABS="abs",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_FLOOR="floor",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_CEIL="ceiling",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SQRT="sqrt",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SIN="sin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_COS="cos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_TAN="tan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ASIN="asin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ACOS="acos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ATAN="atan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LN="ln",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LOG="log",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE="e ^",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE="10 ^",Blockly.Msg.BLOCKS_OPERATORS_TRUE="true",Blockly.Msg.BLOCKS_OPERATORS_FALSE="false",Blockly.Msg.BLOCKS_PEN_DOWN_PEN="pen down",Blockly.Msg.BLOCKS_PEN_UP_PEN="pen up",Blockly.Msg.BLOCKS_PEN_SET_PEN_COLOR="set pen color to %1";
@@ -0,0 +1 @@
1
+ goog.provide("Blockly.Msg.ja.smalruby"),goog.require("Blockly.Msg"),Blockly.Msg.COMMON_TURN_ON="オンにする",Blockly.Msg.COMMON_TURN_OFF="オフにする",Blockly.Msg.COMMON_FORWARD="進める",Blockly.Msg.COMMON_BACKWARD="バックさせる",Blockly.Msg.COMMON_TURN_LEFT="左に曲げる",Blockly.Msg.COMMON_TURN_RIGHT="右に曲げる",Blockly.Msg.COMMON_STOP="止める",Blockly.Msg.COLOUR_RED="赤色",Blockly.Msg.COLOUR_GREEN="緑色",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LINES="行",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_LETTERS="文字",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_COMMON_COMMA="、",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_TITLE="プログラムの変換中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_BLOCKUI_MESSAGE="プログラムをブロックに変換しています。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_BLOCK_MODE_ERROR="ブロックへの変換に失敗しました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_TITLE="プログラムの実行中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_MESSAGE="プログラムの画面に切り替えてください。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_BLOCKUI_NOTICE="プログラムをセーブ・チェックしてから実行するよ♪<br>Escキーを押すとプログラムが終わります。",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANT_RUN="プログラムを実行できませんでした",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_RUN_ERROR_CANCEL_TO_RUN="プログラムの実行をキャンセルしました",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_TITLE="プログラムのダウンロード中",Blockly.Msg.VIEWS_MAIN_MENU_VIEW_DOWNLOAD_BLOCKUI_MESSAGE="プログラムをダウンロードしています。",Blockly.Msg.BLOCKS_MOTION_MOVE="%1歩動かす",Blockly.Msg.BLOCKS_MOTION_TURN_RIGHT_DEGREES="時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_TURN_LEFT_DEGREES="反時計回りに%1度回す",Blockly.Msg.BLOCKS_MOTION_POINT_IN_DIRECTION="%1度に向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_MOUSE="マウスポインターへ向ける",Blockly.Msg.BLOCKS_MOTION_POINT_TOWARDS_CHARACTER="へ向ける",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_X="x座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_Y="、y座標を",Blockly.Msg.BLOCKS_MOTION_SET_X_Y_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_GO_TO_MOUSE="マウスポインターへ行く",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_PREFIX="",Blockly.Msg.BLOCKS_MOTION_GO_TO_CHARACTER_SUFFIX="へ行く",Blockly.Msg.BLOCKS_MOTION_CHANGE_X_BY="x座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_X="x座標を%1にする",Blockly.Msg.BLOCKS_MOTION_CHANGE_Y_BY="y座標を%1ずつ変える",Blockly.Msg.BLOCKS_MOTION_SET_Y="y座標を%1にする",Blockly.Msg.BLOCKS_MOTION_TURN_IF_REACH_WALL="もし端に着いたら、跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN="跳ね返る",Blockly.Msg.BLOCKS_MOTION_TURN_XY_X="水平(x)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_Y="垂直(y)",Blockly.Msg.BLOCKS_MOTION_TURN_XY_PREFIX="",Blockly.Msg.BLOCKS_MOTION_TURN_XY_SUFFIX="方向に跳ね返る",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_LEFT_RIGHT="左右のみ",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_NONE="回転しない",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_FREE="自由に回転",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_PREFIX="回転方法を",Blockly.Msg.BLOCKS_MOTION_SET_ROTATION_STYLE_SUFFIX="にする",Blockly.Msg.BLOCKS_MOTION_SELF_X="x座標",Blockly.Msg.BLOCKS_MOTION_SELF_Y="y座標",Blockly.Msg.BLOCKS_MOTION_SELF_ANGLE="向き",Blockly.Msg.BLOCKS_EVENTS_ON_START="実行ボタンがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_EVENTS_ON_KEY_PUSH_OR_DOWN_SUFFIX="とき",Blockly.Msg.BLOCKS_EVENTS_ON_CLICK="キャラクターがクリックされたとき",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_PREFIX="",Blockly.Msg.BLOCKS_EVENTS_ON_HIT_SUFFIX="にぶつかったとき",Blockly.Msg.BLOCKS_SENSING_K_UP="↑",Blockly.Msg.BLOCKS_SENSING_K_DOWN="↓",Blockly.Msg.BLOCKS_SENSING_K_LEFT="←",Blockly.Msg.BLOCKS_SENSING_K_RIGHT="→",Blockly.Msg.BLOCKS_SENSING_K_SPACE="スペース",Blockly.Msg.BLOCKS_SENSING_PRESSED="押された",Blockly.Msg.BLOCKS_SENSING_PUSH=Blockly.Msg.BLOCKS_SENSING_PRESSED,Blockly.Msg.BLOCKS_SENSING_UP=Blockly.Msg.BLOCKS_SENSING_PRESSED,Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED="押され続けている",Blockly.Msg.BLOCKS_SENSING_HOLD_DOWN=Blockly.Msg.BLOCKS_SENSING_HOLD_PRESSED,Blockly.Msg.BLOCKS_SENSING_M_LBUTTON="左ボタン",Blockly.Msg.BLOCKS_SENSING_M_MBUTTON="中ボタン",Blockly.Msg.BLOCKS_SENSING_M_RBUTTON="右ボタン",Blockly.Msg.BLOCKS_SENSING_RELEASED="離された",Blockly.Msg.BLOCKS_SENSING_UP=Blockly.Msg.BLOCKS_SENSING_RELEASED,Blockly.Msg.BLOCKS_SENSING_REACH_WALL="端に触れた",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_PREFIX="キーボードの",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_KEY_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_PREFIX="マウスの",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_MIDDLE="が",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_PUSH_OR_DOWN_SUFFIX="",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_X="マウスのx座標",Blockly.Msg.BLOCKS_SENSING_INPUT_MOUSE_POS_Y="マウスのy座標",Blockly.Msg.BLOCKS_SENSING_HIT_PREFIX="",Blockly.Msg.BLOCKS_SENSING_HIT_SUFFIX="に触れた",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_X="x座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_Y="y座標",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_ANGLE="向き",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME_INDEX="コスチューム番号",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_COSTUME="コスチューム名",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_SCALE="大きさ",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_VOLUME="ボリューム",Blockly.Msg.BLOCKS_SENSING_CHARACTER_PROPERTY_MIDDLE="の",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_YEAR="年",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MONTH="月",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_DAY="日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_WDAY="曜日",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_HOUR="時",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_MIN="分",Blockly.Msg.BLOCKS_SENSING_TIME_NOW_SEC="秒",Blockly.Msg.BLOCKS_SENSING_TIME_NOW="現在の",Blockly.Msg.BLOCKS_CONTROL_SLEEP="%1秒待つ",Blockly.Msg.BLOCKS_CONTROL_LOOP="ずっと",Blockly.Msg.BLOCKS_CONTROL_LOOP_END="を繰り返す",Blockly.Msg.BLOCKS_CONTROL_BREAK="繰り返しから脱出する",Blockly.Msg.BLOCKS_CONTROL_NEXT="次の繰り返しにジャンプする",Blockly.Msg.BLOCKS_CONTROL_REDO="現在の繰り返しをやり直す",Blockly.Msg.BLOCKS_CONTROL_IF="もし",Blockly.Msg.BLOCKS_CONTROL_THEN="ならば",Blockly.Msg.BLOCKS_CONTROL_ELSE="でなければ",Blockly.Msg.BLOCKS_CONTROL_TIMES="%1回繰り返す",Blockly.Msg.BLOCKS_CONTROL_AWAIT_UNTIL="%1まで待つ",Blockly.Msg.BLOCKS_CONTROL_UNTIL="%1まで",Blockly.Msg.BLOCKS_CONTROL_AWAIT="ほんの少し待つ",Blockly.Msg.BLOCKS_RUBY_STATEMENT="文",Blockly.Msg.BLOCKS_RUBY_EXPRESSION="式",Blockly.Msg.BLOCKS_RUBY_COMMENT="コメント",Blockly.Msg.BLOCKS_FIELD_CHARACTER_NO_CHARACTER="キャラクターなし",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO="ピアノのド",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RE="ピアノのレ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_MI="ピアノのミ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_FA="ピアノのファ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SO="ピアノのソ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_RA="ピアノのラ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_SI="ピアノのシ",Blockly.Msg.BLOCKS_SOUND_PRESET_SOUNDS_PIANO_DO_2="ピアノの高いド",Blockly.Msg.BLOCKS_SOUND_PLAY="%1の音を鳴らす",Blockly.Msg.BLOCKS_LOOKS_SAY="%1と言う",Blockly.Msg.BLOCKS_LOOKS_THINK="%1と考える",Blockly.Msg.BLOCKS_LOOKS_SAY_WITH_SECOND="%1と%2秒と言う",Blockly.Msg.BLOCKS_LOOKS_THINK_WITH_SECOND="%1と%2秒と考える",Blockly.Msg.BLOCKS_LOOKS_SHOW="表示する",Blockly.Msg.BLOCKS_LOOKS_HIDE="隠す",Blockly.Msg.BLOCKS_LOOKS_VANISH="消滅する",Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_ON="LED%1をオンにする",Blockly.Msg.BLOCKS_HARDWARE_LED_TURN_OFF="LED%1をオフにする",Blockly.Msg.BLOCKS_HARDWARE_ANODE="アノード",Blockly.Msg.BLOCKS_HARDWARE_CATHODE="カソード",Blockly.Msg.BLOCKS_HARDWARE_LEFT=" 左",Blockly.Msg.BLOCKS_HARDWARE_RIGHT="右",Blockly.Msg.BLOCKS_HARDWARE_INIT_HARDWARE="ハードウェアを準備する",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_SET_COLOR="RGB LED%1コモン%2を%3にする",Blockly.Msg.BLOCKS_HARDWARE_RGB_LED_TURN_OFF="RGB LED%1コモン%2をオフにする",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_SHOW="7セグディスプレイに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_SEVEN_SEGMENT_DISPLAY_OFF="7セグディスプレイをオフにする",Blockly.Msg.BLOCKS_HARDWARE_LCD_PUTS="LCDに%1を表示する",Blockly.Msg.BLOCKS_HARDWARE_LCD_CLEAR="LCDをクリアする",Blockly.Msg.BLOCKS_HARDWARE_SERVO_SET_POSITION="サーボ%1を%2度(5~180)にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_FORWARD="2WD車%1を進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_BACKWARD="2WD車%1をバックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_LEFT="2WD車%1を左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_TURN_RIGHT="2WD車%1を右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_STOP="2WD車%1を止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_RUN="2WD車%2を%3秒%1",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_FORWARD="進める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_BACKWARD="バックさせる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_LEFT="左に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_TURN_RIGHT="右に曲げる",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_COMMANDS_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SET_SPEED="2WD車%1の%2の速度(%)を%3にする",Blockly.Msg.BLOCKS_HARDWARE_TWO_WHEEL_DRIVE_CAR_SPEED="2WD車%1の%2の速度(%)",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_FORWARD="正転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_BACKWARD="逆転させる",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_STOP="止める",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER="(モータードライバ%1で)モーターを%2",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SET_SPEED="(モータードライバ%1の)モーターの速度を%2にする",Blockly.Msg.BLOCKS_HARDWARE_MOTOR_DRIVER_SPEED="(モータードライバ%1の)モーターの速度(%)",Blockly.Msg.BLOCKS_HARDWARE_BUTTON_PRESSED_OR_RELEASED="ボタン %1 が %2 ?",Blockly.Msg.BLOCKS_HARDWARE_SENSOR_VALUE="センサー %1",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LED_TURN_ON_OR_OFF="スモウルボットV3の %1 LEDを %2",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SPEED="スモウルボットV3の %1 モーターの速度(%)",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_MOTOR_SET_SPEED="スモウルボットV3の %1 モーターの速度を %2 (%) にする",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION="スモウルボットV3を %1",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_ACTION_WITH_SEC="スモウルボットV3を %2 秒 %1",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_TOUCH_SENSOR_PRESSED_OR_RELEASED="スモウルボットV3の %1 のタッチセンサーが %2 ?",Blockly.Msg.BLOCKS_HARDWARE_SMALRUBOT_V3_LIGHT_SENSOR_VALUE="スモウルボットV3の光センサー",Blockly.Msg.BLOCKS_OPERATORS_ADD="%1+%2",Blockly.Msg.BLOCKS_OPERATORS_MINUS="%1ー%2",Blockly.Msg.BLOCKS_OPERATORS_MULTIPLY="%1×%2",Blockly.Msg.BLOCKS_OPERATORS_DIVIDE="%1÷%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LT="%1<%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_LTE="%1≦%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_EQ="%1=%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GTE="%1≧%2",Blockly.Msg.BLOCKS_OPERATORS_COMPARE_GT="%1>%2",Blockly.Msg.BLOCKS_OPERATORS_RAND="%1から%2までの乱数",Blockly.Msg.BLOCKS_OPERATORS_AND="%1かつ%2",Blockly.Msg.BLOCKS_OPERATORS_OR="%1または%2",Blockly.Msg.BLOCKS_OPERATORS_NOT="%1ではない",Blockly.Msg.BLOCKS_OPERATORS_INDEX_OF="%1の%2番目",Blockly.Msg.BLOCKS_OPERATORS_LENGTH="%1の長さ",Blockly.Msg.BLOCKS_OPERATORS_MODULO="%1を%2で割った余り",Blockly.Msg.BLOCKS_OPERATORS_ROUND="%1を丸める",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD="%1の%2",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ABS="絶対値",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_FLOOR="切り上げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_CEIL="切り下げ",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SQRT="平方根",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_SIN="sin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_COS="cos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_TAN="tan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ASIN="asin",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ACOS="acos",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_ATAN="atan",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LN="log",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_LOG="log10",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_E_SQUARE="e ^",Blockly.Msg.BLOCKS_OPERATORS_MATH_METHOD_10_SQUARE="10 ^",Blockly.Msg.BLOCKS_OPERATORS_TRUE="真",Blockly.Msg.BLOCKS_OPERATORS_FALSE="偽",Blockly.Msg.BLOCKS_PEN_DOWN_PEN="ペンを下ろす",Blockly.Msg.BLOCKS_PEN_UP_PEN="ペンを上げる",Blockly.Msg.BLOCKS_PEN_SET_PEN_COLOR="ペンの色を%1にする";
@@ -68,7 +68,7 @@ Gem::Specification.new do |spec|
68
68
  ['mime-types', '~> 1.16'],
69
69
  ['haml-rails'],
70
70
  ['nokogiri'],
71
- ['smalruby', '~> 0.0.32'],
71
+ ['smalruby', '~> 0.1.1'],
72
72
  ]
73
73
  runtime_dependencies << ['therubyracer'] unless is_windows
74
74
  runtime_dependencies.each do |args|
@@ -1,7 +1,7 @@
1
1
  # encoding: utf-8
2
2
  # language: ja
3
3
  @javascript
4
- 機能: hardware_button_down_or_up - 「条件:ボタン[▼PIN]が[▼押された]」ブロック
4
+ 機能: hardware_button_pressed_or_released - 「条件:ボタン[▼PIN]が[▼押された]」ブロック
5
5
  背景:
6
6
  前提 "ブロック" タブを表示する
7
7
  かつ 次のキャラクターを追加する:
@@ -10,15 +10,15 @@
10
10
 
11
11
  シナリオ: ブロックのみ、キャラクターとブロック、キャラクターとイベントとブロックをそれぞれ配置する
12
12
  # ブロックのみ配置する
13
- もし 次のブロック("hardware_button_down_or_up")を配置する:
13
+ もし 次のブロック("hardware_button_pressed_or_released")を配置する:
14
14
  """
15
15
  %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
16
16
  %value{:name => "ARG"}
17
- %block{:type => "hardware_button_down_or_up"}
17
+ %block{:type => "hardware_button_pressed_or_released"}
18
18
  %field{:name => "PIN"}<
19
19
  D3
20
- %field{:name => "DOU"}<
21
- down
20
+ %field{:name => "POR"}<
21
+ pressed
22
22
  """
23
23
  かつ ブロックからソースコードを生成する
24
24
 
@@ -31,7 +31,7 @@
31
31
  """
32
32
 
33
33
  # キャラクターとブロックを配置する
34
- もし 次のブロック("hardware_hardware_button_down_or_up")を配置する:
34
+ もし 次のブロック("hardware_hardware_button_pressed_or_released")を配置する:
35
35
  """
36
36
  %block{:type => "character_new", :x => "21", :y => "15"}
37
37
  %field{:name => "NAME"}<
@@ -39,21 +39,21 @@
39
39
  %statement{:name => "DO"}
40
40
  %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
41
41
  %value{:name => "ARG"}
42
- %block{:type => "hardware_button_down_or_up"}
42
+ %block{:type => "hardware_button_pressed_or_released"}
43
43
  %field{:name => "PIN"}<
44
44
  D3
45
- %field{:name => "DOU"}<
46
- down
45
+ %field{:name => "POR"}<
46
+ pressed
47
47
  """
48
48
  かつ ブロックからソースコードを生成する
49
49
 
50
50
  ならば テキストエディタのプログラムは以下を含むこと:
51
51
  """
52
- p(car1.button("D3").down?)
52
+ p(car1.button("D3").pressed?)
53
53
  """
54
54
 
55
55
  # キャラクターとイベントとブロックを配置する
56
- もし 次のブロック("hardware_hardware_button_down_or_up")を配置する:
56
+ もし 次のブロック("hardware_hardware_button_pressed_or_released")を配置する:
57
57
  """
58
58
  %block{:type => "character_new", :x => "21", :y => "15"}
59
59
  %field{:name => "NAME"}<
@@ -63,17 +63,17 @@
63
63
  %statement{:name => "DO"}
64
64
  %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
65
65
  %value{:name => "ARG"}
66
- %block{:type => "hardware_button_down_or_up"}
66
+ %block{:type => "hardware_button_pressed_or_released"}
67
67
  %field{:name => "PIN"}<
68
68
  D3
69
- %field{:name => "DOU"}<
70
- up
69
+ %field{:name => "POR"}<
70
+ released
71
71
  """
72
72
  かつ ブロックからソースコードを生成する
73
73
 
74
74
  ならば テキストエディタのプログラムは以下を含むこと:
75
75
  """
76
76
  car1.on(:start) do
77
- p(button("D3").up?)
77
+ p(button("D3").released?)
78
78
  end
79
79
  """
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_led_turn_off block
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+ かつ キャラクターcar1を追加する
8
+
9
+ シナリオ: ブロックのみ配置する
10
+ もし 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
13
+ %field{:name => "PIN"}<
14
+ D13
15
+ """
16
+ かつ ブロックからソースコードを生成する
17
+
18
+ ならば テキストエディタのプログラムは "" であること
19
+
20
+ シナリオ: キャラクターとブロックを配置する
21
+ もし 次のブロックを配置する:
22
+ """
23
+ %block{:type => "character_new", :x => "21", :y => "15"}
24
+ %field{:name => "NAME"}<
25
+ car1
26
+ %statement{:name => "DO"}
27
+ %block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
28
+ %field{:name => "PIN"}<
29
+ D13
30
+ """
31
+ かつ ブロックからソースコードを生成する
32
+
33
+ ならば テキストエディタのプログラムは以下であること:
34
+ """
35
+ require "smalruby"
36
+
37
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
38
+ car1.led("D13").turn_off
39
+
40
+ """
41
+
42
+ シナリオ: キャラクターとイベントとブロックを配置する
43
+ もし 次のブロックを配置する:
44
+ """
45
+ %block{:type => "character_new", :x => "21", :y => "15"}
46
+ %field{:name => "NAME"}<
47
+ car1
48
+ %statement{:name => "DO"}
49
+ %block{:type => "events_on_start"}
50
+ %statement{:name => "DO"}
51
+ %block{:type => "hardware_led_turn_off", :x => "0", :y => "0"}
52
+ %field{:name => "PIN"}<
53
+ D13
54
+ """
55
+ かつ ブロックからソースコードを生成する
56
+
57
+ ならば テキストエディタのプログラムは以下であること:
58
+ """
59
+ require "smalruby"
60
+
61
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
62
+
63
+ car1.on(:start) do
64
+ led("D13").turn_off
65
+ end
66
+
67
+ """
@@ -0,0 +1,67 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_led_turn_on block
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+ かつ キャラクターcar1を追加する
8
+
9
+ シナリオ: ブロックのみ配置する
10
+ もし 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
13
+ %field{:name => "PIN"}<
14
+ D13
15
+ """
16
+ かつ ブロックからソースコードを生成する
17
+
18
+ ならば テキストエディタのプログラムは "" であること
19
+
20
+ シナリオ: キャラクターとブロックを配置する
21
+ もし 次のブロックを配置する:
22
+ """
23
+ %block{:type => "character_new", :x => "21", :y => "15"}
24
+ %field{:name => "NAME"}<
25
+ car1
26
+ %statement{:name => "DO"}
27
+ %block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
28
+ %field{:name => "PIN"}<
29
+ D13
30
+ """
31
+ かつ ブロックからソースコードを生成する
32
+
33
+ ならば テキストエディタのプログラムは以下であること:
34
+ """
35
+ require "smalruby"
36
+
37
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
38
+ car1.led("D13").turn_on
39
+
40
+ """
41
+
42
+ シナリオ: キャラクターとイベントとブロックを配置する
43
+ もし 次のブロックを配置する:
44
+ """
45
+ %block{:type => "character_new", :x => "21", :y => "15"}
46
+ %field{:name => "NAME"}<
47
+ car1
48
+ %statement{:name => "DO"}
49
+ %block{:type => "events_on_start"}
50
+ %statement{:name => "DO"}
51
+ %block{:type => "hardware_led_turn_on", :x => "0", :y => "0"}
52
+ %field{:name => "PIN"}<
53
+ D13
54
+ """
55
+ かつ ブロックからソースコードを生成する
56
+
57
+ ならば テキストエディタのプログラムは以下であること:
58
+ """
59
+ require "smalruby"
60
+
61
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
62
+
63
+ car1.on(:start) do
64
+ led("D13").turn_on
65
+ end
66
+
67
+ """
@@ -0,0 +1,79 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_rgb_led_set_color block
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+ かつ キャラクターcar1を追加する
8
+
9
+ シナリオ: ブロックのみ配置する
10
+ もし 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
13
+ %field{:name => "AC"}<
14
+ anode
15
+ %field{:name => "PIN"}<
16
+ D3
17
+ %field{:name => "COLOUR"}<
18
+ \#808080
19
+ """
20
+ かつ ブロックからソースコードを生成する
21
+
22
+ ならば テキストエディタのプログラムは "" であること
23
+
24
+ シナリオ: キャラクターとブロックを配置する
25
+ もし 次のブロックを配置する:
26
+ """
27
+ %block{:type => "character_new", :x => "21", :y => "15"}
28
+ %field{:name => "NAME"}<
29
+ car1
30
+ %statement{:name => "DO"}
31
+ %block{:type => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
32
+ %field{:name => "AC"}<
33
+ anode
34
+ %field{:name => "PIN"}<
35
+ D3
36
+ %field{:name => "COLOUR"}<
37
+ \#808080
38
+ """
39
+ かつ ブロックからソースコードを生成する
40
+
41
+ ならば テキストエディタのプログラムは以下であること:
42
+ """
43
+ require "smalruby"
44
+
45
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
46
+ car1.rgb_led_anode("D3").color = [128, 128, 128]
47
+
48
+ """
49
+
50
+ シナリオ: キャラクターとイベントとブロックを配置する
51
+ もし 次のブロックを配置する:
52
+ """
53
+ %block{:type => "character_new", :x => "21", :y => "15"}
54
+ %field{:name => "NAME"}<
55
+ car1
56
+ %statement{:name => "DO"}
57
+ %block{:type => "events_on_start"}
58
+ %statement{:name => "DO"}
59
+ %block{:type => "hardware_rgb_led_set_color", :x => "0", :y => "0"}
60
+ %field{:name => "AC"}<
61
+ anode
62
+ %field{:name => "PIN"}<
63
+ D3
64
+ %field{:name => "COLOUR"}<
65
+ \#808080
66
+ """
67
+ かつ ブロックからソースコードを生成する
68
+
69
+ ならば テキストエディタのプログラムは以下であること:
70
+ """
71
+ require "smalruby"
72
+
73
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
74
+
75
+ car1.on(:start) do
76
+ self.rgb_led_anode("D3").color = [128, 128, 128]
77
+ end
78
+
79
+ """
@@ -1,18 +1,17 @@
1
1
  # encoding: utf-8
2
2
  # language: ja
3
3
  @javascript
4
- 機能: hardware_button_not_use_pullup - 「ボタン[▼PIN]のプルアップ抵抗を使わない」ブロック
4
+ 機能: hardware_rgb_led_turn_off block
5
5
  背景:
6
6
  前提 "ブロック" タブを表示する
7
- かつ 次のキャラクターを追加する:
8
- | name | costumes | x | y | angle |
9
- | car1 | car1.png | 0 | 0 | 0 |
7
+ かつ キャラクターcar1を追加する
10
8
 
11
- シナリオ: ブロックのみ、キャラクターとブロック、キャラクターとイベントとブロックをそれぞれ配置する
12
- # ブロックのみ配置する
13
- もし 次のブロック("hardware_button_not_use_pullup")を配置する:
9
+ シナリオ: ブロックのみ配置する
10
+ もし 次のブロックを配置する:
14
11
  """
15
- %block{:type => "hardware_button_not_use_pullup"}
12
+ %block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
13
+ %field{:name => "AC"}<
14
+ anode
16
15
  %field{:name => "PIN"}<
17
16
  D3
18
17
  """
@@ -20,26 +19,32 @@
20
19
 
21
20
  ならば テキストエディタのプログラムは "" であること
22
21
 
23
- # キャラクターとブロックを配置する
24
- もし 次のブロック("hardware_hardware_button_not_use_pullup")を配置する:
22
+ シナリオ: キャラクターとブロックを配置する
23
+ もし 次のブロックを配置する:
25
24
  """
26
25
  %block{:type => "character_new", :x => "21", :y => "15"}
27
26
  %field{:name => "NAME"}<
28
27
  car1
29
28
  %statement{:name => "DO"}
30
- %block{:type => "hardware_button_not_use_pullup"}
29
+ %block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
30
+ %field{:name => "AC"}<
31
+ anode
31
32
  %field{:name => "PIN"}<
32
33
  D3
33
34
  """
34
35
  かつ ブロックからソースコードを生成する
35
36
 
36
- ならば テキストエディタのプログラムは以下を含むこと:
37
+ ならば テキストエディタのプログラムは以下であること:
37
38
  """
38
- car1.button("D3").not_use_pullup
39
+ require "smalruby"
40
+
41
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
42
+ car1.rgb_led_anode("D3").turn_off
43
+
39
44
  """
40
45
 
41
- # キャラクターとイベントとブロックを配置する
42
- もし 次のブロック("hardware_hardware_button_not_use_pullup")を配置する:
46
+ シナリオ: キャラクターとイベントとブロックを配置する
47
+ もし 次のブロックを配置する:
43
48
  """
44
49
  %block{:type => "character_new", :x => "21", :y => "15"}
45
50
  %field{:name => "NAME"}<
@@ -47,15 +52,22 @@
47
52
  %statement{:name => "DO"}
48
53
  %block{:type => "events_on_start"}
49
54
  %statement{:name => "DO"}
50
- %block{:type => "hardware_button_not_use_pullup"}
55
+ %block{:type => "hardware_rgb_led_turn_off", :x => "0", :y => "0"}
56
+ %field{:name => "AC"}<
57
+ anode
51
58
  %field{:name => "PIN"}<
52
59
  D3
53
60
  """
54
61
  かつ ブロックからソースコードを生成する
55
62
 
56
- ならば テキストエディタのプログラムは以下を含むこと:
63
+ ならば テキストエディタのプログラムは以下であること:
57
64
  """
65
+ require "smalruby"
66
+
67
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
68
+
58
69
  car1.on(:start) do
59
- button("D3").not_use_pullup
70
+ rgb_led_anode("D3").turn_off
60
71
  end
72
+
61
73
  """