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

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

Potentially problematic release.


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

Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/Guardfile +9 -0
  3. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +147 -62
  4. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -0
  5. data/app/assets/javascripts/msg/en_us.js +34 -12
  6. data/app/assets/javascripts/msg/ja.js +35 -15
  7. data/app/helpers/editor_helper.rb +2 -1
  8. data/app/models/concerns/ruby_to_block/block/{hardware_button_down_or_up.rb → hardware_button_pressed_or_released.rb} +3 -3
  9. data/app/models/concerns/ruby_to_block/block/{hardware_led_on.rb → hardware_led_turn_off.rb} +2 -2
  10. data/app/models/concerns/ruby_to_block/block/{hardware_led_off.rb → hardware_led_turn_on.rb} +2 -2
  11. data/app/models/concerns/ruby_to_block/block/hardware_operation.rb +2 -0
  12. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_on.rb → hardware_rgb_led_set_color.rb} +2 -2
  13. data/app/models/concerns/ruby_to_block/block/{hardware_rgb_led_off.rb → hardware_rgb_led_turn_off.rb} +2 -2
  14. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action.rb +22 -0
  15. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_action_with_sec.rb +24 -0
  16. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_led_turn_on_or_off.rb +22 -0
  17. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_light_sensor_value.rb +28 -0
  18. data/app/models/concerns/ruby_to_block/block/hardware_smalrubot_v3_touch_sensor_pressed_or_released.rb +29 -0
  19. data/app/models/concerns/ruby_to_block/block/hardware_two_wheel_drive_car_commands.rb +3 -1
  20. data/app/views/editor/_toolbox.html.haml +30 -17
  21. data/app/views/layouts/application.html.erb +3 -1
  22. data/config/locales/en.yml +1 -0
  23. data/config/locales/ja.yml +1 -0
  24. data/lib/smalruby_editor/blockly_message_helper.rb +2 -1
  25. data/lib/smalruby_editor/version.rb +1 -1
  26. data/lib/tasks/release.rake +0 -0
  27. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js} +3 -3
  28. data/public/assets/{application-fda71a642d958ffbaf90185c471d6e51.js.gz → application-b305a6ea9e7c045a8e170bbf6fb09dd1.js.gz} +0 -0
  29. data/public/assets/{manifest-1a9856df207640ec658271db34b30dbb.json → manifest-ebd584fa603a378faf780f013e6a447d.json} +1 -1
  30. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js +1 -0
  31. data/public/assets/msg/en_us-c6f8f0084f38560bf933b742ede64a52.js.gz +0 -0
  32. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js +1 -0
  33. data/public/assets/msg/ja-3703e6ceebd04ae1f08b0e871800539d.js.gz +0 -0
  34. data/smalruby-editor.gemspec +1 -1
  35. data/spec/acceptance/block_mode/blocks/hardware/{button_down_or_up.feature → button_pressed_or_released.feature} +15 -15
  36. data/spec/acceptance/block_mode/blocks/hardware/led_turn_off.feature +67 -0
  37. data/spec/acceptance/block_mode/blocks/hardware/led_turn_on.feature +67 -0
  38. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_set_color.feature +79 -0
  39. data/spec/acceptance/block_mode/blocks/hardware/{button_not_use_pullup.feature → rgb_led_turn_off.feature} +30 -18
  40. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action.feature +107 -0
  41. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_action_with_sec.feature +151 -0
  42. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_led_turn_on_or_off.feature +73 -0
  43. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_light_sensor_value.feature +92 -0
  44. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_motor_speed.feature +116 -0
  45. data/spec/acceptance/block_mode/blocks/hardware/smalrubot_v3_touch_sensor_pressed_or_released.feature +108 -0
  46. data/spec/models/concerns/ruby_to_block/block/hardware_spec.rb +359 -36
  47. data/spec/models/concerns/ruby_to_block_spec.rb +8 -8
  48. data/spec/steps/block_mode_steps.rb +8 -0
  49. metadata +43 -35
  50. data/app/models/concerns/ruby_to_block/block/hardware_button_not_use_pullup.rb +0 -18
  51. data/app/models/concerns/ruby_to_block/block/hardware_on_button_down_or_up.rb +0 -19
  52. data/app/models/concerns/ruby_to_block/block/hardware_on_sensor_change.rb +0 -17
  53. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js +0 -1
  54. data/public/assets/msg/en_us-893d970ff8061fbe7459f009582c4df5.js.gz +0 -0
  55. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js +0 -1
  56. data/public/assets/msg/ja-4d22bd0341f464f9d1b9f373121bce6d.js.gz +0 -0
  57. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +0 -75
  58. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +0 -75
  59. data/spec/acceptance/block_mode/blocks/hardware/on_button_down_or_up.feature +0 -87
  60. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +0 -81
  61. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +0 -81
  62. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +0 -87
@@ -0,0 +1,107 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_action block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
13
+ %field{:name => "ACTION"}<
14
+ backward
15
+ """
16
+ And ブロックからソースコードを生成する
17
+
18
+ Then テキストエディタのプログラムは "" であること
19
+
20
+ Scenario: キャラクターとブロックを配置する
21
+ When 次のブロックを配置する:
22
+ """
23
+ %block{:type => "character_new", :x => "21", :y => "15"}
24
+ %field{:name => "NAME"}<
25
+ car1
26
+ %statement{:name => "DO"}
27
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
28
+ %field{:name => "ACTION"}<
29
+ forward
30
+ %next
31
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
32
+ %field{:name => "ACTION"}<
33
+ backward
34
+ %next
35
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
36
+ %field{:name => "ACTION"}<
37
+ turn_left
38
+ %next
39
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
40
+ %field{:name => "ACTION"}<
41
+ turn_right
42
+ %next
43
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
44
+ %field{:name => "ACTION"}<
45
+ stop
46
+ """
47
+ And ブロックからソースコードを生成する
48
+
49
+ Then テキストエディタのプログラムは以下であること:
50
+ """
51
+ require "smalruby"
52
+
53
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
54
+ car1.smalrubot_v3.forward
55
+ car1.smalrubot_v3.backward
56
+ car1.smalrubot_v3.turn_left
57
+ car1.smalrubot_v3.turn_right
58
+ car1.smalrubot_v3.stop
59
+
60
+ """
61
+
62
+ Scenario: キャラクターとイベントとブロックを配置する
63
+ When 次のブロックを配置する:
64
+ """
65
+ %block{:type => "character_new", :x => "21", :y => "15"}
66
+ %field{:name => "NAME"}<
67
+ car1
68
+ %statement{:name => "DO"}
69
+ %block{:type => "events_on_start"}
70
+ %statement{:name => "DO"}
71
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
72
+ %field{:name => "ACTION"}<
73
+ forward
74
+ %next
75
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
76
+ %field{:name => "ACTION"}<
77
+ backward
78
+ %next
79
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
80
+ %field{:name => "ACTION"}<
81
+ turn_left
82
+ %next
83
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
84
+ %field{:name => "ACTION"}<
85
+ turn_right
86
+ %next
87
+ %block{:type => "hardware_smalrubot_v3_action", :x => "0", :y => "0"}
88
+ %field{:name => "ACTION"}<
89
+ stop
90
+ """
91
+ And ブロックからソースコードを生成する
92
+
93
+ Then テキストエディタのプログラムは以下であること:
94
+ """
95
+ require "smalruby"
96
+
97
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
98
+
99
+ car1.on(:start) do
100
+ smalrubot_v3.forward
101
+ smalrubot_v3.backward
102
+ smalrubot_v3.turn_left
103
+ smalrubot_v3.turn_right
104
+ smalrubot_v3.stop
105
+ end
106
+
107
+ """
@@ -0,0 +1,151 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_action_with_sec block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
13
+ %field{:name => "ACTION"}<
14
+ backward
15
+ %value{:name => "SEC"}
16
+ %block{:type => "math_number"}
17
+ %field{:name => "NUM"}<
18
+ 0.5
19
+ """
20
+ And ブロックからソースコードを生成する
21
+
22
+ Then テキストエディタのプログラムは "" であること
23
+
24
+ Scenario: キャラクターとブロックを配置する
25
+ When 次のブロックを配置する:
26
+ """
27
+ %block{:type => "character_new", :x => "21", :y => "15"}
28
+ %field{:name => "NAME"}<
29
+ car1
30
+ %statement{:name => "DO"}
31
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
32
+ %field{:name => "ACTION"}<
33
+ forward
34
+ %value{:name => "SEC"}
35
+ %block{:type => "math_number"}
36
+ %field{:name => "NUM"}<
37
+ 0.5
38
+ %next
39
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
40
+ %field{:name => "ACTION"}<
41
+ backward
42
+ %value{:name => "SEC"}
43
+ %block{:type => "math_number"}
44
+ %field{:name => "NUM"}<
45
+ 0.5
46
+ %next
47
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
48
+ %field{:name => "ACTION"}<
49
+ turn_left
50
+ %value{:name => "SEC"}
51
+ %block{:type => "math_number"}
52
+ %field{:name => "NUM"}<
53
+ 0.5
54
+ %next
55
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
56
+ %field{:name => "ACTION"}<
57
+ turn_right
58
+ %value{:name => "SEC"}
59
+ %block{:type => "math_number"}
60
+ %field{:name => "NUM"}<
61
+ 0.5
62
+ %next
63
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
64
+ %field{:name => "ACTION"}<
65
+ stop
66
+ %value{:name => "SEC"}
67
+ %block{:type => "math_number"}
68
+ %field{:name => "NUM"}<
69
+ 0.5
70
+ """
71
+ And ブロックからソースコードを生成する
72
+
73
+ Then テキストエディタのプログラムは以下であること:
74
+ """
75
+ require "smalruby"
76
+
77
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
78
+ car1.smalrubot_v3.forward(sec: 0.5)
79
+ car1.smalrubot_v3.backward(sec: 0.5)
80
+ car1.smalrubot_v3.turn_left(sec: 0.5)
81
+ car1.smalrubot_v3.turn_right(sec: 0.5)
82
+ car1.smalrubot_v3.stop(sec: 0.5)
83
+
84
+ """
85
+
86
+ Scenario: キャラクターとイベントとブロックを配置する
87
+ When 次のブロックを配置する:
88
+ """
89
+ %block{:type => "character_new", :x => "21", :y => "15"}
90
+ %field{:name => "NAME"}<
91
+ car1
92
+ %statement{:name => "DO"}
93
+ %block{:type => "events_on_start"}
94
+ %statement{:name => "DO"}
95
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
96
+ %field{:name => "ACTION"}<
97
+ forward
98
+ %value{:name => "SEC"}
99
+ %block{:type => "math_number"}
100
+ %field{:name => "NUM"}<
101
+ 0.5
102
+ %next
103
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
104
+ %field{:name => "ACTION"}<
105
+ backward
106
+ %value{:name => "SEC"}
107
+ %block{:type => "math_number"}
108
+ %field{:name => "NUM"}<
109
+ 0.5
110
+ %next
111
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
112
+ %field{:name => "ACTION"}<
113
+ turn_left
114
+ %value{:name => "SEC"}
115
+ %block{:type => "math_number"}
116
+ %field{:name => "NUM"}<
117
+ 0.5
118
+ %next
119
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
120
+ %field{:name => "ACTION"}<
121
+ turn_right
122
+ %value{:name => "SEC"}
123
+ %block{:type => "math_number"}
124
+ %field{:name => "NUM"}<
125
+ 0.5
126
+ %next
127
+ %block{:type => "hardware_smalrubot_v3_action_with_sec", :x => "0", :y => "0"}
128
+ %field{:name => "ACTION"}<
129
+ stop
130
+ %value{:name => "SEC"}
131
+ %block{:type => "math_number"}
132
+ %field{:name => "NUM"}<
133
+ 0.5
134
+ """
135
+ And ブロックからソースコードを生成する
136
+
137
+ Then テキストエディタのプログラムは以下であること:
138
+ """
139
+ require "smalruby"
140
+
141
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
142
+
143
+ car1.on(:start) do
144
+ smalrubot_v3.forward(sec: 0.5)
145
+ smalrubot_v3.backward(sec: 0.5)
146
+ smalrubot_v3.turn_left(sec: 0.5)
147
+ smalrubot_v3.turn_right(sec: 0.5)
148
+ smalrubot_v3.stop(sec: 0.5)
149
+ end
150
+
151
+ """
@@ -0,0 +1,73 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_led_turn_on_or_off block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
13
+ %field{:name => "COLOUR"}<
14
+ green
15
+ %field{:name => "OOO"}<
16
+ turn_off
17
+ """
18
+ And ブロックからソースコードを生成する
19
+
20
+ Then テキストエディタのプログラムは "" であること
21
+
22
+ Scenario: キャラクターとブロックを配置する
23
+ When 次のブロックを配置する:
24
+ """
25
+ %block{:type => "character_new", :x => "21", :y => "15"}
26
+ %field{:name => "NAME"}<
27
+ car1
28
+ %statement{:name => "DO"}
29
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
30
+ %field{:name => "COLOUR"}<
31
+ green
32
+ %field{:name => "OOO"}<
33
+ turn_off
34
+ """
35
+ And ブロックからソースコードを生成する
36
+
37
+ Then テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
42
+ car1.smalrubot_v3.green_led.turn_off
43
+
44
+ """
45
+
46
+ Scenario: キャラクターとイベントとブロックを配置する
47
+ When 次のブロックを配置する:
48
+ """
49
+ %block{:type => "character_new", :x => "21", :y => "15"}
50
+ %field{:name => "NAME"}<
51
+ car1
52
+ %statement{:name => "DO"}
53
+ %block{:type => "events_on_start"}
54
+ %statement{:name => "DO"}
55
+ %block{:type => "hardware_smalrubot_v3_led_turn_on_or_off", :x => "0", :y => "0"}
56
+ %field{:name => "COLOUR"}<
57
+ red
58
+ %field{:name => "OOO"}<
59
+ turn_on
60
+ """
61
+ And ブロックからソースコードを生成する
62
+
63
+ Then テキストエディタのプログラムは以下であること:
64
+ """
65
+ require "smalruby"
66
+
67
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
68
+
69
+ car1.on(:start) do
70
+ smalrubot_v3.red_led.turn_on
71
+ end
72
+
73
+ """
@@ -0,0 +1,92 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_light_sensor_value block
5
+ Scenario: ブロックのみ配置する
6
+ Given "ブロック" タブを表示する
7
+
8
+ When 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
11
+ """
12
+ And ブロックからソースコードを生成する
13
+
14
+ Then テキストエディタのプログラムは "" であること
15
+
16
+ Scenario: 文とブロックを配置する
17
+ Given "ブロック" タブを表示する
18
+
19
+ When 次のブロックを配置する:
20
+ """
21
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
22
+ %value{:name => "ARG"}
23
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
24
+ """
25
+ And ブロックからソースコードを生成する
26
+
27
+ Then テキストエディタのプログラムは以下であること:
28
+ """
29
+ require "smalruby"
30
+
31
+ p("")
32
+
33
+ """
34
+
35
+ Scenario: キャラクターとブロックを配置する
36
+ Given "ブロック" タブを表示する
37
+ And 次のキャラクターを追加する:
38
+ | name | costumes | x | y | angle |
39
+ | car1 | car1.png | 0 | 0 | 0 |
40
+
41
+ When 次のブロックを配置する:
42
+ """
43
+ %block{:type => "character_new", :x => "21", :y => "15"}
44
+ %field{:name => "NAME"}<
45
+ car1
46
+ %statement{:name => "DO"}
47
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
48
+ %value{:name => "ARG"}
49
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
50
+ """
51
+ And ブロックからソースコードを生成する
52
+
53
+ Then テキストエディタのプログラムは以下であること:
54
+ """
55
+ require "smalruby"
56
+
57
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
58
+ p(car1.smalrubot_v3.light_sensor.value)
59
+
60
+ """
61
+
62
+ Scenario: キャラクターとイベントとブロックを配置する
63
+ Given "ブロック" タブを表示する
64
+ And 次のキャラクターを追加する:
65
+ | name | costumes | x | y | angle |
66
+ | car1 | car1.png | 0 | 0 | 0 |
67
+
68
+ When 次のブロックを配置する:
69
+ """
70
+ %block{:type => "character_new", :x => "21", :y => "15"}
71
+ %field{:name => "NAME"}<
72
+ car1
73
+ %statement{:name => "DO"}
74
+ %block{:type => "events_on_start"}
75
+ %statement{:name => "DO"}
76
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
77
+ %value{:name => "ARG"}
78
+ %block{:type => "hardware_smalrubot_v3_light_sensor_value", :x => "0", :y => "0"}
79
+ """
80
+ And ブロックからソースコードを生成する
81
+
82
+ Then テキストエディタのプログラムは以下であること:
83
+ """
84
+ require "smalruby"
85
+
86
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
87
+
88
+ car1.on(:start) do
89
+ p(smalrubot_v3.light_sensor.value)
90
+ end
91
+
92
+ """
@@ -0,0 +1,116 @@
1
+ # encoding: utf-8
2
+ # language: en
3
+ @javascript
4
+ Feature: hardware_smalrubot_v3_motor_{speed,set_speed} block
5
+ Background:
6
+ Given "ブロック" タブを表示する
7
+ And キャラクターcar1を追加する
8
+
9
+ Scenario: ブロックのみ配置する
10
+ When 次のブロックを配置する:
11
+ """
12
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
13
+ %field{:name => "LOR"}<
14
+ right
15
+ """
16
+ And ブロックからソースコードを生成する
17
+
18
+ Then テキストエディタのプログラムは "" であること
19
+
20
+ Scenario: 文とブロックを配置する
21
+ When 次のブロックを配置する:
22
+ """
23
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
24
+ %value{:name => "ARG"}
25
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
26
+ %field{:name => "LOR"}<
27
+ right
28
+ %next
29
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
30
+ %field{:name => "LOR"}<
31
+ left
32
+ %value{:name => "SPEED"}
33
+ %block{:type => "math_number"}
34
+ %field{:name => "NUM"}<
35
+ 50
36
+ """
37
+ And ブロックからソースコードを生成する
38
+
39
+ Then テキストエディタのプログラムは以下であること:
40
+ """
41
+ require "smalruby"
42
+
43
+ p("")
44
+
45
+ """
46
+
47
+ Scenario: キャラクターとブロックを配置する
48
+ When 次のブロックを配置する:
49
+ """
50
+ %block{:type => "character_new", :x => "21", :y => "15"}
51
+ %field{:name => "NAME"}<
52
+ car1
53
+ %statement{:name => "DO"}
54
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
55
+ %value{:name => "ARG"}
56
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
57
+ %field{:name => "LOR"}<
58
+ right
59
+ %next
60
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
61
+ %field{:name => "LOR"}<
62
+ left
63
+ %value{:name => "SPEED"}
64
+ %block{:type => "math_number"}
65
+ %field{:name => "NUM"}<
66
+ 50
67
+ """
68
+ And ブロックからソースコードを生成する
69
+
70
+ Then テキストエディタのプログラムは以下であること:
71
+ """
72
+ require "smalruby"
73
+
74
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
75
+ p(car1.smalrubot_v3.right_motor.speed)
76
+ car1.smalrubot_v3.left_motor.speed = 50
77
+
78
+ """
79
+
80
+ Scenario: キャラクターとイベントとブロックを配置する
81
+ When 次のブロックを配置する:
82
+ """
83
+ %block{:type => "character_new", :x => "21", :y => "15"}
84
+ %field{:name => "NAME"}<
85
+ car1
86
+ %statement{:name => "DO"}
87
+ %block{:type => "events_on_start"}
88
+ %statement{:name => "DO"}
89
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
90
+ %value{:name => "ARG"}
91
+ %block{:type => "hardware_smalrubot_v3_motor_speed"}
92
+ %field{:name => "LOR"}<
93
+ right
94
+ %next
95
+ %block{:type => "hardware_smalrubot_v3_motor_set_speed"}
96
+ %field{:name => "LOR"}<
97
+ left
98
+ %value{:name => "SPEED"}
99
+ %block{:type => "math_number"}
100
+ %field{:name => "NUM"}<
101
+ 50
102
+ """
103
+ And ブロックからソースコードを生成する
104
+
105
+ Then テキストエディタのプログラムは以下であること:
106
+ """
107
+ require "smalruby"
108
+
109
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
110
+
111
+ car1.on(:start) do
112
+ p(smalrubot_v3.right_motor.speed)
113
+ self.smalrubot_v3.left_motor.speed = 50
114
+ end
115
+
116
+ """