smalruby-editor 0.1.15-x86-mingw32 → 0.1.16-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.rdoc +16 -1
  3. data/app/assets/javascripts/blocks/character.js.coffee.erb +8 -1
  4. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +59 -7
  5. data/app/assets/javascripts/blocks/motion.js.coffee.erb +1 -2
  6. data/app/assets/javascripts/models/character.js.coffee +27 -0
  7. data/app/assets/javascripts/smalruby.js.coffee +4 -0
  8. data/app/assets/javascripts/views/character_modal_view.js.coffee +22 -1
  9. data/app/assets/javascripts/views/character_selector_view.js.coffee +7 -6
  10. data/app/assets/stylesheets/application.css +8 -0
  11. data/app/assets/stylesheets/editor.css.scss +15 -5
  12. data/app/controllers/application_controller.rb +4 -7
  13. data/app/models/concerns/ruby_to_block/block/character.rb +14 -6
  14. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car.rb +1 -1
  15. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +15 -0
  16. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_run.rb +19 -0
  17. data/app/models/concerns/ruby_to_block/block/motion_set_x.rb +1 -24
  18. data/app/models/concerns/ruby_to_block/block/motion_set_x_y.rb +21 -0
  19. data/app/models/source_code.rb +9 -6
  20. data/app/views/editor/_block_tab.html.haml +3 -1
  21. data/app/views/editor/_character_modal.html.haml +14 -5
  22. data/app/views/editor/_toolbox.html.haml +91 -78
  23. data/bin/smalruby-editor +15 -0
  24. data/lib/smalruby_editor.rb +39 -4
  25. data/lib/smalruby_editor/version.rb +1 -1
  26. data/public/assets/{application-51ab300acd1779bfba20b099e7000b7e.css → application-7f560d8d6d224f87269691c57ca9a376.css} +23 -9
  27. data/public/assets/{application-51ab300acd1779bfba20b099e7000b7e.css.gz → application-7f560d8d6d224f87269691c57ca9a376.css.gz} +0 -0
  28. data/public/assets/{application-dc485e2270d6c5fce20c149d1e2c4f8d.js → application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js} +148 -21
  29. data/public/assets/{application-dc485e2270d6c5fce20c149d1e2c4f8d.js.gz → application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js.gz} +0 -0
  30. data/public/assets/manifest-332a5a1668194028b55103e0ea45c054.json +1 -1
  31. data/smalruby-editor.gemspec +1 -1
  32. data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +2 -4
  33. data/spec/lib/smalruby_editor_spec.rb +12 -0
  34. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +90 -10
  35. data/spec/models/concerns/ruby_to_block/block/motion_spec.rb +3 -6
  36. metadata +11 -8
@@ -1,3 +1,3 @@
1
1
  module SmalrubyEditor
2
- VERSION = '0.1.15'
2
+ VERSION = '0.1.16'
3
3
  end
@@ -4777,6 +4777,14 @@ html, body {
4777
4777
  height: 100%;
4778
4778
  margin: 0;
4779
4779
  }
4780
+
4781
+ body {
4782
+ user-select: none;
4783
+ -moz-user-select: none;
4784
+ -khtml-user-select: none;
4785
+ -webkit-user-select: none;
4786
+ -ms-user-select: none;
4787
+ }
4780
4788
  .dropdown-menu > li > a {
4781
4789
  cursor: default; }
4782
4790
 
@@ -4895,6 +4903,9 @@ html, body {
4895
4903
  border: 5px solid white; }
4896
4904
  #modes-container .modes-tab-pane #block-tab-left-pane #selectors-container #selectors-tab-content .selector-tab .item a.character img, #modes-container .modes-tab-pane #block-tab-left-pane #selectors-container #selectors-tab-content .selector-tab .item a.character div {
4897
4905
  margin: -5px; }
4906
+ #modes-container .modes-tab-pane #block-tab-left-pane #selectors-container #selectors-tab-content .selector-tab .item a.character img {
4907
+ max-width: 160px;
4908
+ max-height: 160px; }
4898
4909
  #modes-container .modes-tab-pane #block-tab-left-pane #selectors-container #selectors-tab-content .selector-tab .item a.character:hover {
4899
4910
  border: 5px solid #0088cc; }
4900
4911
  #modes-container .modes-tab-pane #block-tab-left-pane #selectors-container #selectors-tab-content .selector-tab .item a#add-character-button.character {
@@ -4925,21 +4936,22 @@ html, body {
4925
4936
  font-size: 16pt; }
4926
4937
 
4927
4938
  #character-modal {
4928
- width: 847px;
4929
- height: 432px;
4930
- margin-left: -423.5px; }
4939
+ width: 849px;
4940
+ height: 434px;
4941
+ margin-left: -424.5px; }
4931
4942
  #character-modal .modal-body {
4932
4943
  position: relative;
4933
4944
  height: 100%;
4934
- max-height: 402px; }
4945
+ max-height: 404px; }
4935
4946
  #character-modal .modal-body #character-modal-left-pane {
4936
- width: 320px;
4947
+ width: 322px;
4937
4948
  overflow: hidden; }
4938
4949
  #character-modal .modal-body #character-modal-left-pane #character-modal-preview {
4939
4950
  position: relative;
4940
4951
  width: 320px;
4941
4952
  height: 240px;
4942
- background-color: black;
4953
+ background-color: white;
4954
+ border: 1px solid gray;
4943
4955
  overflow: hidden; }
4944
4956
  #character-modal .modal-body #character-modal-left-pane #character-modal-preview #character-modal-character {
4945
4957
  position: absolute;
@@ -4959,15 +4971,17 @@ html, body {
4959
4971
  #character-modal .modal-body #character-modal-left-pane #character-modal-attributes #character-modal-form .control-group {
4960
4972
  margin-bottom: 8px; }
4961
4973
  #character-modal .modal-body #character-modal-left-pane #character-modal-attributes #character-modal-form .control-group .control-label {
4962
- width: 100px; }
4974
+ width: 50px; }
4963
4975
  #character-modal .modal-body #character-modal-left-pane #character-modal-attributes #character-modal-form .control-group .controls {
4964
- margin-left: 115px; }
4976
+ margin-left: 65px; }
4965
4977
  #character-modal .modal-body #character-modal-left-pane #character-modal-attributes #character-modal-form .control-group .controls input[type=range] {
4966
4978
  padding: 0; }
4979
+ #character-modal .modal-body #character-modal-left-pane #character-modal-attributes #character-modal-form .control-group .controls span#character_angle_vector {
4980
+ display: inline-block; }
4967
4981
  #character-modal .modal-body #character-modal-right-pane {
4968
4982
  overflow: hidden; }
4969
4983
  #character-modal .modal-body #character-modal-right-pane #character-modal-costume-selector {
4970
- margin-left: 320px;
4984
+ margin-left: 322px;
4971
4985
  position: absolute;
4972
4986
  left: 0;
4973
4987
  top: 0;
@@ -12637,7 +12637,8 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12637
12637
  costumes: xmlChild.getAttribute('costumes').split(','),
12638
12638
  x: parseInt(xmlChild.getAttribute('x'), 10),
12639
12639
  y: parseInt(xmlChild.getAttribute('y'), 10),
12640
- angle: parseInt(xmlChild.getAttribute('angle'), 10)
12640
+ angle: parseInt(xmlChild.getAttribute('angle'), 10),
12641
+ rotationStyle: xmlChild.getAttribute('rotation_style') || 'free'
12641
12642
  });
12642
12643
  chars.push(c);
12643
12644
  }
@@ -12657,13 +12658,17 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12657
12658
  xmlDom = Blockly.Xml.workspaceToDom(workspace);
12658
12659
  blocklyDom = xmlDom.firstChild;
12659
12660
  charSet.each(function(c) {
12660
- var e;
12661
+ var e, rotationStyle;
12661
12662
  e = goog.dom.createDom('character');
12662
12663
  e.setAttribute('x', c.get('x'));
12663
12664
  e.setAttribute('y', c.get('y'));
12664
12665
  e.setAttribute('name', c.get('name'));
12665
12666
  e.setAttribute('costumes', c.get('costumes').join(','));
12666
12667
  e.setAttribute('angle', c.get('angle'));
12668
+ rotationStyle = c.get('rotationStyle');
12669
+ if (rotationStyle !== 'free') {
12670
+ e.setAttribute('rotation_style', rotationStyle);
12671
+ }
12667
12672
  return xmlDom.insertBefore(e, blocklyDom);
12668
12673
  });
12669
12674
  return Blockly.Xml.domToPrettyText(xmlDom);
@@ -12696,6 +12701,7 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12696
12701
  x: 0,
12697
12702
  y: 0,
12698
12703
  angle: 0,
12704
+ rotationStyle: 'free',
12699
12705
  visible: true,
12700
12706
  using: false
12701
12707
  },
@@ -12768,6 +12774,39 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12768
12774
  'costumeIndex': i
12769
12775
  });
12770
12776
  return i;
12777
+ },
12778
+ rotationStyleIconName: function() {
12779
+ switch (this.get('rotationStyle')) {
12780
+ case 'free':
12781
+ return 'icon-repeat';
12782
+ case 'left_right':
12783
+ return 'icon-resize-horizontal';
12784
+ case 'none':
12785
+ return 'icon-arrow-right';
12786
+ }
12787
+ },
12788
+ rotateImage: function(selector) {
12789
+ var angle, transformValue;
12790
+ angle = this.get('angle');
12791
+ switch (this.get('rotationStyle')) {
12792
+ case 'free':
12793
+ transformValue = "rotate(" + angle + "deg) scaleX(1)";
12794
+ break;
12795
+ case 'left_right':
12796
+ if (angle < 90 || angle >= 270) {
12797
+ transformValue = "rotate(0deg) scaleX(1)";
12798
+ } else {
12799
+ transformValue = "rotate(0deg) scaleX(-1)";
12800
+ }
12801
+ break;
12802
+ case 'none':
12803
+ transformValue = "rotate(0deg) scaleX(1)";
12804
+ }
12805
+ return $(selector).css({
12806
+ '-moz-transform': transformValue,
12807
+ '-webkit-transform': transformValue,
12808
+ transform: transformValue
12809
+ });
12771
12810
  }
12772
12811
  }, {
12773
12812
  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'],
@@ -12907,6 +12946,9 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12907
12946
  model: new Smalruby.Character(),
12908
12947
  events: {
12909
12948
  'click #character-modal-costume-selector a': 'onSelectCostume',
12949
+ 'click #character_rotation_style_free': 'onRotationStyleFree',
12950
+ 'click #character_rotation_style_left_right': 'onRotationStyleLeftRight',
12951
+ 'click #character_rotation_style_none': 'onRotationStyleNone',
12910
12952
  'click #character-modal-ok-button': 'onOk'
12911
12953
  },
12912
12954
  previewZoomLevel: 0.5,
@@ -12974,6 +13016,7 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
12974
13016
  this.listenTo(this.model, 'change:y', this.onChangeY);
12975
13017
  this.listenTo(this.model, 'change:angle', this.onChangeAngle);
12976
13018
  this.listenTo(this.model, 'change:costumes', this.onChangeCostumes);
13019
+ this.listenTo(this.model, 'change:rotationStyle', this.onChangeRotationStyle);
12977
13020
  this.listenTo(this.model, 'change', this.onChange);
12978
13021
  return this.callAllOnChangeAttributes_();
12979
13022
  },
@@ -13005,7 +13048,8 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13005
13048
  this.onChangeX(this.model, this.model.get('x'));
13006
13049
  this.onChangeY(this.model, this.model.get('y'));
13007
13050
  this.onChangeAngle(this.model, this.model.get('angle'));
13008
- return this.onChangeCostumes(this.model, this.model.get('costumes'));
13051
+ this.onChangeCostumes(this.model, this.model.get('costumes'));
13052
+ return this.onChangeRotationStyle(this.model, this.model.get('rotationStyle'));
13009
13053
  },
13010
13054
  onChangeName: function(model, value, options) {
13011
13055
  return this.$el.find('input[name="character[name]"]').val(value);
@@ -13025,11 +13069,12 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13025
13069
  this.$el.find('input[name="character[angle]"]').val(value);
13026
13070
  $('#character_angle_value').text("" + value + "°");
13027
13071
  rotate = "rotate(" + value + "deg)";
13028
- return $('#character-modal-character').css({
13072
+ $('#character_angle_vector').css({
13029
13073
  '-moz-transform': rotate,
13030
13074
  '-webkit-transform': rotate,
13031
13075
  transform: rotate
13032
13076
  });
13077
+ return this.model.rotateImage('#character-modal-character');
13033
13078
  },
13034
13079
  onChangeCostumes: function(model, value, options) {
13035
13080
  var img, thumb;
@@ -13050,6 +13095,11 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13050
13095
  return this.readImageSizeflag = true;
13051
13096
  }
13052
13097
  },
13098
+ onChangeRotationStyle: function(model, value, options) {
13099
+ $('#character_rotation_style button.btn').removeClass('btn-primary');
13100
+ $("#character_rotation_style_" + value).addClass('btn-primary');
13101
+ return this.onChangeAngle(this.model, this.model.get('angle'));
13102
+ },
13053
13103
  onChange: function(model, options) {
13054
13104
  var name;
13055
13105
  if (!this.target) {
@@ -13092,6 +13142,21 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13092
13142
  }
13093
13143
  return this.model.set(attrs);
13094
13144
  },
13145
+ onRotationStyleFree: function() {
13146
+ return this.model.set({
13147
+ rotationStyle: 'free'
13148
+ });
13149
+ },
13150
+ onRotationStyleLeftRight: function() {
13151
+ return this.model.set({
13152
+ rotationStyle: 'left_right'
13153
+ });
13154
+ },
13155
+ onRotationStyleNone: function() {
13156
+ return this.model.set({
13157
+ rotationStyle: 'none'
13158
+ });
13159
+ },
13095
13160
  onOk: function() {
13096
13161
  this.$el.modal('hide');
13097
13162
  if (this.target) {
@@ -13116,7 +13181,7 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13116
13181
  _ref = ['add', 'remove', 'reset', 'change'];
13117
13182
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
13118
13183
  name = _ref[_i];
13119
- this.listenTo(this.model, name, this.render);
13184
+ this.listenTo(this.model, name, this.onChange);
13120
13185
  }
13121
13186
  this.templateText = $('#character-selector-template').text();
13122
13187
  $('#add-character-button').click(function(e) {
@@ -13141,7 +13206,7 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13141
13206
  charsEl = $('#character-selector-character-set');
13142
13207
  charsEl.children().remove();
13143
13208
  return this.model.each(function(character) {
13144
- var html, img, removeButton, rotate;
13209
+ var html, img, removeButton;
13145
13210
  html = $(_.template(_this.templateText, character));
13146
13211
  charsEl.append(html);
13147
13212
  html.find('a.character').click(function(e) {
@@ -13160,18 +13225,20 @@ Blockly.Msg.CONTROLS_IF_ELSE_TITLE_ELSE = Blockly.Msg.CONTROLS_IF_MSG_ELSE;
13160
13225
  if (character.get('using')) {
13161
13226
  removeButton.hide();
13162
13227
  }
13163
- rotate = "rotate(" + (character.get('angle')) + "deg)";
13164
13228
  img = html.find('img');
13165
- img.css({
13166
- '-moz-transform': rotate,
13167
- '-webkit-transform': rotate,
13168
- transform: rotate
13169
- });
13229
+ character.rotateImage(img);
13170
13230
  return img.on('dragstart', function(e) {
13171
13231
  return e.preventDefault();
13172
13232
  });
13173
13233
  });
13174
13234
  },
13235
+ onChange: function() {
13236
+ if (!Smalruby.blocklyLoading) {
13237
+ Smalruby.changedAfterTranslating = true;
13238
+ window.changed = true;
13239
+ }
13240
+ return this.render();
13241
+ },
13175
13242
  addBlock_: function(character) {
13176
13243
  var newBlock, onStartBlock;
13177
13244
  newBlock = new Blockly.Block(Blockly.mainWorkspace, 'character_new');
@@ -14315,9 +14382,19 @@ case end next return until\
14315
14382
  };
14316
14383
 
14317
14384
  Blockly.Ruby['character_new'] = function(block) {
14318
- var c, code, targetBlock;
14385
+ var c, code, rotationStyle, targetBlock;
14319
14386
  c = block.character;
14320
- Blockly.Ruby.definitions_["character_" + (c.get('name'))] = "" + (c.get('name')) + " = Character.new(costume: " + (Blockly.Ruby.quote_(c.costume())) + ", x: " + (c.get('x')) + ", y: " + (c.get('y')) + ", angle: " + (c.get('angle')) + ")";
14387
+ switch (c.get('rotationStyle')) {
14388
+ case 'left_right':
14389
+ rotationStyle = ', rotation_style: :left_right';
14390
+ break;
14391
+ case 'none':
14392
+ rotationStyle = ', rotation_style: :none';
14393
+ break;
14394
+ default:
14395
+ rotationStyle = '';
14396
+ }
14397
+ Blockly.Ruby.definitions_["character_" + (c.get('name'))] = "" + (c.get('name')) + " = Character.new(costume: " + (Blockly.Ruby.quote_(c.costume())) + ", x: " + (c.get('x')) + ", y: " + (c.get('y')) + ", angle: " + (c.get('angle')) + rotationStyle + ")";
14321
14398
  Blockly.Ruby.cs_().push(c);
14322
14399
  try {
14323
14400
  targetBlock = block.getInputTargetBlock('DO');
@@ -14619,7 +14696,7 @@ case end next return until\
14619
14696
 
14620
14697
  }).call(this);
14621
14698
  (function() {
14622
- var acDropdown, aiPinDropdown, dioPinDropdown, n, pwmPinDropdown, rgbLedPinDropdown;
14699
+ var acDropdown, aiPinDropdown, dioPinDropdown, n, pwmPinDropdown, rgbLedPinDropdown, twoWDPinDropdown;
14623
14700
 
14624
14701
  window.SmalrubyEditor.Hardware = {
14625
14702
  Type: 'Arduino',
@@ -14674,6 +14751,15 @@ case end next return until\
14674
14751
 
14675
14752
  acDropdown = [['アノード', 'anode'], ['カソード', 'cathode']];
14676
14753
 
14754
+ twoWDPinDropdown = (function() {
14755
+ var _i, _results;
14756
+ _results = [];
14757
+ for (n = _i = 2; _i <= 10; n = ++_i) {
14758
+ _results.push(["D" + n, "D" + n]);
14759
+ }
14760
+ return _results;
14761
+ })();
14762
+
14677
14763
  Blockly.Blocks['hardware_init_hardware'] = {
14678
14764
  init: function() {
14679
14765
  this.setHelpUrl('');
@@ -14888,7 +14974,7 @@ case end next return until\
14888
14974
  })();
14889
14975
  this.setHelpUrl('');
14890
14976
  this.setColour(208);
14891
- this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(dropdown), 'PIN').appendField('を進める');
14977
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('を進める');
14892
14978
  this.setInputsInline(true);
14893
14979
  this.setPreviousStatement(true);
14894
14980
  this.setNextStatement(true);
@@ -14915,7 +15001,7 @@ case end next return until\
14915
15001
  })();
14916
15002
  this.setHelpUrl('');
14917
15003
  this.setColour(208);
14918
- this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(dropdown), 'PIN').appendField('をバックさせる');
15004
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('をバックさせる');
14919
15005
  this.setInputsInline(true);
14920
15006
  this.setPreviousStatement(true);
14921
15007
  this.setNextStatement(true);
@@ -14942,7 +15028,7 @@ case end next return until\
14942
15028
  })();
14943
15029
  this.setHelpUrl('');
14944
15030
  this.setColour(208);
14945
- this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(dropdown), 'PIN').appendField('を左に曲げる');
15031
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('を左に曲げる');
14946
15032
  this.setInputsInline(true);
14947
15033
  this.setPreviousStatement(true);
14948
15034
  this.setNextStatement(true);
@@ -14969,7 +15055,7 @@ case end next return until\
14969
15055
  })();
14970
15056
  this.setHelpUrl('');
14971
15057
  this.setColour(208);
14972
- this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(dropdown), 'PIN').appendField('を右に曲げる');
15058
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('を右に曲げる');
14973
15059
  this.setInputsInline(true);
14974
15060
  this.setPreviousStatement(true);
14975
15061
  this.setNextStatement(true);
@@ -14996,7 +15082,7 @@ case end next return until\
14996
15082
  })();
14997
15083
  this.setHelpUrl('');
14998
15084
  this.setColour(208);
14999
- this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(dropdown), 'PIN').appendField('を止める');
15085
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('を止める');
15000
15086
  this.setInputsInline(true);
15001
15087
  this.setPreviousStatement(true);
15002
15088
  this.setNextStatement(true);
@@ -15010,6 +15096,47 @@ case end next return until\
15010
15096
  return Blockly.Ruby.characterMethodCall_("two_wheel_drive_car(" + (Blockly.Ruby.quote_(pin)) + ").stop");
15011
15097
  };
15012
15098
 
15099
+ Blockly.Blocks['hardware_two_wheel_drive_car_run'] = {
15100
+ init: function() {
15101
+ this.setHelpUrl('');
15102
+ this.setColour(208);
15103
+ this.appendDummyInput().appendField('2WD車').appendField(new Blockly.FieldDropdown(twoWDPinDropdown), 'PIN').appendField('を');
15104
+ this.appendValueInput('SEC').setCheck('Number');
15105
+ this.appendDummyInput().appendField('秒');
15106
+ this.appendValueInput('COMMAND').setCheck('String');
15107
+ this.setInputsInline(true);
15108
+ this.setPreviousStatement(true);
15109
+ this.setNextStatement(true);
15110
+ return this.setTooltip('');
15111
+ }
15112
+ };
15113
+
15114
+ Blockly.Ruby['hardware_two_wheel_drive_car_run'] = function(block) {
15115
+ var command, pin, sec;
15116
+ pin = this.getFieldValue('PIN');
15117
+ sec = Blockly.Ruby.valueToCode(this, 'SEC', Blockly.Ruby.ORDER_NONE) || 0;
15118
+ command = Blockly.Ruby.valueToCode(this, 'COMMAND', Blockly.Ruby.ORDER_NONE) || Blockly.Ruby.quote_('stop');
15119
+ return Blockly.Ruby.characterMethodCall_("two_wheel_drive_car(" + (Blockly.Ruby.quote_(pin)) + ").run(command: " + command + ", sec: " + sec + ")");
15120
+ };
15121
+
15122
+ Blockly.Blocks['hardware_two_wheel_drive_car_commands'] = {
15123
+ init: function() {
15124
+ var commands;
15125
+ commands = [['進める', 'forward'], ['バックさせる', 'backward'], ['左に曲げる', 'turn_left'], ['右に曲げる', 'turn_right'], ['止める', 'stop']];
15126
+ this.setHelpUrl('');
15127
+ this.setColour(208);
15128
+ this.appendDummyInput().appendField(new Blockly.FieldDropdown(commands), 'COMMAND');
15129
+ this.setOutput(true, 'String');
15130
+ return this.setTooltip('');
15131
+ }
15132
+ };
15133
+
15134
+ Blockly.Ruby['hardware_two_wheel_drive_car_commands'] = function(block) {
15135
+ var code;
15136
+ code = Blockly.Ruby.quote_(this.getFieldValue('COMMAND'));
15137
+ return [code, Blockly.Ruby.ORDER_ATOMIC];
15138
+ };
15139
+
15013
15140
  Blockly.Blocks['hardware_button_down'] = {
15014
15141
  init: function() {
15015
15142
  this.setHelpUrl('');
@@ -15439,7 +15566,7 @@ case end next return until\
15439
15566
  var x, y;
15440
15567
  x = Blockly.Ruby.valueToCode(this, 'X', Blockly.Ruby.ORDER_NONE) || '0';
15441
15568
  y = Blockly.Ruby.valueToCode(this, 'Y', Blockly.Ruby.ORDER_NONE) || '0';
15442
- return Blockly.Ruby.characterSetVariable_('x', x) + Blockly.Ruby.characterSetVariable_('y', y);
15569
+ return Blockly.Ruby.characterSetVariable_('position', "[" + x + ", " + y + "]");
15443
15570
  };
15444
15571
 
15445
15572
  Blockly.Blocks['motion_go_to_mouse'] = {
@@ -1 +1 @@
1
- {"files":{"default-5d1886100d7c8961e9962bbc4bb0c714.xml":{"logical_path":"default.xml","mtime":"2014-02-14T01:28:48+09:00","size":5017,"digest":"5d1886100d7c8961e9962bbc4bb0c714"},"rgb_led_anode-91225bef2a8b97f1cefee862a0619b91.xml":{"logical_path":"rgb_led_anode.xml","mtime":"2014-02-11T14:17:03+09:00","size":3805,"digest":"91225bef2a8b97f1cefee862a0619b91"},"favicon-a37c90b368fd8ed436cb8f9e9396465c.ico":{"logical_path":"favicon.ico","mtime":"2014-01-21T03:18:02+09:00","size":5430,"digest":"a37c90b368fd8ed436cb8f9e9396465c"},"application-735e172a0df828da16d22f5d3c26671f.js":{"logical_path":"application.js","mtime":"2014-02-19T18:22:09+09:00","size":1440213,"digest":"735e172a0df828da16d22f5d3c26671f"},"application-64a390efe879c386a5950515064f062d.css":{"logical_path":"application.css","mtime":"2014-02-19T14:32:55+09:00","size":119186,"digest":"64a390efe879c386a5950515064f062d"},"jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2014-02-04T09:35:48+09:00","size":1738,"digest":"c48c87b7a95316f4698484e3b85ee4aa"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2014-02-04T09:35:48+09:00","size":180,"digest":"58b63faadd031ca3db096dfdffd90224"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-937399e8b369d64aa075d13a82c00112.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2014-02-04T09:35:48+09:00","size":178,"digest":"937399e8b369d64aa075d13a82c00112"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-a8c503e0f42a081a92a473b0d30ac6cf.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":120,"digest":"a8c503e0f42a081a92a473b0d30ac6cf"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-ddcbfe385abc3947937caa0b44e2f5d2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":105,"digest":"ddcbfe385abc3947937caa0b44e2f5d2"},"jquery-ui/ui-bg_glass_75_dadada_1x400-14dd4a9ad1f21d8c4c7e673ddfb0806f.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":111,"digest":"14dd4a9ad1f21d8c4c7e673ddfb0806f"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-a43dfabb23b0a987b567b282bad68346.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":110,"digest":"a43dfabb23b0a987b567b282bad68346"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-31c0c791a756266043ee8ea61dacb36a.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":119,"digest":"31c0c791a756266043ee8ea61dacb36a"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-33edbdb0d2fcebd2a65c2041a28533da.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2014-02-04T09:35:48+09:00","size":101,"digest":"33edbdb0d2fcebd2a65c2041a28533da"},"jquery-ui/ui-icons_222222_256x240-890385424135de1513f00cbecfb7f990.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"890385424135de1513f00cbecfb7f990"},"jquery-ui/ui-icons_2e83ff_256x240-824705ca4aa2610434a358fe4018c9c6.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"824705ca4aa2610434a358fe4018c9c6"},"jquery-ui/ui-icons_454545_256x240-254e054f6df453dfac49efbc8b78f79d.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"254e054f6df453dfac49efbc8b78f79d"},"jquery-ui/ui-icons_888888_256x240-57c441f87c4289a5372823f506c1182d.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"57c441f87c4289a5372823f506c1182d"},"jquery-ui/ui-icons_cd0a0a_256x240-261647ac915575f3981ded254ae8d43e.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"261647ac915575f3981ded254ae8d43e"},"loading-e8e6dd7833131c92a6c3b9c8ccc6a6ac.gif":{"logical_path":"loading.gif","mtime":"2014-01-03T14:44:55+09:00","size":3897,"digest":"e8e6dd7833131c92a6c3b9c8ccc6a6ac"},"progressbar-82023a146fba2a0f6d925629ed2b09c5.gif":{"logical_path":"progressbar.gif","mtime":"2014-01-03T14:44:55+09:00","size":3323,"digest":"82023a146fba2a0f6d925629ed2b09c5"},"application-0047adbc0fb7a529ef7a41b5e0e7d097.js":{"logical_path":"application.js","mtime":"2014-02-20T03:12:12+09:00","size":1441568,"digest":"0047adbc0fb7a529ef7a41b5e0e7d097"},"application-42aa660a3233c7738b7578d30ba040b3.js":{"logical_path":"application.js","mtime":"2014-02-22T15:25:11+09:00","size":1441708,"digest":"42aa660a3233c7738b7578d30ba040b3"},"application-66b65154e7b5dcfe67fa164db6fc5f51.js":{"logical_path":"application.js","mtime":"2014-02-23T21:53:43+09:00","size":1441898,"digest":"66b65154e7b5dcfe67fa164db6fc5f51"},"application-8bfffad1222d4e198f3c7ccc1cbd774f.js":{"logical_path":"application.js","mtime":"2014-02-27T01:28:32+09:00","size":1442504,"digest":"8bfffad1222d4e198f3c7ccc1cbd774f"},"application-4f747690ebc8ec4815ae36021fdb2c44.js":{"logical_path":"application.js","mtime":"2014-03-07T12:36:30+09:00","size":1447094,"digest":"4f747690ebc8ec4815ae36021fdb2c44"},"application-28b7bed56c5389dfa372e972c75b6676.css":{"logical_path":"application.css","mtime":"2014-03-07T10:27:39+09:00","size":119378,"digest":"28b7bed56c5389dfa372e972c75b6676"},"application-3ee566927dc437f1406e5e903da1baf5.js":{"logical_path":"application.js","mtime":"2014-04-30T00:15:32+09:00","size":1452218,"digest":"3ee566927dc437f1406e5e903da1baf5"},"application-5f1777e683ca5d3cf4e0f0374eab6fac.css":{"logical_path":"application.css","mtime":"2014-03-29T10:25:16+09:00","size":120345,"digest":"5f1777e683ca5d3cf4e0f0374eab6fac"},"application-53d651da3309caa498cc0ca6616dbead.css":{"logical_path":"application.css","mtime":"2014-05-06T14:59:20+09:00","size":118430,"digest":"53d651da3309caa498cc0ca6616dbead"},"application-0b3c70107ad81ea9fcda6d7d921bd8cf.js":{"logical_path":"application.js","mtime":"2014-04-30T02:04:36+09:00","size":1452582,"digest":"0b3c70107ad81ea9fcda6d7d921bd8cf"},"application-c2d6a82134037eb9a7f6c7d13d2657db.js":{"logical_path":"application.js","mtime":"2014-05-06T21:22:51+09:00","size":1455113,"digest":"c2d6a82134037eb9a7f6c7d13d2657db"},"application-669cbc2df60729c4b12d739af7595cc6.js":{"logical_path":"application.js","mtime":"2014-05-08T04:10:12+09:00","size":1455352,"digest":"669cbc2df60729c4b12d739af7595cc6"},"application-6579eaebb20aaacfc143d63c77bf4199.js":{"logical_path":"application.js","mtime":"2014-05-11T03:54:51+09:00","size":1455344,"digest":"6579eaebb20aaacfc143d63c77bf4199"},"application-f112e2e4edd69b09d5d1cb92c33144d6.js":{"logical_path":"application.js","mtime":"2014-05-15T23:54:56+09:00","size":1455344,"digest":"f112e2e4edd69b09d5d1cb92c33144d6"},"application-c8214e05b402c742494330b5e957eb38.js":{"logical_path":"application.js","mtime":"2014-05-16T02:08:20+09:00","size":1455681,"digest":"c8214e05b402c742494330b5e957eb38"},"application-c45776825263b5fa7167e55a3b12252c.js":{"logical_path":"application.js","mtime":"2014-05-16T08:50:24+09:00","size":1455659,"digest":"c45776825263b5fa7167e55a3b12252c"},"application-0f9a877d144f84320a10770dfdc5ddd8.js":{"logical_path":"application.js","mtime":"2014-05-16T22:21:05+09:00","size":1455877,"digest":"0f9a877d144f84320a10770dfdc5ddd8"},"application-d60babdd5a50329b329487cf793c2e29.js":{"logical_path":"application.js","mtime":"2014-05-30T19:26:09+09:00","size":1455891,"digest":"d60babdd5a50329b329487cf793c2e29"},"application-dc485e2270d6c5fce20c149d1e2c4f8d.js":{"logical_path":"application.js","mtime":"2014-06-01T22:25:31+09:00","size":1457970,"digest":"dc485e2270d6c5fce20c149d1e2c4f8d"},"application-51ab300acd1779bfba20b099e7000b7e.css":{"logical_path":"application.css","mtime":"2014-06-01T22:26:47+09:00","size":118664,"digest":"51ab300acd1779bfba20b099e7000b7e"}},"assets":{"default.xml":"default-5d1886100d7c8961e9962bbc4bb0c714.xml","rgb_led_anode.xml":"rgb_led_anode-91225bef2a8b97f1cefee862a0619b91.xml","favicon.ico":"favicon-a37c90b368fd8ed436cb8f9e9396465c.ico","application.js":"application-dc485e2270d6c5fce20c149d1e2c4f8d.js","application.css":"application-51ab300acd1779bfba20b099e7000b7e.css","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-937399e8b369d64aa075d13a82c00112.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-a8c503e0f42a081a92a473b0d30ac6cf.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-ddcbfe385abc3947937caa0b44e2f5d2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-14dd4a9ad1f21d8c4c7e673ddfb0806f.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-a43dfabb23b0a987b567b282bad68346.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-31c0c791a756266043ee8ea61dacb36a.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-33edbdb0d2fcebd2a65c2041a28533da.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-890385424135de1513f00cbecfb7f990.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-824705ca4aa2610434a358fe4018c9c6.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-254e054f6df453dfac49efbc8b78f79d.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-57c441f87c4289a5372823f506c1182d.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-261647ac915575f3981ded254ae8d43e.png","loading.gif":"loading-e8e6dd7833131c92a6c3b9c8ccc6a6ac.gif","progressbar.gif":"progressbar-82023a146fba2a0f6d925629ed2b09c5.gif"}}
1
+ {"files":{"default-5d1886100d7c8961e9962bbc4bb0c714.xml":{"logical_path":"default.xml","mtime":"2014-02-14T01:28:48+09:00","size":5017,"digest":"5d1886100d7c8961e9962bbc4bb0c714"},"rgb_led_anode-91225bef2a8b97f1cefee862a0619b91.xml":{"logical_path":"rgb_led_anode.xml","mtime":"2014-02-11T14:17:03+09:00","size":3805,"digest":"91225bef2a8b97f1cefee862a0619b91"},"favicon-a37c90b368fd8ed436cb8f9e9396465c.ico":{"logical_path":"favicon.ico","mtime":"2014-01-21T03:18:02+09:00","size":5430,"digest":"a37c90b368fd8ed436cb8f9e9396465c"},"application-735e172a0df828da16d22f5d3c26671f.js":{"logical_path":"application.js","mtime":"2014-02-19T18:22:09+09:00","size":1440213,"digest":"735e172a0df828da16d22f5d3c26671f"},"application-64a390efe879c386a5950515064f062d.css":{"logical_path":"application.css","mtime":"2014-02-19T14:32:55+09:00","size":119186,"digest":"64a390efe879c386a5950515064f062d"},"jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif":{"logical_path":"jquery-ui/animated-overlay.gif","mtime":"2014-02-04T09:35:48+09:00","size":1738,"digest":"c48c87b7a95316f4698484e3b85ee4aa"},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2014-02-04T09:35:48+09:00","size":180,"digest":"58b63faadd031ca3db096dfdffd90224"},"jquery-ui/ui-bg_flat_75_ffffff_40x100-937399e8b369d64aa075d13a82c00112.png":{"logical_path":"jquery-ui/ui-bg_flat_75_ffffff_40x100.png","mtime":"2014-02-04T09:35:48+09:00","size":178,"digest":"937399e8b369d64aa075d13a82c00112"},"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-a8c503e0f42a081a92a473b0d30ac6cf.png":{"logical_path":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":120,"digest":"a8c503e0f42a081a92a473b0d30ac6cf"},"jquery-ui/ui-bg_glass_65_ffffff_1x400-ddcbfe385abc3947937caa0b44e2f5d2.png":{"logical_path":"jquery-ui/ui-bg_glass_65_ffffff_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":105,"digest":"ddcbfe385abc3947937caa0b44e2f5d2"},"jquery-ui/ui-bg_glass_75_dadada_1x400-14dd4a9ad1f21d8c4c7e673ddfb0806f.png":{"logical_path":"jquery-ui/ui-bg_glass_75_dadada_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":111,"digest":"14dd4a9ad1f21d8c4c7e673ddfb0806f"},"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-a43dfabb23b0a987b567b282bad68346.png":{"logical_path":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":110,"digest":"a43dfabb23b0a987b567b282bad68346"},"jquery-ui/ui-bg_glass_95_fef1ec_1x400-31c0c791a756266043ee8ea61dacb36a.png":{"logical_path":"jquery-ui/ui-bg_glass_95_fef1ec_1x400.png","mtime":"2014-02-04T09:35:48+09:00","size":119,"digest":"31c0c791a756266043ee8ea61dacb36a"},"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-33edbdb0d2fcebd2a65c2041a28533da.png":{"logical_path":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png","mtime":"2014-02-04T09:35:48+09:00","size":101,"digest":"33edbdb0d2fcebd2a65c2041a28533da"},"jquery-ui/ui-icons_222222_256x240-890385424135de1513f00cbecfb7f990.png":{"logical_path":"jquery-ui/ui-icons_222222_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"890385424135de1513f00cbecfb7f990"},"jquery-ui/ui-icons_2e83ff_256x240-824705ca4aa2610434a358fe4018c9c6.png":{"logical_path":"jquery-ui/ui-icons_2e83ff_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"824705ca4aa2610434a358fe4018c9c6"},"jquery-ui/ui-icons_454545_256x240-254e054f6df453dfac49efbc8b78f79d.png":{"logical_path":"jquery-ui/ui-icons_454545_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"254e054f6df453dfac49efbc8b78f79d"},"jquery-ui/ui-icons_888888_256x240-57c441f87c4289a5372823f506c1182d.png":{"logical_path":"jquery-ui/ui-icons_888888_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"57c441f87c4289a5372823f506c1182d"},"jquery-ui/ui-icons_cd0a0a_256x240-261647ac915575f3981ded254ae8d43e.png":{"logical_path":"jquery-ui/ui-icons_cd0a0a_256x240.png","mtime":"2014-02-04T09:35:48+09:00","size":4369,"digest":"261647ac915575f3981ded254ae8d43e"},"loading-e8e6dd7833131c92a6c3b9c8ccc6a6ac.gif":{"logical_path":"loading.gif","mtime":"2014-01-03T14:44:55+09:00","size":3897,"digest":"e8e6dd7833131c92a6c3b9c8ccc6a6ac"},"progressbar-82023a146fba2a0f6d925629ed2b09c5.gif":{"logical_path":"progressbar.gif","mtime":"2014-01-03T14:44:55+09:00","size":3323,"digest":"82023a146fba2a0f6d925629ed2b09c5"},"application-0047adbc0fb7a529ef7a41b5e0e7d097.js":{"logical_path":"application.js","mtime":"2014-02-20T03:12:12+09:00","size":1441568,"digest":"0047adbc0fb7a529ef7a41b5e0e7d097"},"application-42aa660a3233c7738b7578d30ba040b3.js":{"logical_path":"application.js","mtime":"2014-02-22T15:25:11+09:00","size":1441708,"digest":"42aa660a3233c7738b7578d30ba040b3"},"application-66b65154e7b5dcfe67fa164db6fc5f51.js":{"logical_path":"application.js","mtime":"2014-02-23T21:53:43+09:00","size":1441898,"digest":"66b65154e7b5dcfe67fa164db6fc5f51"},"application-8bfffad1222d4e198f3c7ccc1cbd774f.js":{"logical_path":"application.js","mtime":"2014-02-27T01:28:32+09:00","size":1442504,"digest":"8bfffad1222d4e198f3c7ccc1cbd774f"},"application-4f747690ebc8ec4815ae36021fdb2c44.js":{"logical_path":"application.js","mtime":"2014-03-07T12:36:30+09:00","size":1447094,"digest":"4f747690ebc8ec4815ae36021fdb2c44"},"application-28b7bed56c5389dfa372e972c75b6676.css":{"logical_path":"application.css","mtime":"2014-03-07T10:27:39+09:00","size":119378,"digest":"28b7bed56c5389dfa372e972c75b6676"},"application-3ee566927dc437f1406e5e903da1baf5.js":{"logical_path":"application.js","mtime":"2014-04-30T00:15:32+09:00","size":1452218,"digest":"3ee566927dc437f1406e5e903da1baf5"},"application-5f1777e683ca5d3cf4e0f0374eab6fac.css":{"logical_path":"application.css","mtime":"2014-03-29T10:25:16+09:00","size":120345,"digest":"5f1777e683ca5d3cf4e0f0374eab6fac"},"application-53d651da3309caa498cc0ca6616dbead.css":{"logical_path":"application.css","mtime":"2014-05-06T14:59:20+09:00","size":118430,"digest":"53d651da3309caa498cc0ca6616dbead"},"application-0b3c70107ad81ea9fcda6d7d921bd8cf.js":{"logical_path":"application.js","mtime":"2014-04-30T02:04:36+09:00","size":1452582,"digest":"0b3c70107ad81ea9fcda6d7d921bd8cf"},"application-c2d6a82134037eb9a7f6c7d13d2657db.js":{"logical_path":"application.js","mtime":"2014-05-06T21:22:51+09:00","size":1455113,"digest":"c2d6a82134037eb9a7f6c7d13d2657db"},"application-669cbc2df60729c4b12d739af7595cc6.js":{"logical_path":"application.js","mtime":"2014-05-08T04:10:12+09:00","size":1455352,"digest":"669cbc2df60729c4b12d739af7595cc6"},"application-6579eaebb20aaacfc143d63c77bf4199.js":{"logical_path":"application.js","mtime":"2014-05-11T03:54:51+09:00","size":1455344,"digest":"6579eaebb20aaacfc143d63c77bf4199"},"application-f112e2e4edd69b09d5d1cb92c33144d6.js":{"logical_path":"application.js","mtime":"2014-05-15T23:54:56+09:00","size":1455344,"digest":"f112e2e4edd69b09d5d1cb92c33144d6"},"application-c8214e05b402c742494330b5e957eb38.js":{"logical_path":"application.js","mtime":"2014-05-16T02:08:20+09:00","size":1455681,"digest":"c8214e05b402c742494330b5e957eb38"},"application-c45776825263b5fa7167e55a3b12252c.js":{"logical_path":"application.js","mtime":"2014-05-16T08:50:24+09:00","size":1455659,"digest":"c45776825263b5fa7167e55a3b12252c"},"application-0f9a877d144f84320a10770dfdc5ddd8.js":{"logical_path":"application.js","mtime":"2014-05-16T22:21:05+09:00","size":1455877,"digest":"0f9a877d144f84320a10770dfdc5ddd8"},"application-d60babdd5a50329b329487cf793c2e29.js":{"logical_path":"application.js","mtime":"2014-05-30T19:26:09+09:00","size":1455891,"digest":"d60babdd5a50329b329487cf793c2e29"},"application-dc485e2270d6c5fce20c149d1e2c4f8d.js":{"logical_path":"application.js","mtime":"2014-06-01T22:25:31+09:00","size":1457970,"digest":"dc485e2270d6c5fce20c149d1e2c4f8d"},"application-51ab300acd1779bfba20b099e7000b7e.css":{"logical_path":"application.css","mtime":"2014-06-01T22:26:47+09:00","size":118664,"digest":"51ab300acd1779bfba20b099e7000b7e"},"application-413cdca52651d449a8bc24550f6db35c.js":{"logical_path":"application.js","mtime":"2014-06-08T21:19:30+09:00","size":1462683,"digest":"413cdca52651d449a8bc24550f6db35c"},"application-7f560d8d6d224f87269691c57ca9a376.css":{"logical_path":"application.css","mtime":"2014-06-08T13:07:08+09:00","size":119280,"digest":"7f560d8d6d224f87269691c57ca9a376"},"application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js":{"logical_path":"application.js","mtime":"2014-06-08T22:17:54+09:00","size":1462685,"digest":"842ac8f5aa3fcc87bbb0e8b3a0fef5d7"}},"assets":{"default.xml":"default-5d1886100d7c8961e9962bbc4bb0c714.xml","rgb_led_anode.xml":"rgb_led_anode-91225bef2a8b97f1cefee862a0619b91.xml","favicon.ico":"favicon-a37c90b368fd8ed436cb8f9e9396465c.ico","application.js":"application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js","application.css":"application-7f560d8d6d224f87269691c57ca9a376.css","jquery-ui/animated-overlay.gif":"jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png","jquery-ui/ui-bg_flat_75_ffffff_40x100.png":"jquery-ui/ui-bg_flat_75_ffffff_40x100-937399e8b369d64aa075d13a82c00112.png","jquery-ui/ui-bg_glass_55_fbf9ee_1x400.png":"jquery-ui/ui-bg_glass_55_fbf9ee_1x400-a8c503e0f42a081a92a473b0d30ac6cf.png","jquery-ui/ui-bg_glass_65_ffffff_1x400.png":"jquery-ui/ui-bg_glass_65_ffffff_1x400-ddcbfe385abc3947937caa0b44e2f5d2.png","jquery-ui/ui-bg_glass_75_dadada_1x400.png":"jquery-ui/ui-bg_glass_75_dadada_1x400-14dd4a9ad1f21d8c4c7e673ddfb0806f.png","jquery-ui/ui-bg_glass_75_e6e6e6_1x400.png":"jquery-ui/ui-bg_glass_75_e6e6e6_1x400-a43dfabb23b0a987b567b282bad68346.png","jquery-ui/ui-bg_glass_95_fef1ec_1x400.png":"jquery-ui/ui-bg_glass_95_fef1ec_1x400-31c0c791a756266043ee8ea61dacb36a.png","jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100.png":"jquery-ui/ui-bg_highlight-soft_75_cccccc_1x100-33edbdb0d2fcebd2a65c2041a28533da.png","jquery-ui/ui-icons_222222_256x240.png":"jquery-ui/ui-icons_222222_256x240-890385424135de1513f00cbecfb7f990.png","jquery-ui/ui-icons_2e83ff_256x240.png":"jquery-ui/ui-icons_2e83ff_256x240-824705ca4aa2610434a358fe4018c9c6.png","jquery-ui/ui-icons_454545_256x240.png":"jquery-ui/ui-icons_454545_256x240-254e054f6df453dfac49efbc8b78f79d.png","jquery-ui/ui-icons_888888_256x240.png":"jquery-ui/ui-icons_888888_256x240-57c441f87c4289a5372823f506c1182d.png","jquery-ui/ui-icons_cd0a0a_256x240.png":"jquery-ui/ui-icons_cd0a0a_256x240-261647ac915575f3981ded254ae8d43e.png","loading.gif":"loading-e8e6dd7833131c92a6c3b9c8ccc6a6ac.gif","progressbar.gif":"progressbar-82023a146fba2a0f6d925629ed2b09c5.gif"}}
@@ -68,7 +68,7 @@ Gem::Specification.new do |spec|
68
68
  ['launchy'],
69
69
  ['mime-types', '~> 1.16'],
70
70
  ['haml-rails'],
71
- ['smalruby', '~> 0.0.23'],
71
+ ['smalruby', '~> 0.0.25'],
72
72
  ]
73
73
  runtime_dependencies << ['therubyracer'] unless is_windows
74
74
  runtime_dependencies.each do |args|
@@ -50,8 +50,7 @@
50
50
  require "smalruby"
51
51
 
52
52
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
53
- car1.x = 200
54
- car1.y = 100
53
+ car1.position = [200, 100]
55
54
 
56
55
  """
57
56
 
@@ -88,8 +87,7 @@
88
87
  car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
89
88
 
90
89
  car1.on(:start) do
91
- self.x = 200
92
- self.y = 100
90
+ self.position = [200, 100]
93
91
  end
94
92
 
95
93
  """