smalruby-editor 0.1.20-x86-mingw32 → 0.1.21-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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/app/assets/javascripts/blocks/character.js.coffee.erb +3 -10
  4. data/app/assets/javascripts/blocks/control.js.coffee.erb +2 -1
  5. data/app/assets/javascripts/blocks/data.js.coffee.erb +2 -1
  6. data/app/assets/javascripts/blocks/etc.js.coffee.erb +2 -1
  7. data/app/assets/javascripts/blocks/events.js.coffee.erb +5 -4
  8. data/app/assets/javascripts/blocks/field_character.js.coffee.erb +9 -0
  9. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +171 -54
  10. data/app/assets/javascripts/blocks/looks.js.coffee.erb +2 -1
  11. data/app/assets/javascripts/blocks/motion.js.coffee.erb +4 -16
  12. data/app/assets/javascripts/blocks/operators.js.coffee.erb +2 -1
  13. data/app/assets/javascripts/blocks/pen.js.coffee.erb +2 -1
  14. data/app/assets/javascripts/blocks/ruby.js.coffee.erb +2 -1
  15. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +25 -3
  16. data/app/assets/javascripts/blocks/sound.js.coffee.erb +2 -1
  17. data/app/assets/javascripts/generators/ruby.js.coffee.erb +27 -5
  18. data/app/assets/javascripts/models/source_code.js.coffee +20 -7
  19. data/app/assets/javascripts/views/main_menu_view.js.coffee +5 -7
  20. data/app/assets/stylesheets/editor.css.scss +5 -1
  21. data/app/assets/stylesheets/toolbox.css.scss.erb +29 -24
  22. data/app/controllers/source_codes_controller.rb +7 -36
  23. data/app/helpers/editor_helper.rb +9 -0
  24. data/app/models/concerns/ruby_to_block/block/hardware_button_down_or_up.rb +25 -0
  25. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +18 -0
  26. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver.rb +22 -0
  27. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_set_speed.rb +20 -0
  28. data/app/models/concerns/ruby_to_block/block/hardware_motor_driver_speed.rb +24 -0
  29. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +19 -0
  30. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +15 -0
  31. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_set_speed.rb +22 -0
  32. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_speed.rb +26 -0
  33. data/app/models/concerns/ruby_to_block/block/ruby_p.rb +19 -0
  34. data/app/models/concerns/ruby_to_block/block/{motion_reach_wall.rb → sensing_reach_wall.rb} +1 -1
  35. data/app/models/concerns/ruby_to_block/block/text.rb +3 -2
  36. data/app/models/source_code.rb +20 -0
  37. data/app/views/editor/_toolbox.html.haml +84 -63
  38. data/app/views/editor/index.html.haml +1 -1
  39. data/demos/adjust_2wd_car.rb.xml +179 -0
  40. data/demos/car_chase.rb.xml +129 -126
  41. data/demos/hardware_led.rb.xml +7 -4
  42. data/demos/pong.rb.xml +17 -14
  43. data/demos/star.rb.xml +115 -112
  44. data/lib/smalruby_editor/version.rb +3 -3
  45. data/lib/smalruby_editor.rb +16 -0
  46. data/public/assets/{application-c8991557a0789ac1bc9220f409e7f1c1.js → application-734570836cdba680c1568220a51af40f.js} +216 -86
  47. data/public/assets/{application-c8991557a0789ac1bc9220f409e7f1c1.js.gz → application-734570836cdba680c1568220a51af40f.js.gz} +0 -0
  48. data/public/assets/{application-d4fe6c0f970efe8eab9267fd08718d96.css → application-898cb749439fba4ce44cffeac1216201.css} +37 -9
  49. data/public/assets/{application-d4fe6c0f970efe8eab9267fd08718d96.css.gz → application-898cb749439fba4ce44cffeac1216201.css.gz} +0 -0
  50. data/public/assets/manifest-332a5a1668194028b55103e0ea45c054.json +1 -1
  51. data/smalruby-editor.gemspec +2 -1
  52. data/spec/acceptance/block_mode/blocks/events/on_hit.feature +2 -0
  53. data/spec/acceptance/block_mode/blocks/hardware/button_down_or_up.feature +79 -0
  54. data/spec/acceptance/block_mode/blocks/hardware/button_not_use_pullup.feature +61 -0
  55. data/spec/acceptance/block_mode/blocks/hardware/motor_driver.feature +73 -0
  56. data/spec/acceptance/block_mode/blocks/hardware/motor_driver_speed.feature +93 -0
  57. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +87 -0
  58. data/spec/acceptance/block_mode/blocks/hardware/two_wheel_drive_car_speed.feature +111 -0
  59. data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +1 -1
  60. data/spec/acceptance/block_mode/blocks/operators/text.feature +38 -0
  61. data/spec/acceptance/block_mode/blocks/sensing/hit.feature +98 -52
  62. data/spec/acceptance/block_mode/blocks/sensing/reach_wall.feature +98 -0
  63. data/spec/acceptance/block_mode/demo.feature +3 -1
  64. data/spec/acceptance/standalone/save.feature +51 -0
  65. data/spec/helpers/editor_helper_spec.rb +20 -0
  66. data/spec/javascripts/models/source_code_spec.coffee +40 -0
  67. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +269 -0
  68. data/spec/models/concerns/ruby_to_block/block/motion_spec.rb +1 -1
  69. data/spec/models/concerns/ruby_to_block/block/{motion_reach_wall_spec.rb → sensing_reach_wall_spec.rb} +2 -2
  70. data/spec/models/concerns/ruby_to_block/block/text_spec.rb +39 -0
  71. data/spec/models/concerns/ruby_to_block_spec.rb +2 -2
  72. data/spec/models/source_code_spec.rb +53 -0
  73. data/spec/steps/base_steps.rb +5 -0
  74. metadata +56 -12
  75. data/demos/rgb_led_anode.rb.xml +0 -83
@@ -49,9 +49,6 @@
49
49
  -# もし端に着いたら、跳ね返る
50
50
  %block{:type => "#{category}_turn_if_reach_wall"}
51
51
 
52
- -# 条件:端に着いた
53
- %block{:type => "#{category}_reach_wall"}
54
-
55
52
  -# 跳ね返る
56
53
  %block{:type => "#{category}_turn"}
57
54
 
@@ -85,15 +82,14 @@
85
82
  - category = 'hardware'
86
83
  %category{:name => 'アクチュエータ'}
87
84
  -#- subcategory = 'servo'
88
- -# サーボ[▼ピン]を( )度(5~180)にする
85
+ -# サーボ[▼PIN]を( )度(5~180)にする
89
86
  -#%block{:type => "#{category}_#{subcategory}_set_position"}
90
87
  = toolbox_number_value('POS', 90)
91
88
 
92
89
  - subcategory = 'two_wheel_drive_car'
93
- -# 2WD車[▼ピン]を( )秒[▼コマンド]
90
+ -# 2WD車[▼PIN]を( )秒[▼コマンド]
94
91
  %block{:type => "#{category}_#{subcategory}_run"}
95
- %field{:name => 'PIN'}<
96
- D6
92
+ = toolbox_pin_field('D5')
97
93
  = toolbox_number_value('SEC', 1)
98
94
  %value{:name => 'COMMAND'}
99
95
  %block{:type => "#{category}_#{subcategory}_commands"}
@@ -103,30 +99,42 @@
103
99
  %field{:name => 'COMMAND'}<
104
100
  forward
105
101
 
106
- -# 2WD車[▼ピン]を進める
102
+ -# 2WD車[▼PIN]を進める
107
103
  %block{:type => "#{category}_#{subcategory}_forward"}
108
- %field{:name => 'PIN'}<
109
- D6
104
+ = toolbox_pin_field('D5')
110
105
 
111
- -# 2WD車[▼ピン]をバックさせる
106
+ -# 2WD車[▼PIN]をバックさせる
112
107
  %block{:type => "#{category}_#{subcategory}_backward"}
113
- %field{:name => 'PIN'}<
114
- D6
108
+ = toolbox_pin_field('D5')
115
109
 
116
- -# 2WD車[▼ピン]を左に曲げる
110
+ -# 2WD車[▼PIN]を左に曲げる
117
111
  %block{:type => "#{category}_#{subcategory}_turn_left"}
118
- %field{:name => 'PIN'}<
119
- D6
112
+ = toolbox_pin_field('D5')
120
113
 
121
- -# 2WD車[▼ピン]を右に曲げる
114
+ -# 2WD車[▼PIN]を右に曲げる
122
115
  %block{:type => "#{category}_#{subcategory}_turn_right"}
123
- %field{:name => 'PIN'}<
124
- D6
116
+ = toolbox_pin_field('D5')
125
117
 
126
- -# 2WD車[▼ピン]を止める
118
+ -# 2WD車[▼PIN]を止める
127
119
  %block{:type => "#{category}_#{subcategory}_stop"}
128
- %field{:name => 'PIN'}<
129
- D6
120
+ = toolbox_pin_field('D5')
121
+
122
+ -# 2WD車[▼PIN]の[▼LOR]の速度を<SPEED>%にする
123
+ %block{:type => "#{category}_#{subcategory}_set_speed"}
124
+ = toolbox_pin_field('D5')
125
+ = toolbox_number_value('SPEED', 100)
126
+
127
+ - subcategory = 'motor_driver'
128
+ -# (モータードライバ[▼PIN]で)モーターを[▼正転させる]
129
+ %block{:type => "#{category}_#{subcategory}"}
130
+ = toolbox_pin_field('D6')
131
+ %field{:name => 'METHOD'}<
132
+ forward
133
+
134
+ -# (モータードライバ[▼PIN]の)モーターの速度を<SPEED>%にする
135
+ %block{:type => "#{category}_#{subcategory}_set_speed"}
136
+ = toolbox_pin_field('D6')
137
+ = toolbox_number_value('SPEED', 100)
130
138
 
131
139
  - category = 'looks'
132
140
  %category{:name => '見た目'}
@@ -173,17 +181,17 @@
173
181
 
174
182
  - category = 'hardware'
175
183
  - subcategory = 'led'
176
- -# LED[▼ピン]をオンにする
184
+ -# LED[▼PIN]をオンにする
177
185
  %block{:type => "#{category}_#{subcategory}_on"}
178
186
 
179
- -# LED[▼ピン]をオフにする
187
+ -# LED[▼PIN]をオフにする
180
188
  %block{:type => "#{category}_#{subcategory}_off"}
181
189
 
182
190
  -#- subcategory = 'rgb_led'
183
- -# RGB LED[▼アノード]コモン[▼ピン]を[カラー]にする
191
+ -# RGB LED[▼アノード]コモン[▼PIN]を[カラー]にする
184
192
  -#%block{:type => "#{category}_#{subcategory}_on"}
185
193
 
186
- -# RGB LED[▼アノード]コモン[▼ピン]をオフにする
194
+ -# RGB LED[▼アノード]コモン[▼PIN]をオフにする
187
195
  -#%block{:type => "#{category}_#{subcategory}_off"}
188
196
 
189
197
  -#- subcategory = 'seven_segment_display'
@@ -247,11 +255,8 @@
247
255
  -# センサー[▼PIN]が変化したとき
248
256
  %block{:type => "#{category}_on_sensor_change"}
249
257
 
250
- -# ボタン[▼]を押したとき
251
- -#%block{:type => "#{category}_on_button_down"}
252
-
253
- -# ボタン[▼]を離したとき
254
- -#%block{:type => "#{category}_on_button_up"}
258
+ -# ボタン[▼PIN]が[▼押された]とき
259
+ %block{:type => "#{category}_on_button_down_or_up"}
255
260
 
256
261
  - category = 'control'
257
262
  %category{:name => '制御'}
@@ -295,53 +300,65 @@
295
300
 
296
301
  - category = 'sensing'
297
302
  %category{:name => '調べる'}
298
- -# 条件:キーボードの[▼キー]が[▼押された]
299
- %block{:type => "#{category}_input_key_push_or_down"}
300
- = toolbox_key_field
303
+ %category{:name => '一般'}
304
+ -# 条件:端に触れた
305
+ %block{:type => "#{category}_reach_wall"}
306
+
307
+ -# 条件:キーボードの[▼キー]が[▼押された]
308
+ %block{:type => "#{category}_input_key_push_or_down"}
309
+ = toolbox_key_field
301
310
 
302
- -# 条件:マウスの[▼左ボタン]が[▼押された]
303
- %block{:type => "#{category}_input_mouse_push_or_down"}
311
+ -# 条件:マウスの[▼左ボタン]が[▼押された]
312
+ %block{:type => "#{category}_input_mouse_push_or_down"}
304
313
 
305
- -# 変数:マウスのx座標
306
- %block{:type => "#{category}_input_mouse_pos_x"}
314
+ -# 変数:マウスのx座標
315
+ %block{:type => "#{category}_input_mouse_pos_x"}
307
316
 
308
- -# 変数:マウスのy座標
309
- %block{:type => "#{category}_input_mouse_pos_y"}
317
+ -# 変数:マウスのy座標
318
+ %block{:type => "#{category}_input_mouse_pos_y"}
310
319
 
311
- -# 条件:[▼キャラクター]に触れた
312
- %block{:type => "#{category}_hit"}
320
+ -# 条件:[▼キャラクター]に触れた
321
+ %block{:type => "#{category}_hit"}
313
322
 
314
- -# [ ]と聞いて待つ
315
- -#%block{:type => "#{category}_ask"}
316
- -# = toolbox_text_value('TEXT', 'あなたのお名前は?')
323
+ -# [ ]と聞いて待つ
324
+ -#%block{:type => "#{category}_ask"}
325
+ -# = toolbox_text_value('TEXT', 'あなたのお名前は?')
317
326
 
318
- -# 変数:答え
319
- -#%block{:type => "#{category}_answer"}
327
+ -# 変数:答え
328
+ -#%block{:type => "#{category}_answer"}
320
329
 
321
- -# 変数:タイマー
322
- -#%block{:type => "#{category}_timer_count"}
330
+ -# 変数:タイマー
331
+ -#%block{:type => "#{category}_timer_count"}
323
332
 
324
- -# タイマーをリセット
325
- -#%block{:type => "#{category}_timer_reset"}
333
+ -# タイマーをリセット
334
+ -#%block{:type => "#{category}_timer_reset"}
326
335
 
327
- -# 変数:[▼キャラクター]の[▼プロパティ]
328
- %block{:type => "#{category}_character_property"}
336
+ -# 変数:[▼キャラクター]の[▼プロパティ]
337
+ %block{:type => "#{category}_character_property"}
329
338
 
330
- -# 変数:現在の[▼時]
331
- %block{:type => "#{category}_time_now"}
339
+ -# 変数:現在の[▼時]
340
+ %block{:type => "#{category}_time_now"}
332
341
 
333
- -# 変数:2000年からの日数
334
- -#%block{:type => "#{category}_days_since_2000"}
342
+ -# 変数:2000年からの日数
343
+ -#%block{:type => "#{category}_days_since_2000"}
335
344
 
336
345
  - category = 'hardware'
337
- -# センサー[▼PIN]
338
- %block{:type => "#{category}_sensor_value"}
346
+ %category{:name => 'ハードウェア'}
347
+ -# センサー[▼PIN]
348
+ %block{:type => "#{category}_sensor_value"}
349
+ = toolbox_pin_field('A0')
350
+
351
+ -# 条件:ボタン[▼PIN]が[▼押された]
352
+ %block{:type => "#{category}_button_down_or_up"}
353
+ = toolbox_pin_field('D3')
339
354
 
340
- -# 条件:ボタン[▼]を押している
341
- -#%block{:type => "#{category}_button_down"}
355
+ -# 2WD車[▼PIN]の[▼LOR]の速度%
356
+ %block{:type => "#{category}_two_wheel_drive_car_speed"}
357
+ = toolbox_pin_field('D5')
342
358
 
343
- -# 条件:ボタン[▼]を離している
344
- -#%block{:type => "#{category}_button_up"}
359
+ -# (モータードライバ[▼PIN]の)モーターの速度(%)
360
+ %block{:type => "#{category}_motor_driver_speed"}
361
+ = toolbox_pin_field('D6')
345
362
 
346
363
  - category = 'operators'
347
364
  %category{:name => '演算'}
@@ -448,3 +465,7 @@
448
465
  %category{:name => 'ハードウェア'}
449
466
  -# ハードウェアを準備する
450
467
  %block{:type => "#{category}_init_hardware"}
468
+
469
+ -# ボタン[▼PIN]のプルアップ抵抗を使わない
470
+ %block{:type => "#{category}_button_not_use_pullup"}
471
+ = toolbox_pin_field('D3')
@@ -127,4 +127,4 @@
127
127
 
128
128
  - if raspberrypi?
129
129
  %script{type: "text/javascript"}
130
- $(function() { $('div[id=":5"]').hide(); });
130
+ $(function() { $('div[id=":7"]').hide(); });
@@ -0,0 +1,179 @@
1
+ <xml xmlns="http://www.w3.org/1999/xhtml">
2
+ <character name="car1" x="170" y="266" costumes="car2.png" angle="241" rotation_style="left_right" />
3
+ <character name="car2" x="420" y="260" costumes="car2.png" angle="0" rotation_style="left_right" />
4
+ <character name="frog1" x="276" y="88" costumes="frog1.png" angle="0" />
5
+ <block type="hardware_init_hardware" x="177" y="30" />
6
+ <block type="ruby_comment" x="178" y="70">
7
+ <field name="COMMENT">2WD車の左右のモーターを調整する</field>
8
+ <next>
9
+ <block type="character_new">
10
+ <field name="NAME">frog1</field>
11
+ <statement name="DO">
12
+ <block type="events_on_start">
13
+ <statement name="DO">
14
+ <block type="looks_say" inline="true">
15
+ <value name="TEXT">
16
+ <block type="text">
17
+ <field name="TEXT">クリックすると前と後ろに動かすよ。←、→で左右のモーターの速度を調整できるよ</field>
18
+ </block>
19
+ </value>
20
+ </block>
21
+ </statement>
22
+ <next>
23
+ <block type="events_on_click">
24
+ <statement name="DO">
25
+ <block type="hardware_two_wheel_drive_car_run" inline="true">
26
+ <field name="PIN">D5</field>
27
+ <value name="SEC">
28
+ <block type="math_number">
29
+ <field name="NUM">2</field>
30
+ </block>
31
+ </value>
32
+ <value name="COMMAND">
33
+ <block type="hardware_two_wheel_drive_car_commands">
34
+ <field name="COMMAND">forward</field>
35
+ </block>
36
+ </value>
37
+ <next>
38
+ <block type="hardware_two_wheel_drive_car_run" inline="true">
39
+ <field name="PIN">D5</field>
40
+ <value name="SEC">
41
+ <block type="math_number">
42
+ <field name="NUM">2</field>
43
+ </block>
44
+ </value>
45
+ <value name="COMMAND">
46
+ <block type="hardware_two_wheel_drive_car_commands">
47
+ <field name="COMMAND">backward</field>
48
+ </block>
49
+ </value>
50
+ </block>
51
+ </next>
52
+ </block>
53
+ </statement>
54
+ <next>
55
+ <block type="events_on_key_push_or_down">
56
+ <field name="KEY">K_LEFT</field>
57
+ <field name="POD">push</field>
58
+ <statement name="DO">
59
+ <block type="hardware_two_wheel_drive_car_set_speed" inline="true">
60
+ <field name="PIN">D5</field>
61
+ <field name="LOR">left</field>
62
+ <value name="SPEED">
63
+ <block type="operators_minus" inline="true">
64
+ <value name="A">
65
+ <block type="hardware_two_wheel_drive_car_speed">
66
+ <field name="PIN">D5</field>
67
+ <field name="LOR">left</field>
68
+ </block>
69
+ </value>
70
+ <value name="B">
71
+ <block type="math_number">
72
+ <field name="NUM">1</field>
73
+ </block>
74
+ </value>
75
+ </block>
76
+ </value>
77
+ <next>
78
+ <block type="hardware_two_wheel_drive_car_set_speed" inline="true">
79
+ <field name="PIN">D5</field>
80
+ <field name="LOR">right</field>
81
+ <value name="SPEED">
82
+ <block type="math_number">
83
+ <field name="NUM">100</field>
84
+ </block>
85
+ </value>
86
+ </block>
87
+ </next>
88
+ </block>
89
+ </statement>
90
+ <next>
91
+ <block type="events_on_key_push_or_down">
92
+ <field name="KEY">K_RIGHT</field>
93
+ <field name="POD">push</field>
94
+ <statement name="DO">
95
+ <block type="hardware_two_wheel_drive_car_set_speed" inline="true">
96
+ <field name="PIN">D5</field>
97
+ <field name="LOR">left</field>
98
+ <value name="SPEED">
99
+ <block type="math_number">
100
+ <field name="NUM">100</field>
101
+ </block>
102
+ </value>
103
+ <next>
104
+ <block type="hardware_two_wheel_drive_car_set_speed" inline="true">
105
+ <field name="PIN">D5</field>
106
+ <field name="LOR">right</field>
107
+ <value name="SPEED">
108
+ <block type="operators_minus" inline="true">
109
+ <value name="A">
110
+ <block type="hardware_two_wheel_drive_car_speed">
111
+ <field name="PIN">D5</field>
112
+ <field name="LOR">right</field>
113
+ </block>
114
+ </value>
115
+ <value name="B">
116
+ <block type="math_number">
117
+ <field name="NUM">1</field>
118
+ </block>
119
+ </value>
120
+ </block>
121
+ </value>
122
+ </block>
123
+ </next>
124
+ </block>
125
+ </statement>
126
+ </block>
127
+ </next>
128
+ </block>
129
+ </next>
130
+ </block>
131
+ </next>
132
+ </block>
133
+ </statement>
134
+ </block>
135
+ </next>
136
+ </block>
137
+ <block type="character_new" x="179" y="617">
138
+ <field name="NAME">car1</field>
139
+ <statement name="DO">
140
+ <block type="events_on_start">
141
+ <statement name="DO">
142
+ <block type="control_loop">
143
+ <statement name="DO">
144
+ <block type="looks_say" inline="true">
145
+ <value name="TEXT">
146
+ <block type="hardware_two_wheel_drive_car_speed">
147
+ <field name="PIN">D5</field>
148
+ <field name="LOR">left</field>
149
+ </block>
150
+ </value>
151
+ </block>
152
+ </statement>
153
+ </block>
154
+ </statement>
155
+ </block>
156
+ </statement>
157
+ </block>
158
+ <block type="character_new" x="588" y="612">
159
+ <field name="NAME">car2</field>
160
+ <statement name="DO">
161
+ <block type="events_on_start">
162
+ <statement name="DO">
163
+ <block type="control_loop">
164
+ <statement name="DO">
165
+ <block type="looks_say" inline="true">
166
+ <value name="TEXT">
167
+ <block type="hardware_two_wheel_drive_car_speed">
168
+ <field name="PIN">D5</field>
169
+ <field name="LOR">right</field>
170
+ </block>
171
+ </value>
172
+ </block>
173
+ </statement>
174
+ </block>
175
+ </statement>
176
+ </block>
177
+ </statement>
178
+ </block>
179
+ </xml>