smalruby-editor 0.0.12-x86-mingw32 → 0.1.0-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 (179) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.travis.yml +2 -0
  4. data/LEGAL +32 -0
  5. data/Rakefile +1 -1
  6. data/app/assets/demos/default.xml +126 -0
  7. data/app/assets/demos/rgb_led_anode.xml +83 -0
  8. data/app/assets/images/favicon.ico +0 -0
  9. data/app/assets/javascripts/application.js +18 -1
  10. data/app/assets/javascripts/block_mode.js.coffee.erb +10 -0
  11. data/app/assets/javascripts/blocks/blockly.js.coffee.erb +34 -0
  12. data/app/assets/javascripts/blocks/character.js.coffee.erb +76 -0
  13. data/app/assets/javascripts/blocks/control.js.coffee.erb +180 -0
  14. data/app/assets/javascripts/blocks/data.js.coffee.erb +6 -0
  15. data/app/assets/javascripts/blocks/etc.js.coffee.erb +6 -0
  16. data/app/assets/javascripts/blocks/events.js.coffee.erb +82 -0
  17. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +313 -0
  18. data/app/assets/javascripts/blocks/looks.js.coffee.erb +163 -0
  19. data/app/assets/javascripts/blocks/motion.js.coffee.erb +297 -0
  20. data/app/assets/javascripts/blocks/operators.js.coffee.erb +279 -0
  21. data/app/assets/javascripts/blocks/pen.js.coffee.erb +6 -0
  22. data/app/assets/javascripts/blocks/ruby.js.coffee.erb +74 -0
  23. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +241 -0
  24. data/app/assets/javascripts/blocks/sound.js.coffee.erb +75 -0
  25. data/{public/favicon.ico → app/assets/javascripts/collections/.keep} +0 -0
  26. data/app/assets/javascripts/collections/character_set.js.coffee +12 -0
  27. data/app/assets/javascripts/generators/ruby.js.coffee.erb +188 -0
  28. data/app/assets/javascripts/models/.keep +0 -0
  29. data/app/assets/javascripts/models/character.js.coffee +66 -0
  30. data/app/assets/javascripts/models/scene.js.coffee +5 -0
  31. data/app/assets/javascripts/models/source_code.js.coffee +64 -0
  32. data/app/assets/javascripts/routers/.keep +0 -0
  33. data/app/assets/javascripts/ruby_mode.js.coffee.erb +12 -0
  34. data/app/assets/javascripts/smalruby.js.coffee +97 -0
  35. data/app/assets/javascripts/views/.keep +0 -0
  36. data/app/assets/javascripts/views/character_modal_view.js.coffee +148 -0
  37. data/app/assets/javascripts/views/character_selector_view.js.coffee +109 -0
  38. data/app/assets/javascripts/views/main_menu_view.js.coffee +264 -0
  39. data/app/assets/stylesheets/editor.css.scss +318 -2
  40. data/app/assets/stylesheets/toolbox.css.scss.erb +62 -0
  41. data/app/assets/templates/.keep +0 -0
  42. data/app/controllers/application_controller.rb +19 -0
  43. data/app/controllers/editor_controller.rb +4 -0
  44. data/app/controllers/source_codes_controller.rb +8 -2
  45. data/app/helpers/application_helper.rb +1 -0
  46. data/app/helpers/editor_helper.rb +46 -0
  47. data/app/models/source_code.rb +49 -6
  48. data/app/views/editor/_block_tab.html.haml +53 -0
  49. data/app/views/editor/_character_modal.html.haml +53 -0
  50. data/app/views/editor/_toolbox.html.haml +384 -0
  51. data/app/views/editor/demo.html.erb +16 -0
  52. data/app/views/editor/index.html.haml +60 -0
  53. data/app/views/layouts/application.html.erb +7 -0
  54. data/config/application.rb +1 -0
  55. data/config/initializers/teaspoon.rb +79 -0
  56. data/config/routes.rb +4 -0
  57. data/lib/smalruby_editor/version.rb +1 -1
  58. data/lib/tasks/gem.rake +7 -4
  59. data/lib/tasks/release.rake +43 -0
  60. data/public/apple-touch-icon.png +0 -0
  61. data/public/blockly/media/1x1.gif +0 -0
  62. data/public/blockly/media/click.mp3 +0 -0
  63. data/public/blockly/media/click.ogg +0 -0
  64. data/public/blockly/media/click.wav +0 -0
  65. data/public/blockly/media/delete.mp3 +0 -0
  66. data/public/blockly/media/delete.ogg +0 -0
  67. data/public/blockly/media/delete.wav +0 -0
  68. data/public/blockly/media/handclosed.cur +0 -0
  69. data/public/blockly/media/handopen.cur +0 -0
  70. data/public/blockly/media/quote0.png +0 -0
  71. data/public/blockly/media/quote1.png +0 -0
  72. data/public/blockly/media/trashbody.png +0 -0
  73. data/public/blockly/media/trashlid.png +0 -0
  74. data/public/blockly/media/tree.png +0 -0
  75. data/public/browserconfig.xml +1 -0
  76. data/public/large.png +0 -0
  77. data/public/smalruby/assets/ball1.png +0 -0
  78. data/public/smalruby/assets/ball2.png +0 -0
  79. data/public/smalruby/assets/ball3.png +0 -0
  80. data/public/smalruby/assets/ball4.png +0 -0
  81. data/public/smalruby/assets/ball5.png +0 -0
  82. data/public/smalruby/assets/ball6.png +0 -0
  83. data/public/smalruby/assets/car1.png +0 -0
  84. data/public/smalruby/assets/car2.png +0 -0
  85. data/public/smalruby/assets/car3.png +0 -0
  86. data/public/smalruby/assets/car4.png +0 -0
  87. data/public/smalruby/assets/cat1.png +0 -0
  88. data/public/smalruby/assets/cat2.png +0 -0
  89. data/public/smalruby/assets/cat3.png +0 -0
  90. data/public/smalruby/assets/frog1.png +0 -0
  91. data/public/smalruby/assets/piano_do.wav +0 -0
  92. data/public/smalruby/assets/piano_do_2.wav +0 -0
  93. data/public/smalruby/assets/piano_fa.wav +0 -0
  94. data/public/smalruby/assets/piano_mi.wav +0 -0
  95. data/public/smalruby/assets/piano_ra.wav +0 -0
  96. data/public/smalruby/assets/piano_re.wav +0 -0
  97. data/public/smalruby/assets/piano_si.wav +0 -0
  98. data/public/smalruby/assets/piano_so.wav +0 -0
  99. data/public/square.png +0 -0
  100. data/public/tiny.png +0 -0
  101. data/public/wide.png +0 -0
  102. data/smalruby-editor.gemspec +4 -0
  103. data/spec/acceptance/block_mode/blocks/character/new.feature +136 -0
  104. data/spec/acceptance/block_mode/blocks/control/await.feature +20 -0
  105. data/spec/acceptance/block_mode/blocks/control/await_until.feature +39 -0
  106. data/spec/acceptance/block_mode/blocks/control/break.feature +20 -0
  107. data/spec/acceptance/block_mode/blocks/control/if.feature +68 -0
  108. data/spec/acceptance/block_mode/blocks/control/if_else.feature +78 -0
  109. data/spec/acceptance/block_mode/blocks/control/loop.feature +45 -0
  110. data/spec/acceptance/block_mode/blocks/control/next.feature +20 -0
  111. data/spec/acceptance/block_mode/blocks/control/redo.feature +20 -0
  112. data/spec/acceptance/block_mode/blocks/control/sleep.feature +41 -0
  113. data/spec/acceptance/block_mode/blocks/control/times.feature +72 -0
  114. data/spec/acceptance/block_mode/blocks/control/until.feature +68 -0
  115. data/spec/acceptance/block_mode/blocks/events/on_click.feature +75 -0
  116. data/spec/acceptance/block_mode/blocks/events/on_hit.feature +83 -0
  117. data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +171 -0
  118. data/spec/acceptance/block_mode/blocks/events/on_start.feature +75 -0
  119. data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +44 -0
  120. data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +75 -0
  121. data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +75 -0
  122. data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +81 -0
  123. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +81 -0
  124. data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +87 -0
  125. data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +100 -0
  126. data/spec/acceptance/block_mode/blocks/looks/hide.feature +69 -0
  127. data/spec/acceptance/block_mode/blocks/looks/say.feature +106 -0
  128. data/spec/acceptance/block_mode/blocks/looks/show.feature +69 -0
  129. data/spec/acceptance/block_mode/blocks/looks/vanish.feature +69 -0
  130. data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +81 -0
  131. data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +81 -0
  132. data/spec/acceptance/block_mode/blocks/motion/move.feature +81 -0
  133. data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +98 -0
  134. data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +81 -0
  135. data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +81 -0
  136. data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +92 -0
  137. data/spec/acceptance/block_mode/blocks/motion/self_x.feature +92 -0
  138. data/spec/acceptance/block_mode/blocks/motion/self_y.feature +92 -0
  139. data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +81 -0
  140. data/spec/acceptance/block_mode/blocks/motion/set_x.feature +81 -0
  141. data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +95 -0
  142. data/spec/acceptance/block_mode/blocks/motion/set_y.feature +81 -0
  143. data/spec/acceptance/block_mode/blocks/motion/turn.feature +69 -0
  144. data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +69 -0
  145. data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +114 -0
  146. data/spec/acceptance/block_mode/blocks/sensing/hit.feature +110 -0
  147. data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +91 -0
  148. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +39 -0
  149. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +39 -0
  150. data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +91 -0
  151. data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +43 -0
  152. data/spec/acceptance/block_mode/blocks/sound/play.feature +81 -0
  153. data/spec/acceptance/block_mode/demo.feature +49 -0
  154. data/spec/acceptance/{text_editor → ruby_mode}/base.feature +11 -2
  155. data/spec/acceptance/{standalone → ruby_mode}/check.feature +8 -9
  156. data/spec/acceptance/ruby_mode/download.feature +33 -0
  157. data/spec/acceptance/{text_editor → ruby_mode}/load.feature +13 -13
  158. data/spec/acceptance/standalone/run.feature +17 -0
  159. data/spec/acceptance/standalone/save.feature +6 -6
  160. data/spec/helpers/editor_helper_spec.rb +110 -10
  161. data/spec/javascripts/collections/character_set_spec.coffee +41 -0
  162. data/spec/javascripts/models/character_spec.coffee +146 -0
  163. data/spec/javascripts/models/scene_spec.coffee +15 -0
  164. data/spec/javascripts/spec_helper.js +29 -0
  165. data/spec/spec_helper.rb +3 -8
  166. data/spec/steps/block_mode_steps.rb +37 -0
  167. data/spec/steps/global_variable.rb +30 -6
  168. data/spec/steps/text_editor_steps.rb +20 -2
  169. data/spec/teaspoon_env.rb +46 -0
  170. data/vendor/assets/javascripts/blockly/blockly_compressed.js +992 -0
  171. data/vendor/assets/javascripts/blockly/blocks_compressed.js +129 -0
  172. data/vendor/assets/javascripts/blockly/msg/js/ja.js +377 -0
  173. data/vendor/assets/javascripts/jquery.blockUI.js +619 -0
  174. metadata +290 -23
  175. data/app/assets/javascripts/editor.js.coffee.erb +0 -137
  176. data/app/views/editor/index.html.erb +0 -22
  177. data/spec/acceptance/text_editor/check.feature +0 -29
  178. data/spec/acceptance/text_editor/save.feature +0 -34
  179. data/spec/support/assets.rb +0 -18
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_led_off - 「LED[▼ピン]をオフにする」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_led_off", :x => "0", :y => "0"}
11
+ %field{:name => "PIN"}<
12
+ D13
13
+ """
14
+ かつ ブロックからソースコードを生成する
15
+
16
+ ならば テキストエディタのプログラムは "" であること
17
+
18
+ シナリオ: キャラクターとブロックを配置する
19
+ 前提 "ブロック" タブを表示する
20
+ かつ 次のキャラクターを追加する:
21
+ | name | costumes | x | y | angle |
22
+ | car1 | car1.png | 0 | 0 | 0 |
23
+
24
+ もし 次のブロックを配置する:
25
+ """
26
+ %block{:type => "character_new", :x => "21", :y => "15"}
27
+ %field{:name => "NAME"}<
28
+ car1
29
+ %statement{:name => "DO"}
30
+ %block{:type => "hardware_led_off", :x => "0", :y => "0"}
31
+ %field{:name => "PIN"}<
32
+ D13
33
+ """
34
+ かつ ブロックからソースコードを生成する
35
+
36
+ ならば テキストエディタのプログラムは以下であること:
37
+ """
38
+ require "smalruby"
39
+
40
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
41
+ car1.led("D13").off
42
+
43
+ """
44
+
45
+ シナリオ: キャラクターとイベントとブロックを配置する
46
+ 前提 "ブロック" タブを表示する
47
+ かつ 次のキャラクターを追加する:
48
+ | name | costumes | x | y | angle |
49
+ | car1 | car1.png | 0 | 0 | 0 |
50
+
51
+ もし 次のブロックを配置する:
52
+ """
53
+ %block{:type => "character_new", :x => "21", :y => "15"}
54
+ %field{:name => "NAME"}<
55
+ car1
56
+ %statement{:name => "DO"}
57
+ %block{:type => "events_on_start"}
58
+ %statement{:name => "DO"}
59
+ %block{:type => "hardware_led_off", :x => "0", :y => "0"}
60
+ %field{:name => "PIN"}<
61
+ D13
62
+ """
63
+ かつ ブロックからソースコードを生成する
64
+
65
+ ならば テキストエディタのプログラムは以下であること:
66
+ """
67
+ require "smalruby"
68
+
69
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
70
+
71
+ car1.on(:start) do
72
+ led("D13").off
73
+ end
74
+
75
+ """
@@ -0,0 +1,75 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_led_on - 「LED[▼ピン]をオンにする」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_led_on", :x => "0", :y => "0"}
11
+ %field{:name => "PIN"}<
12
+ D13
13
+ """
14
+ かつ ブロックからソースコードを生成する
15
+
16
+ ならば テキストエディタのプログラムは "" であること
17
+
18
+ シナリオ: キャラクターとブロックを配置する
19
+ 前提 "ブロック" タブを表示する
20
+ かつ 次のキャラクターを追加する:
21
+ | name | costumes | x | y | angle |
22
+ | car1 | car1.png | 0 | 0 | 0 |
23
+
24
+ もし 次のブロックを配置する:
25
+ """
26
+ %block{:type => "character_new", :x => "21", :y => "15"}
27
+ %field{:name => "NAME"}<
28
+ car1
29
+ %statement{:name => "DO"}
30
+ %block{:type => "hardware_led_on", :x => "0", :y => "0"}
31
+ %field{:name => "PIN"}<
32
+ D13
33
+ """
34
+ かつ ブロックからソースコードを生成する
35
+
36
+ ならば テキストエディタのプログラムは以下であること:
37
+ """
38
+ require "smalruby"
39
+
40
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
41
+ car1.led("D13").on
42
+
43
+ """
44
+
45
+ シナリオ: キャラクターとイベントとブロックを配置する
46
+ 前提 "ブロック" タブを表示する
47
+ かつ 次のキャラクターを追加する:
48
+ | name | costumes | x | y | angle |
49
+ | car1 | car1.png | 0 | 0 | 0 |
50
+
51
+ もし 次のブロックを配置する:
52
+ """
53
+ %block{:type => "character_new", :x => "21", :y => "15"}
54
+ %field{:name => "NAME"}<
55
+ car1
56
+ %statement{:name => "DO"}
57
+ %block{:type => "events_on_start"}
58
+ %statement{:name => "DO"}
59
+ %block{:type => "hardware_led_on", :x => "0", :y => "0"}
60
+ %field{:name => "PIN"}<
61
+ D13
62
+ """
63
+ かつ ブロックからソースコードを生成する
64
+
65
+ ならば テキストエディタのプログラムは以下であること:
66
+ """
67
+ require "smalruby"
68
+
69
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
70
+
71
+ car1.on(:start) do
72
+ led("D13").on
73
+ end
74
+
75
+ """
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_on_sensor_change - 「センサー[▼ピン]が変化したとき」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_on_sensor_change", :x => "0", :y => "0"}
11
+ %field{:name => "PIN"}<
12
+ A0
13
+ """
14
+ かつ ブロックからソースコードを生成する
15
+
16
+ ならば テキストエディタのプログラムは "" であること
17
+
18
+ シナリオ: キャラクターとブロックを配置する
19
+ 前提 "ブロック" タブを表示する
20
+ かつ 次のキャラクターを追加する:
21
+ | name | costumes | x | y | angle |
22
+ | car1 | car1.png | 0 | 0 | 0 |
23
+
24
+ もし 次のブロックを配置する:
25
+ """
26
+ %block{:type => "character_new", :x => "21", :y => "15"}
27
+ %field{:name => "NAME"}<
28
+ car1
29
+ %statement{:name => "DO"}
30
+ %block{:type => "hardware_on_sensor_change", :x => "0", :y => "0"}
31
+ %field{:name => "PIN"}<
32
+ A0
33
+ """
34
+ かつ ブロックからソースコードを生成する
35
+
36
+ ならば テキストエディタのプログラムは以下であること:
37
+ """
38
+ require "smalruby"
39
+
40
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
41
+
42
+ car1.on(:sensor_change, "A0") do
43
+
44
+ end
45
+
46
+ """
47
+
48
+ シナリオ: キャラクターとイベントとブロックを配置する
49
+ 前提 "ブロック" タブを表示する
50
+ かつ 次のキャラクターを追加する:
51
+ | name | costumes | x | y | angle |
52
+ | car1 | car1.png | 0 | 0 | 0 |
53
+
54
+ もし 次のブロックを配置する:
55
+ """
56
+ %block{:type => "character_new", :x => "21", :y => "15"}
57
+ %field{:name => "NAME"}<
58
+ car1
59
+ %statement{:name => "DO"}
60
+ %block{:type => "events_on_start"}
61
+ %statement{:name => "DO"}
62
+ %block{:type => "hardware_on_sensor_change", :x => "0", :y => "0"}
63
+ %field{:name => "PIN"}<
64
+ A0
65
+ """
66
+ かつ ブロックからソースコードを生成する
67
+
68
+ ならば テキストエディタのプログラムは以下であること:
69
+ """
70
+ require "smalruby"
71
+
72
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
73
+
74
+ car1.on(:start) do
75
+
76
+ on(:sensor_change, "A0") do
77
+
78
+ end
79
+ end
80
+
81
+ """
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_rgb_led_off - 「RGB LED[▼ピン]をオフにする」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_rgb_led_off", :x => "0", :y => "0"}
11
+ %field{:name => "AC"}<
12
+ anode
13
+ %field{:name => "PIN"}<
14
+ D3
15
+ """
16
+ かつ ブロックからソースコードを生成する
17
+
18
+ ならば テキストエディタのプログラムは "" であること
19
+
20
+ シナリオ: キャラクターとブロックを配置する
21
+ 前提 "ブロック" タブを表示する
22
+ かつ 次のキャラクターを追加する:
23
+ | name | costumes | x | y | angle |
24
+ | car1 | car1.png | 0 | 0 | 0 |
25
+
26
+ もし 次のブロックを配置する:
27
+ """
28
+ %block{:type => "character_new", :x => "21", :y => "15"}
29
+ %field{:name => "NAME"}<
30
+ car1
31
+ %statement{:name => "DO"}
32
+ %block{:type => "hardware_rgb_led_off", :x => "0", :y => "0"}
33
+ %field{:name => "AC"}<
34
+ anode
35
+ %field{:name => "PIN"}<
36
+ D3
37
+ """
38
+ かつ ブロックからソースコードを生成する
39
+
40
+ ならば テキストエディタのプログラムは以下であること:
41
+ """
42
+ require "smalruby"
43
+
44
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
45
+ car1.rgb_led_anode("D3").off
46
+
47
+ """
48
+
49
+ シナリオ: キャラクターとイベントとブロックを配置する
50
+ 前提 "ブロック" タブを表示する
51
+ かつ 次のキャラクターを追加する:
52
+ | name | costumes | x | y | angle |
53
+ | car1 | car1.png | 0 | 0 | 0 |
54
+
55
+ もし 次のブロックを配置する:
56
+ """
57
+ %block{:type => "character_new", :x => "21", :y => "15"}
58
+ %field{:name => "NAME"}<
59
+ car1
60
+ %statement{:name => "DO"}
61
+ %block{:type => "events_on_start"}
62
+ %statement{:name => "DO"}
63
+ %block{:type => "hardware_rgb_led_off", :x => "0", :y => "0"}
64
+ %field{:name => "AC"}<
65
+ anode
66
+ %field{:name => "PIN"}<
67
+ D3
68
+ """
69
+ かつ ブロックからソースコードを生成する
70
+
71
+ ならば テキストエディタのプログラムは以下であること:
72
+ """
73
+ require "smalruby"
74
+
75
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
76
+
77
+ car1.on(:start) do
78
+ rgb_led_anode("D3").off
79
+ end
80
+
81
+ """
@@ -0,0 +1,87 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_rgb_led_on - 「RGB LED[▼ピン]を[カラー]にする」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_rgb_led_on", :x => "0", :y => "0"}
11
+ %field{:name => "AC"}<
12
+ anode
13
+ %field{:name => "PIN"}<
14
+ D3
15
+ %field{:name => "COLOUR"}<
16
+ \#808080
17
+ """
18
+ かつ ブロックからソースコードを生成する
19
+
20
+ ならば テキストエディタのプログラムは "" であること
21
+
22
+ シナリオ: キャラクターとブロックを配置する
23
+ 前提 "ブロック" タブを表示する
24
+ かつ 次のキャラクターを追加する:
25
+ | name | costumes | x | y | angle |
26
+ | car1 | car1.png | 0 | 0 | 0 |
27
+
28
+ もし 次のブロックを配置する:
29
+ """
30
+ %block{:type => "character_new", :x => "21", :y => "15"}
31
+ %field{:name => "NAME"}<
32
+ car1
33
+ %statement{:name => "DO"}
34
+ %block{:type => "hardware_rgb_led_on", :x => "0", :y => "0"}
35
+ %field{:name => "AC"}<
36
+ anode
37
+ %field{:name => "PIN"}<
38
+ D3
39
+ %field{:name => "COLOUR"}<
40
+ \#808080
41
+ """
42
+ かつ ブロックからソースコードを生成する
43
+
44
+ ならば テキストエディタのプログラムは以下であること:
45
+ """
46
+ require "smalruby"
47
+
48
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
49
+ car1.rgb_led_anode("D3").on(color: [128, 128, 128])
50
+
51
+ """
52
+
53
+ シナリオ: キャラクターとイベントとブロックを配置する
54
+ 前提 "ブロック" タブを表示する
55
+ かつ 次のキャラクターを追加する:
56
+ | name | costumes | x | y | angle |
57
+ | car1 | car1.png | 0 | 0 | 0 |
58
+
59
+ もし 次のブロックを配置する:
60
+ """
61
+ %block{:type => "character_new", :x => "21", :y => "15"}
62
+ %field{:name => "NAME"}<
63
+ car1
64
+ %statement{:name => "DO"}
65
+ %block{:type => "events_on_start"}
66
+ %statement{:name => "DO"}
67
+ %block{:type => "hardware_rgb_led_on", :x => "0", :y => "0"}
68
+ %field{:name => "AC"}<
69
+ anode
70
+ %field{:name => "PIN"}<
71
+ D3
72
+ %field{:name => "COLOUR"}<
73
+ \#808080
74
+ """
75
+ かつ ブロックからソースコードを生成する
76
+
77
+ ならば テキストエディタのプログラムは以下であること:
78
+ """
79
+ require "smalruby"
80
+
81
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
82
+
83
+ car1.on(:start) do
84
+ rgb_led_anode("D3").on(color: [128, 128, 128])
85
+ end
86
+
87
+ """
@@ -0,0 +1,100 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: hardware_sensor_value - 「センサー[▼ピン]」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "hardware_sensor_value", :x => "0", :y => "0"}
11
+ %field{:name => "PIN"}<
12
+ A0
13
+ """
14
+ かつ ブロックからソースコードを生成する
15
+
16
+ ならば テキストエディタのプログラムは "" であること
17
+
18
+ シナリオ: 文とブロックを配置する
19
+ 前提 "ブロック" タブを表示する
20
+
21
+ もし 次のブロックを配置する:
22
+ """
23
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
24
+ %value{:name => "ARG"}
25
+ %block{:type => "hardware_sensor_value", :x => "0", :y => "0"}
26
+ %field{:name => "PIN"}<
27
+ A0
28
+ """
29
+ かつ ブロックからソースコードを生成する
30
+
31
+ ならば テキストエディタのプログラムは以下であること:
32
+ """
33
+ require "smalruby"
34
+
35
+ p("")
36
+
37
+ """
38
+
39
+ シナリオ: キャラクターとブロックを配置する
40
+ 前提 "ブロック" タブを表示する
41
+ かつ 次のキャラクターを追加する:
42
+ | name | costumes | x | y | angle |
43
+ | car1 | car1.png | 0 | 0 | 0 |
44
+
45
+ もし 次のブロックを配置する:
46
+ """
47
+ %block{:type => "character_new", :x => "21", :y => "15"}
48
+ %field{:name => "NAME"}<
49
+ car1
50
+ %statement{:name => "DO"}
51
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
52
+ %value{:name => "ARG"}
53
+ %block{:type => "hardware_sensor_value", :x => "0", :y => "0"}
54
+ %field{:name => "PIN"}<
55
+ A0
56
+ """
57
+ かつ ブロックからソースコードを生成する
58
+
59
+ ならば テキストエディタのプログラムは以下であること:
60
+ """
61
+ require "smalruby"
62
+
63
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
64
+ p(car1.sensor("A0").value)
65
+
66
+ """
67
+
68
+ シナリオ: キャラクターとイベントとブロックを配置する
69
+ 前提 "ブロック" タブを表示する
70
+ かつ 次のキャラクターを追加する:
71
+ | name | costumes | x | y | angle |
72
+ | car1 | car1.png | 0 | 0 | 0 |
73
+
74
+ もし 次のブロックを配置する:
75
+ """
76
+ %block{:type => "character_new", :x => "21", :y => "15"}
77
+ %field{:name => "NAME"}<
78
+ car1
79
+ %statement{:name => "DO"}
80
+ %block{:type => "events_on_start"}
81
+ %statement{:name => "DO"}
82
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
83
+ %value{:name => "ARG"}
84
+ %block{:type => "hardware_sensor_value", :x => "0", :y => "0"}
85
+ %field{:name => "PIN"}<
86
+ A0
87
+ """
88
+ かつ ブロックからソースコードを生成する
89
+
90
+ ならば テキストエディタのプログラムは以下であること:
91
+ """
92
+ require "smalruby"
93
+
94
+ car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
95
+
96
+ car1.on(:start) do
97
+ p(sensor("A0").value)
98
+ end
99
+
100
+ """