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,20 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_await - 「1フレーム待つ」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_await", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ await
19
+
20
+ """
@@ -0,0 +1,39 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_await_until - 「< >まで待つ」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_await_until", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ await until true
19
+
20
+ """
21
+
22
+ シナリオ: 値を設定したブロックを配置する
23
+ 前提 "ブロック" タブを表示する
24
+
25
+ もし 次のブロックを配置する:
26
+ """
27
+ %block{:type => "control_await_until", :x => "0", :y => "0"}
28
+ %value{:name => "COND"}
29
+ %block{:type => "operators_false"}
30
+ """
31
+ かつ ブロックからソースコードを生成する
32
+
33
+ ならば テキストエディタのプログラムは以下であること:
34
+ """
35
+ require "smalruby"
36
+
37
+ await until false
38
+
39
+ """
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_break - 「繰り返しから脱出する」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_break", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ break
19
+
20
+ """
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_if - 「もし< >なら」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_if", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ if false
19
+
20
+ end
21
+
22
+ """
23
+
24
+ シナリオ: 値を設定したブロックを配置する
25
+ 前提 "ブロック" タブを表示する
26
+
27
+ もし 次のブロックを配置する:
28
+ """
29
+ %block{:type => "control_if", :x => "0", :y => "0"}
30
+ %value{:name => "COND"}
31
+ %block{:type => "operators_true"}
32
+ """
33
+ かつ ブロックからソースコードを生成する
34
+
35
+ ならば テキストエディタのプログラムは以下であること:
36
+ """
37
+ require "smalruby"
38
+
39
+ if true
40
+
41
+ end
42
+
43
+ """
44
+
45
+ シナリオ: ブロックとその内部に文を配置する
46
+ 前提 "ブロック" タブを表示する
47
+
48
+ もし 次のブロックを配置する:
49
+ """
50
+ %block{:type => "control_if", :x => "0", :y => "0"}
51
+ %value{:name => "COND"}
52
+ %block{:type => "operators_true"}
53
+ %statement{:name => "THEN"}
54
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
55
+ %field{:name => "STATEMENT"}<
56
+ p self
57
+ """
58
+ かつ ブロックからソースコードを生成する
59
+
60
+ ならば テキストエディタのプログラムは以下であること:
61
+ """
62
+ require "smalruby"
63
+
64
+ if true
65
+ p self
66
+ end
67
+
68
+ """
@@ -0,0 +1,78 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_if_else - 「もし< >なら~でなければ」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_if_else", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ if false
19
+
20
+ else
21
+
22
+ end
23
+
24
+ """
25
+
26
+ シナリオ: 値を設定したブロックを配置する
27
+ 前提 "ブロック" タブを表示する
28
+
29
+ もし 次のブロックを配置する:
30
+ """
31
+ %block{:type => "control_if_else", :x => "0", :y => "0"}
32
+ %value{:name => "COND"}
33
+ %block{:type => "operators_true"}
34
+ """
35
+ かつ ブロックからソースコードを生成する
36
+
37
+ ならば テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ if true
42
+
43
+ else
44
+
45
+ end
46
+
47
+ """
48
+
49
+ シナリオ: ブロックとその内部に文を配置する
50
+ 前提 "ブロック" タブを表示する
51
+
52
+ もし 次のブロックを配置する:
53
+ """
54
+ %block{:type => "control_if_else", :x => "0", :y => "0"}
55
+ %value{:name => "COND"}
56
+ %block{:type => "operators_true"}
57
+ %statement{:name => "THEN"}
58
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
59
+ %field{:name => "STATEMENT"}<
60
+ p self
61
+ %statement{:name => "ELSE"}
62
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
63
+ %field{:name => "STATEMENT"}<
64
+ p self.class
65
+ """
66
+ かつ ブロックからソースコードを生成する
67
+
68
+ ならば テキストエディタのプログラムは以下であること:
69
+ """
70
+ require "smalruby"
71
+
72
+ if true
73
+ p self
74
+ else
75
+ p self.class
76
+ end
77
+
78
+ """
@@ -0,0 +1,45 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_loop - 「ずっと」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_loop", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ loop do
19
+
20
+ end
21
+
22
+ """
23
+
24
+ シナリオ: ブロックとその内側に文を配置する
25
+ 前提 "ブロック" タブを表示する
26
+
27
+ もし 次のブロックを配置する:
28
+ """
29
+ %block{:type => "control_loop", :x => "0", :y => "0"}
30
+ %statement{:name => "DO"}
31
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
32
+ %field{:name => "STATEMENT"}<
33
+ p self
34
+ """
35
+ かつ ブロックからソースコードを生成する
36
+
37
+ ならば テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ loop do
42
+ p self
43
+ end
44
+
45
+ """
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_next - 「次の繰り返しにジャンプする」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_next", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ next
19
+
20
+ """
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_redo - 「現在の繰り返しをやり直す」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_redo", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ redo
19
+
20
+ """
@@ -0,0 +1,41 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_sleep - 「( )秒待つ」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_sleep", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ sleep(0)
19
+
20
+ """
21
+
22
+ シナリオ: 値を設定したブロックを配置する
23
+ 前提 "ブロック" タブを表示する
24
+
25
+ もし 次のブロックを配置する:
26
+ """
27
+ %block{:type => "control_sleep", :x => "0", :y => "0"}
28
+ %value{:name => "SEC"}
29
+ %block{:type => "math_number"}
30
+ %field{:name => "NUM"}<
31
+ 10
32
+ """
33
+ かつ ブロックからソースコードを生成する
34
+
35
+ ならば テキストエディタのプログラムは以下であること:
36
+ """
37
+ require "smalruby"
38
+
39
+ sleep(10)
40
+
41
+ """
@@ -0,0 +1,72 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_times - 「( )回繰り返す」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_times", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ 0.times do
19
+
20
+ end
21
+
22
+ """
23
+
24
+ シナリオ: 値を設定したブロックを配置する
25
+ 前提 "ブロック" タブを表示する
26
+
27
+ もし 次のブロックを配置する:
28
+ """
29
+ %block{:type => "control_times", :x => "0", :y => "0"}
30
+ %value{:name => "COUNT"}
31
+ %block{:type => "math_number"}
32
+ %field{:name => "NUM"}<
33
+ 10
34
+ """
35
+ かつ ブロックからソースコードを生成する
36
+
37
+ ならば テキストエディタのプログラムは以下であること:
38
+ """
39
+ require "smalruby"
40
+
41
+ 10.times do
42
+
43
+ end
44
+
45
+ """
46
+
47
+ シナリオ: ブロックとその内側に文を配置する
48
+ 前提 "ブロック" タブを表示する
49
+
50
+ もし 次のブロックを配置する:
51
+ """
52
+ %block{:type => "control_times", :x => "0", :y => "0"}
53
+ %value{:name => "COUNT"}
54
+ %block{:type => "math_number"}
55
+ %field{:name => "NUM"}<
56
+ 10
57
+ %statement{:name => "DO"}
58
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
59
+ %field{:name => "STATEMENT"}<
60
+ p self
61
+ """
62
+ かつ ブロックからソースコードを生成する
63
+
64
+ ならば テキストエディタのプログラムは以下であること:
65
+ """
66
+ require "smalruby"
67
+
68
+ 10.times do
69
+ p self
70
+ end
71
+
72
+ """
@@ -0,0 +1,68 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: control_until - 「< >まで繰り返す」ブロック
5
+ シナリオ: ブロックのみ配置する
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ もし 次のブロックを配置する:
9
+ """
10
+ %block{:type => "control_until", :x => "0", :y => "0"}
11
+ """
12
+ かつ ブロックからソースコードを生成する
13
+
14
+ ならば テキストエディタのプログラムは以下であること:
15
+ """
16
+ require "smalruby"
17
+
18
+ until true
19
+
20
+ end
21
+
22
+ """
23
+
24
+ シナリオ: 値を設定したブロックを配置する
25
+ 前提 "ブロック" タブを表示する
26
+
27
+ もし 次のブロックを配置する:
28
+ """
29
+ %block{:type => "control_until", :x => "0", :y => "0"}
30
+ %value{:name => "COND"}
31
+ %block{:type => "operators_false"}
32
+ """
33
+ かつ ブロックからソースコードを生成する
34
+
35
+ ならば テキストエディタのプログラムは以下であること:
36
+ """
37
+ require "smalruby"
38
+
39
+ until false
40
+
41
+ end
42
+
43
+ """
44
+
45
+ シナリオ: ブロックとその内部に文を配置する
46
+ 前提 "ブロック" タブを表示する
47
+
48
+ もし 次のブロックを配置する:
49
+ """
50
+ %block{:type => "control_until", :x => "0", :y => "0"}
51
+ %value{:name => "COND"}
52
+ %block{:type => "operators_false"}
53
+ %statement{:name => "DO"}
54
+ %block{:type => "ruby_statement", :x => "0", :y => "0"}
55
+ %field{:name => "STATEMENT"}<
56
+ p self
57
+ """
58
+ かつ ブロックからソースコードを生成する
59
+
60
+ ならば テキストエディタのプログラムは以下であること:
61
+ """
62
+ require "smalruby"
63
+
64
+ until false
65
+ p self
66
+ end
67
+
68
+ """