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.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/.travis.yml +2 -0
- data/LEGAL +32 -0
- data/Rakefile +1 -1
- data/app/assets/demos/default.xml +126 -0
- data/app/assets/demos/rgb_led_anode.xml +83 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/javascripts/application.js +18 -1
- data/app/assets/javascripts/block_mode.js.coffee.erb +10 -0
- data/app/assets/javascripts/blocks/blockly.js.coffee.erb +34 -0
- data/app/assets/javascripts/blocks/character.js.coffee.erb +76 -0
- data/app/assets/javascripts/blocks/control.js.coffee.erb +180 -0
- data/app/assets/javascripts/blocks/data.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/etc.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/events.js.coffee.erb +82 -0
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +313 -0
- data/app/assets/javascripts/blocks/looks.js.coffee.erb +163 -0
- data/app/assets/javascripts/blocks/motion.js.coffee.erb +297 -0
- data/app/assets/javascripts/blocks/operators.js.coffee.erb +279 -0
- data/app/assets/javascripts/blocks/pen.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/ruby.js.coffee.erb +74 -0
- data/app/assets/javascripts/blocks/sensing.js.coffee.erb +241 -0
- data/app/assets/javascripts/blocks/sound.js.coffee.erb +75 -0
- data/{public/favicon.ico → app/assets/javascripts/collections/.keep} +0 -0
- data/app/assets/javascripts/collections/character_set.js.coffee +12 -0
- data/app/assets/javascripts/generators/ruby.js.coffee.erb +188 -0
- data/app/assets/javascripts/models/.keep +0 -0
- data/app/assets/javascripts/models/character.js.coffee +66 -0
- data/app/assets/javascripts/models/scene.js.coffee +5 -0
- data/app/assets/javascripts/models/source_code.js.coffee +64 -0
- data/app/assets/javascripts/routers/.keep +0 -0
- data/app/assets/javascripts/ruby_mode.js.coffee.erb +12 -0
- data/app/assets/javascripts/smalruby.js.coffee +97 -0
- data/app/assets/javascripts/views/.keep +0 -0
- data/app/assets/javascripts/views/character_modal_view.js.coffee +148 -0
- data/app/assets/javascripts/views/character_selector_view.js.coffee +109 -0
- data/app/assets/javascripts/views/main_menu_view.js.coffee +264 -0
- data/app/assets/stylesheets/editor.css.scss +318 -2
- data/app/assets/stylesheets/toolbox.css.scss.erb +62 -0
- data/app/assets/templates/.keep +0 -0
- data/app/controllers/application_controller.rb +19 -0
- data/app/controllers/editor_controller.rb +4 -0
- data/app/controllers/source_codes_controller.rb +8 -2
- data/app/helpers/application_helper.rb +1 -0
- data/app/helpers/editor_helper.rb +46 -0
- data/app/models/source_code.rb +49 -6
- data/app/views/editor/_block_tab.html.haml +53 -0
- data/app/views/editor/_character_modal.html.haml +53 -0
- data/app/views/editor/_toolbox.html.haml +384 -0
- data/app/views/editor/demo.html.erb +16 -0
- data/app/views/editor/index.html.haml +60 -0
- data/app/views/layouts/application.html.erb +7 -0
- data/config/application.rb +1 -0
- data/config/initializers/teaspoon.rb +79 -0
- data/config/routes.rb +4 -0
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/tasks/gem.rake +7 -4
- data/lib/tasks/release.rake +43 -0
- data/public/apple-touch-icon.png +0 -0
- data/public/blockly/media/1x1.gif +0 -0
- data/public/blockly/media/click.mp3 +0 -0
- data/public/blockly/media/click.ogg +0 -0
- data/public/blockly/media/click.wav +0 -0
- data/public/blockly/media/delete.mp3 +0 -0
- data/public/blockly/media/delete.ogg +0 -0
- data/public/blockly/media/delete.wav +0 -0
- data/public/blockly/media/handclosed.cur +0 -0
- data/public/blockly/media/handopen.cur +0 -0
- data/public/blockly/media/quote0.png +0 -0
- data/public/blockly/media/quote1.png +0 -0
- data/public/blockly/media/trashbody.png +0 -0
- data/public/blockly/media/trashlid.png +0 -0
- data/public/blockly/media/tree.png +0 -0
- data/public/browserconfig.xml +1 -0
- data/public/large.png +0 -0
- data/public/smalruby/assets/ball1.png +0 -0
- data/public/smalruby/assets/ball2.png +0 -0
- data/public/smalruby/assets/ball3.png +0 -0
- data/public/smalruby/assets/ball4.png +0 -0
- data/public/smalruby/assets/ball5.png +0 -0
- data/public/smalruby/assets/ball6.png +0 -0
- data/public/smalruby/assets/car1.png +0 -0
- data/public/smalruby/assets/car2.png +0 -0
- data/public/smalruby/assets/car3.png +0 -0
- data/public/smalruby/assets/car4.png +0 -0
- data/public/smalruby/assets/cat1.png +0 -0
- data/public/smalruby/assets/cat2.png +0 -0
- data/public/smalruby/assets/cat3.png +0 -0
- data/public/smalruby/assets/frog1.png +0 -0
- data/public/smalruby/assets/piano_do.wav +0 -0
- data/public/smalruby/assets/piano_do_2.wav +0 -0
- data/public/smalruby/assets/piano_fa.wav +0 -0
- data/public/smalruby/assets/piano_mi.wav +0 -0
- data/public/smalruby/assets/piano_ra.wav +0 -0
- data/public/smalruby/assets/piano_re.wav +0 -0
- data/public/smalruby/assets/piano_si.wav +0 -0
- data/public/smalruby/assets/piano_so.wav +0 -0
- data/public/square.png +0 -0
- data/public/tiny.png +0 -0
- data/public/wide.png +0 -0
- data/smalruby-editor.gemspec +4 -0
- data/spec/acceptance/block_mode/blocks/character/new.feature +136 -0
- data/spec/acceptance/block_mode/blocks/control/await.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/await_until.feature +39 -0
- data/spec/acceptance/block_mode/blocks/control/break.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/if.feature +68 -0
- data/spec/acceptance/block_mode/blocks/control/if_else.feature +78 -0
- data/spec/acceptance/block_mode/blocks/control/loop.feature +45 -0
- data/spec/acceptance/block_mode/blocks/control/next.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/redo.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/sleep.feature +41 -0
- data/spec/acceptance/block_mode/blocks/control/times.feature +72 -0
- data/spec/acceptance/block_mode/blocks/control/until.feature +68 -0
- data/spec/acceptance/block_mode/blocks/events/on_click.feature +75 -0
- data/spec/acceptance/block_mode/blocks/events/on_hit.feature +83 -0
- data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +171 -0
- data/spec/acceptance/block_mode/blocks/events/on_start.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +44 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +81 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +81 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +87 -0
- data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +100 -0
- data/spec/acceptance/block_mode/blocks/looks/hide.feature +69 -0
- data/spec/acceptance/block_mode/blocks/looks/say.feature +106 -0
- data/spec/acceptance/block_mode/blocks/looks/show.feature +69 -0
- data/spec/acceptance/block_mode/blocks/looks/vanish.feature +69 -0
- data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/move.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +98 -0
- data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/self_x.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/self_y.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/set_x.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +95 -0
- data/spec/acceptance/block_mode/blocks/motion/set_y.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/turn.feature +69 -0
- data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +69 -0
- data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +114 -0
- data/spec/acceptance/block_mode/blocks/sensing/hit.feature +110 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +91 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +39 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +39 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +91 -0
- data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +43 -0
- data/spec/acceptance/block_mode/blocks/sound/play.feature +81 -0
- data/spec/acceptance/block_mode/demo.feature +49 -0
- data/spec/acceptance/{text_editor → ruby_mode}/base.feature +11 -2
- data/spec/acceptance/{standalone → ruby_mode}/check.feature +8 -9
- data/spec/acceptance/ruby_mode/download.feature +33 -0
- data/spec/acceptance/{text_editor → ruby_mode}/load.feature +13 -13
- data/spec/acceptance/standalone/run.feature +17 -0
- data/spec/acceptance/standalone/save.feature +6 -6
- data/spec/helpers/editor_helper_spec.rb +110 -10
- data/spec/javascripts/collections/character_set_spec.coffee +41 -0
- data/spec/javascripts/models/character_spec.coffee +146 -0
- data/spec/javascripts/models/scene_spec.coffee +15 -0
- data/spec/javascripts/spec_helper.js +29 -0
- data/spec/spec_helper.rb +3 -8
- data/spec/steps/block_mode_steps.rb +37 -0
- data/spec/steps/global_variable.rb +30 -6
- data/spec/steps/text_editor_steps.rb +20 -2
- data/spec/teaspoon_env.rb +46 -0
- data/vendor/assets/javascripts/blockly/blockly_compressed.js +992 -0
- data/vendor/assets/javascripts/blockly/blocks_compressed.js +129 -0
- data/vendor/assets/javascripts/blockly/msg/js/ja.js +377 -0
- data/vendor/assets/javascripts/jquery.blockUI.js +619 -0
- metadata +290 -23
- data/app/assets/javascripts/editor.js.coffee.erb +0 -137
- data/app/views/editor/index.html.erb +0 -22
- data/spec/acceptance/text_editor/check.feature +0 -29
- data/spec/acceptance/text_editor/save.feature +0 -34
- 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
|
+
"""
|