smalruby-editor 0.1.15 → 0.1.16
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.
- checksums.yaml +4 -4
- data/README.rdoc +16 -1
- data/app/assets/javascripts/blocks/character.js.coffee.erb +8 -1
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +59 -7
- data/app/assets/javascripts/blocks/motion.js.coffee.erb +1 -2
- data/app/assets/javascripts/models/character.js.coffee +27 -0
- data/app/assets/javascripts/smalruby.js.coffee +4 -0
- data/app/assets/javascripts/views/character_modal_view.js.coffee +22 -1
- data/app/assets/javascripts/views/character_selector_view.js.coffee +7 -6
- data/app/assets/stylesheets/application.css +8 -0
- data/app/assets/stylesheets/editor.css.scss +15 -5
- data/app/controllers/application_controller.rb +4 -7
- data/app/models/concerns/ruby_to_block/block/character.rb +14 -6
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car.rb +1 -1
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +15 -0
- data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_run.rb +19 -0
- data/app/models/concerns/ruby_to_block/block/motion_set_x.rb +1 -24
- data/app/models/concerns/ruby_to_block/block/motion_set_x_y.rb +21 -0
- data/app/models/source_code.rb +9 -6
- data/app/views/editor/_block_tab.html.haml +3 -1
- data/app/views/editor/_character_modal.html.haml +14 -5
- data/app/views/editor/_toolbox.html.haml +91 -78
- data/bin/smalruby-editor +15 -0
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/smalruby_editor.rb +39 -4
- data/public/assets/{application-51ab300acd1779bfba20b099e7000b7e.css → application-7f560d8d6d224f87269691c57ca9a376.css} +23 -9
- data/public/assets/{application-51ab300acd1779bfba20b099e7000b7e.css.gz → application-7f560d8d6d224f87269691c57ca9a376.css.gz} +0 -0
- data/public/assets/{application-dc485e2270d6c5fce20c149d1e2c4f8d.js → application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js} +148 -21
- data/public/assets/{application-dc485e2270d6c5fce20c149d1e2c4f8d.js.gz → application-842ac8f5aa3fcc87bbb0e8b3a0fef5d7.js.gz} +0 -0
- data/public/assets/manifest-332a5a1668194028b55103e0ea45c054.json +1 -1
- data/smalruby-editor.gemspec +1 -1
- data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +2 -4
- data/spec/lib/smalruby_editor_spec.rb +12 -0
- data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +90 -10
- data/spec/models/concerns/ruby_to_block/block/motion_spec.rb +3 -6
- metadata +11 -8
@@ -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
|
-
|
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
|
-
|
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.
|
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
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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(
|
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(
|
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(
|
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_('
|
15569
|
+
return Blockly.Ruby.characterSetVariable_('position', "[" + x + ", " + y + "]");
|
15443
15570
|
};
|
15444
15571
|
|
15445
15572
|
Blockly.Blocks['motion_go_to_mouse'] = {
|
Binary file
|
@@ -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"}}
|
data/smalruby-editor.gemspec
CHANGED
@@ -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.
|
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.
|
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.
|
92
|
-
self.y = 100
|
90
|
+
self.position = [200, 100]
|
93
91
|
end
|
94
92
|
|
95
93
|
"""
|
@@ -62,5 +62,17 @@ describe SmalrubyEditor do
|
|
62
62
|
SmalrubyEditor.create_home_directory
|
63
63
|
end
|
64
64
|
end
|
65
|
+
|
66
|
+
context 'database.ymlが存在する場合', create_home_directory: true do
|
67
|
+
before(:all) do
|
68
|
+
database_yml_path = @home_dir.join('config', 'database.yml')
|
69
|
+
FileUtils.mkdir_p(database_yml_path.dirname)
|
70
|
+
database_yml_path.open('w') do |f|
|
71
|
+
f.write('exist YAML')
|
72
|
+
end
|
73
|
+
|
74
|
+
SmalrubyEditor.create_home_directory(@home_dir)
|
75
|
+
end
|
76
|
+
end
|
65
77
|
end
|
66
78
|
end
|
@@ -14,17 +14,22 @@ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
|
14
14
|
car1.on(:start) do
|
15
15
|
led("D4").on
|
16
16
|
rgb_led_cathode("D9").on(color: [255, 0, 0])
|
17
|
-
two_wheel_drive_car("
|
17
|
+
two_wheel_drive_car("D6").forward
|
18
18
|
end
|
19
19
|
car1.led("D4").off
|
20
20
|
car1.rgb_led_cathode("D9").off
|
21
|
-
car1.two_wheel_drive_car("
|
21
|
+
car1.two_wheel_drive_car("D6").backward
|
22
22
|
|
23
23
|
car1.on(:sensor_change, "A0") do
|
24
24
|
if sensor("A0").value < 200
|
25
|
-
two_wheel_drive_car("
|
26
|
-
two_wheel_drive_car("
|
27
|
-
two_wheel_drive_car("
|
25
|
+
two_wheel_drive_car("D6").turn_left
|
26
|
+
two_wheel_drive_car("D6").turn_right
|
27
|
+
two_wheel_drive_car("D6").stop
|
28
|
+
two_wheel_drive_car("D6").run(command: "forward", sec: 1)
|
29
|
+
two_wheel_drive_car("D6").run(command: "backward", sec: 2)
|
30
|
+
two_wheel_drive_car("D6").run(command: "turn_left", sec: 3)
|
31
|
+
two_wheel_drive_car("D6").run(command: "turn_right", sec: 4)
|
32
|
+
two_wheel_drive_car("D6").run(command: "stop", sec: 5)
|
28
33
|
end
|
29
34
|
end
|
30
35
|
EOS
|
@@ -50,7 +55,7 @@ end
|
|
50
55
|
<field name="COLOUR">#ff0000</field>
|
51
56
|
<next>
|
52
57
|
<block type="hardware_two_wheel_drive_car_forward">
|
53
|
-
<field name="PIN">
|
58
|
+
<field name="PIN">D6</field>
|
54
59
|
</block>
|
55
60
|
</next>
|
56
61
|
</block>
|
@@ -66,7 +71,7 @@ end
|
|
66
71
|
<field name="PIN">D9</field>
|
67
72
|
<next>
|
68
73
|
<block type="hardware_two_wheel_drive_car_backward">
|
69
|
-
<field name="PIN">
|
74
|
+
<field name="PIN">D6</field>
|
70
75
|
<next>
|
71
76
|
<block type="hardware_on_sensor_change">
|
72
77
|
<field name="PIN">A0</field>
|
@@ -88,13 +93,88 @@ end
|
|
88
93
|
</value>
|
89
94
|
<statement name="THEN">
|
90
95
|
<block type="hardware_two_wheel_drive_car_turn_left">
|
91
|
-
<field name="PIN">
|
96
|
+
<field name="PIN">D6</field>
|
92
97
|
<next>
|
93
98
|
<block type="hardware_two_wheel_drive_car_turn_right">
|
94
|
-
<field name="PIN">
|
99
|
+
<field name="PIN">D6</field>
|
95
100
|
<next>
|
96
101
|
<block type="hardware_two_wheel_drive_car_stop">
|
97
|
-
<field name="PIN">
|
102
|
+
<field name="PIN">D6</field>
|
103
|
+
<next>
|
104
|
+
<block type="hardware_two_wheel_drive_car_run" inline="true">
|
105
|
+
<field name="PIN">D6</field>
|
106
|
+
<value name="SEC">
|
107
|
+
<block type="math_number">
|
108
|
+
<field name="NUM">1</field>
|
109
|
+
</block>
|
110
|
+
</value>
|
111
|
+
<value name="COMMAND">
|
112
|
+
<block type="hardware_two_wheel_drive_car_commands">
|
113
|
+
<field name="COMMAND">forward</field>
|
114
|
+
</block>
|
115
|
+
</value>
|
116
|
+
<next>
|
117
|
+
<block type="hardware_two_wheel_drive_car_run" inline="true">
|
118
|
+
<field name="PIN">D6</field>
|
119
|
+
<value name="SEC">
|
120
|
+
<block type="math_number">
|
121
|
+
<field name="NUM">2</field>
|
122
|
+
</block>
|
123
|
+
</value>
|
124
|
+
<value name="COMMAND">
|
125
|
+
<block type="hardware_two_wheel_drive_car_commands">
|
126
|
+
<field name="COMMAND">backward</field>
|
127
|
+
</block>
|
128
|
+
</value>
|
129
|
+
<next>
|
130
|
+
<block type="hardware_two_wheel_drive_car_run" inline="true">
|
131
|
+
<field name="PIN">D6</field>
|
132
|
+
<value name="SEC">
|
133
|
+
<block type="math_number">
|
134
|
+
<field name="NUM">3</field>
|
135
|
+
</block>
|
136
|
+
</value>
|
137
|
+
<value name="COMMAND">
|
138
|
+
<block type="hardware_two_wheel_drive_car_commands">
|
139
|
+
<field name="COMMAND">turn_left</field>
|
140
|
+
</block>
|
141
|
+
</value>
|
142
|
+
<next>
|
143
|
+
<block type="hardware_two_wheel_drive_car_run" inline="true">
|
144
|
+
<field name="PIN">D6</field>
|
145
|
+
<value name="SEC">
|
146
|
+
<block type="math_number">
|
147
|
+
<field name="NUM">4</field>
|
148
|
+
</block>
|
149
|
+
</value>
|
150
|
+
<value name="COMMAND">
|
151
|
+
<block type="hardware_two_wheel_drive_car_commands">
|
152
|
+
<field name="COMMAND">turn_right</field>
|
153
|
+
</block>
|
154
|
+
</value>
|
155
|
+
<next>
|
156
|
+
<block type="hardware_two_wheel_drive_car_run" inline="true">
|
157
|
+
<field name="PIN">D6</field>
|
158
|
+
<value name="SEC">
|
159
|
+
<block type="math_number">
|
160
|
+
<field name="NUM">5</field>
|
161
|
+
</block>
|
162
|
+
</value>
|
163
|
+
<value name="COMMAND">
|
164
|
+
<block type="hardware_two_wheel_drive_car_commands">
|
165
|
+
<field name="COMMAND">stop</field>
|
166
|
+
</block>
|
167
|
+
</value>
|
168
|
+
</block>
|
169
|
+
</next>
|
170
|
+
</block>
|
171
|
+
</next>
|
172
|
+
</block>
|
173
|
+
</next>
|
174
|
+
</block>
|
175
|
+
</next>
|
176
|
+
</block>
|
177
|
+
</next>
|
98
178
|
</block>
|
99
179
|
</next>
|
100
180
|
</block>
|
@@ -8,8 +8,7 @@ describe RubyToBlock::Block, '移動・回転ジャンル', to_blocks: true do
|
|
8
8
|
parts = <<-EOS
|
9
9
|
car1.on(:start) do
|
10
10
|
move(10)
|
11
|
-
self.
|
12
|
-
self.y = 0
|
11
|
+
self.position = [0, 0]
|
13
12
|
self.x += 10
|
14
13
|
self.x = 0
|
15
14
|
self.y += 10
|
@@ -21,8 +20,7 @@ car1.on(:start) do
|
|
21
20
|
end
|
22
21
|
end
|
23
22
|
car1.move(10)
|
24
|
-
car1.
|
25
|
-
car1.y = 0
|
23
|
+
car1.position = [0, 0]
|
26
24
|
car1.x += 10
|
27
25
|
car1.x = 0
|
28
26
|
car1.y += 10
|
@@ -195,8 +193,7 @@ car1.y = 0
|
|
195
193
|
|
196
194
|
parts = <<-EOS
|
197
195
|
car1.move(10)
|
198
|
-
car1.
|
199
|
-
car1.y = 0
|
196
|
+
car1.position = [0, 0]
|
200
197
|
car1.x += 10
|
201
198
|
EOS
|
202
199
|
describe compact_source_code(parts), character_new_data: true do
|