smalruby-editor 0.1.1-x86-mingw32 → 0.1.2-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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/demos/default.xml +1 -1
  3. data/app/assets/javascripts/application.js +1 -0
  4. data/app/assets/javascripts/blocks/blockly.js.coffee.erb +1 -1
  5. data/app/assets/javascripts/blocks/events.js.coffee.erb +2 -3
  6. data/app/assets/javascripts/blocks/field_character.js.coffee.erb +108 -0
  7. data/app/assets/javascripts/blocks/hardware.js.coffee.erb +35 -2
  8. data/app/assets/javascripts/blocks/motion.js.coffee.erb +4 -4
  9. data/app/assets/javascripts/blocks/operators.js.coffee.erb +27 -29
  10. data/app/assets/javascripts/blocks/sensing.js.coffee.erb +4 -6
  11. data/app/assets/javascripts/generators/ruby.js.coffee.erb +21 -19
  12. data/app/assets/javascripts/models/character.js.coffee +21 -0
  13. data/app/assets/javascripts/views/character_modal_view.js.coffee +24 -3
  14. data/app/views/editor/_character_modal.html.haml +1 -1
  15. data/app/views/editor/_toolbox.html.haml +7 -3
  16. data/lib/smalruby_editor/version.rb +1 -1
  17. data/public/assets/{application-0c2ae32cd8822cec7ba6e445e2501010.js → application-735e172a0df828da16d22f5d3c26671f.js} +294 -59
  18. data/public/assets/{application-0c2ae32cd8822cec7ba6e445e2501010.js.gz → application-735e172a0df828da16d22f5d3c26671f.js.gz} +0 -0
  19. data/public/assets/{default-7f438ebd7f8ab6ef65c5b9744786e57f.xml → default-5d1886100d7c8961e9962bbc4bb0c714.xml} +1 -1
  20. data/public/assets/manifest-1f254fa92a71ba4faad0f99136daeed8.json +1 -1
  21. data/spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature +104 -0
  22. data/spec/acceptance/block_mode/blocks/operators/and_or.feature +61 -0
  23. data/spec/acceptance/block_mode/blocks/operators/four_arithmetic_and_compares.feature +85 -0
  24. data/spec/acceptance/block_mode/blocks/operators/index_of.feature +60 -0
  25. data/spec/acceptance/block_mode/blocks/operators/length.feature +52 -0
  26. data/spec/acceptance/block_mode/blocks/operators/math_method.feature +109 -0
  27. data/spec/acceptance/block_mode/blocks/operators/negate.feature +47 -0
  28. data/spec/acceptance/block_mode/blocks/operators/rand.feature +60 -0
  29. data/spec/acceptance/block_mode/blocks/operators/round.feature +52 -0
  30. data/spec/acceptance/block_mode/blocks/operators/true_false.feature +36 -0
  31. data/spec/acceptance/block_mode/blocks/ruby/expression.feature +36 -0
  32. data/spec/acceptance/block_mode/blocks/ruby/p.feature +34 -0
  33. data/spec/acceptance/block_mode/blocks/ruby/statement_comment.feature +25 -0
  34. data/spec/javascripts/models/character_spec.coffee +44 -5
  35. data/spec/steps/ace_steps.rb +9 -0
  36. data/spec/steps/block_mode_steps.rb +14 -0
  37. data/spec/steps/fix_turnip.rb +35 -0
  38. data/spec/steps/text_editor_steps.rb +1 -0
  39. data/spec/teaspoon_env.rb +1 -1
  40. data/spec/turnip_helper.rb +1 -0
  41. metadata +34 -5
@@ -0,0 +1,52 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: operators_round - 「変数:( )を丸める」ブロック
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ シナリオ: ブロックのみ配置する
9
+ もし 次のブロックを配置する:
10
+ """
11
+ %block{:type => "operators_round", :x => "0", :y => "0"}
12
+ """
13
+ かつ ブロックからソースコードを生成する
14
+
15
+ ならば テキストエディタのプログラムは以下を含むこと:
16
+ """
17
+ 0.round
18
+ """
19
+
20
+ シナリオ: 値を設定したブロックを配置する
21
+ もし 次のブロックを配置する:
22
+ """
23
+ %block{:type => "operators_round", :x => "0", :y => "0"}
24
+ %value{:name => "A"}
25
+ %block{:type => "math_number"}
26
+ %field{:name => "NUM"}<
27
+ 0.5
28
+ """
29
+ かつ ブロックからソースコードを生成する
30
+
31
+ ならば テキストエディタのプログラムは以下を含むこと:
32
+ """
33
+ 0.5.round
34
+ """
35
+
36
+ シナリオ: 文と値を設定したブロックを配置する
37
+ もし 次のブロックを配置する:
38
+ """
39
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true"}
40
+ %value{:name => "ARG"}
41
+ %block{:type => "operators_round"}
42
+ %value{:name => "A"}
43
+ %block{:type => "math_number"}
44
+ %field{:name => "NUM"}<
45
+ 0.5
46
+ """
47
+ かつ ブロックからソースコードを生成する
48
+
49
+ ならば テキストエディタのプログラムは以下を含むこと:
50
+ """
51
+ p(0.5.round)
52
+ """
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: operators_{true,false} - 「条件:{真,偽}」ブロック
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ シナリオテンプレート: ブロックを配置する
9
+ もし 次のブロック("operators_<ブロック名のサフィックス>")を配置する:
10
+ """
11
+ %block{:type => "operators_<ブロック名のサフィックス>", :x => "0", :y => "0", :inline => "true"}
12
+ """
13
+ かつ ブロックからソースコードを生成する
14
+
15
+ ならば テキストエディタのプログラムは以下を含むこと:
16
+ """
17
+ <Ruby>
18
+ """
19
+
20
+ もし 次のブロック("operators_<ブロック名のサフィックス>")を配置する:
21
+ """
22
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true"}
23
+ %value{:name => "ARG"}
24
+ %block{:type => "operators_<ブロック名のサフィックス>"}
25
+ """
26
+ かつ ブロックからソースコードを生成する
27
+
28
+ ならば テキストエディタのプログラムは以下を含むこと:
29
+ """
30
+ p(<Ruby>)
31
+ """
32
+
33
+ 例:
34
+ | ブロック名のサフィックス | Ruby |
35
+ | true | true |
36
+ | false | false |
@@ -0,0 +1,36 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: ruby_expression - 「式」ブロック
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ シナリオ: ブロックのみ配置する
9
+ もし 次のブロック("ruby_expression")を配置する:
10
+ """
11
+ %block{:type => "ruby_expression", :x => "0", :y => "0", :inline => "true"}
12
+ %field{:name => "EXP"}<
13
+ stage1 = Stage.new(color: "white")
14
+ """
15
+ かつ ブロックからソースコードを生成する
16
+
17
+ ならば テキストエディタのプログラムは以下を含むこと:
18
+ """
19
+ (stage1 = Stage.new(color: "white"))
20
+ """
21
+
22
+ シナリオ: 文とブロックを配置する
23
+ もし 次のブロック("ruby_expression")を配置する:
24
+ """
25
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true"}
26
+ %value{:name => "ARG"}
27
+ %block{:type => "ruby_expression", :x => "0", :y => "0", :inline => "true"}
28
+ %field{:name => "EXP"}<
29
+ stage1 = Stage.new(color: "white")
30
+ """
31
+ かつ ブロックからソースコードを生成する
32
+
33
+ ならば テキストエディタのプログラムは以下を含むこと:
34
+ """
35
+ p((stage1 = Stage.new(color: "white")))
36
+ """
@@ -0,0 +1,34 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: ruby_p - 「p」ブロック
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ シナリオ: ブロックのみ配置する
9
+ もし 次のブロック("ruby_p")を配置する:
10
+ """
11
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true"}
12
+ """
13
+ かつ ブロックからソースコードを生成する
14
+
15
+ ならば テキストエディタのプログラムは以下を含むこと:
16
+ """
17
+ p("")
18
+ """
19
+
20
+ シナリオ: 式を設定したブロックを配置する
21
+ もし 次のブロック("ruby_p")を配置する:
22
+ """
23
+ %block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true"}
24
+ %value{:name => "ARG"}
25
+ %block{:type => "text"}
26
+ %field{:name => "TEXT"}<
27
+ こんにちは
28
+ """
29
+ かつ ブロックからソースコードを生成する
30
+
31
+ ならば テキストエディタのプログラムは以下を含むこと:
32
+ """
33
+ p("こんにちは")
34
+ """
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ # language: ja
3
+ @javascript
4
+ 機能: ruby_{statement,comment} - 「{文,コメント}」ブロック
5
+ 背景:
6
+ 前提 "ブロック" タブを表示する
7
+
8
+ シナリオテンプレート: ブロックのみ配置する
9
+ もし 次のブロック("ruby_<ブロック名のサフィックス>")を配置する:
10
+ """
11
+ %block{:type => "ruby_<ブロック名のサフィックス>", :x => "0", :y => "0", :inline => "true"}
12
+ %field{:name => "<フィールド名>"}<
13
+ stage1 = Stage.new(color: "white")
14
+ """
15
+ かつ ブロックからソースコードを生成する
16
+
17
+ ならば テキストエディタのプログラムは以下を含むこと:
18
+ """
19
+ <Ruby>
20
+ """
21
+
22
+ 例:
23
+ | ブロック名のサフィックス | フィールド名 | Ruby |
24
+ | statement | STATEMENT | stage1 = Stage.new(color: "white") |
25
+ | comment | COMMENT | # stage1 = Stage.new(color: "white") |
@@ -43,6 +43,45 @@ describe 'Smalruby.Character', ->
43
43
  it 'costumesが指定したものになる', ->
44
44
  expect(_.isEqual(self.get('costumes'), ['car1.png', 'car2.png'])).to.be(true)
45
45
 
46
+ describe '#validate', ->
47
+ it 'nameは指定しなければいけない', ->
48
+ self.set({ name: '' })
49
+ expect(self.isValid()).to.not.be.ok()
50
+ self.set({ name: null })
51
+ expect(self.isValid()).to.not.be.ok()
52
+ self.set({ name: undefined })
53
+ expect(self.isValid()).to.not.be.ok()
54
+
55
+ describe 'nameはRubyの変数名として正しくなければいけない', ->
56
+ invalidNames = [
57
+ '1'
58
+ 'CONSTANT'
59
+ '-abc'
60
+ '[1, 2, 3]'
61
+ '{ a: 1, b: 2}'
62
+ ':symbol'
63
+ 'abc{'
64
+ 'abc['
65
+ 'abc:def'
66
+ ]
67
+ for name in invalidNames
68
+ do (name) ->
69
+ it "#{name}は不正であること", ->
70
+ self.set({ name: name })
71
+ expect(self.isValid()).to.not.be.ok()
72
+
73
+ invalidNames = [
74
+ 'one'
75
+ 'constant'
76
+ 'o1e'
77
+ 'あいうえお'
78
+ ]
79
+ for name in invalidNames
80
+ do (name) ->
81
+ it "#{name}は正しいこと", ->
82
+ self.set({ name: name })
83
+ expect(self.isValid()).to.be.ok()
84
+
46
85
  describe '#namePrefix', ->
47
86
  it 'car', ->
48
87
  expect(self.namePrefix()).to.equal('car')
@@ -90,7 +129,7 @@ describe 'Smalruby.Character', ->
90
129
 
91
130
  it '任意のオブジェクトと結びつきusingプロパティをtrueにできること', ->
92
131
  self.link(linkObject)
93
- expect(self.get('using')).to.be.ok
132
+ expect(self.get('using')).to.be.ok()
94
133
 
95
134
  it '自分自身を返すこと', ->
96
135
  expect(self.link(linkObject)).to.be(self)
@@ -108,15 +147,15 @@ describe 'Smalruby.Character', ->
108
147
 
109
148
  it '任意のオブジェクトとの結びつきを解除してusingプロパティをfalseにできること', ->
110
149
  self.unlink(o) for o in linkedObjects
111
- expect(self.get('using')).to.not.be.ok
150
+ expect(self.get('using')).to.not.be.ok()
112
151
 
113
152
  it 'すべてのオブジェクトとの結びつきを解除するまではusingプロパティがtrueのままであること', ->
114
153
  self.unlink(linkedObjects[0])
115
- expect(self.get('using')).to.be.ok
154
+ expect(self.get('using')).to.be.ok()
116
155
  self.unlink(linkedObjects[1])
117
- expect(self.get('using')).to.be.ok
156
+ expect(self.get('using')).to.be.ok()
118
157
  self.unlink(linkedObjects[2])
119
- expect(self.get('using')).to.not.be.ok
158
+ expect(self.get('using')).to.not.be.ok()
120
159
 
121
160
  it '解除済みのオブジェクトを指定しても例外が発生しないこと', ->
122
161
  self.unlink(linkedObjects[0])
@@ -49,6 +49,15 @@ step 'テキストエディタのプログラムは以下であること:' do |p
49
49
  JS
50
50
  end
51
51
 
52
+ step 'テキストエディタのプログラムは以下を含むこと:' do |program|
53
+ expect(page.evaluate_script(<<-JS)).to include(program)
54
+ ace.edit('#{NAME_INFO[text_editor][:id]}')
55
+ .getSession()
56
+ .getDocument()
57
+ .getValue()
58
+ JS
59
+ end
60
+
52
61
  step 'テキストエディタのプログラムは :program であること' do |program|
53
62
  expect(page.evaluate_script(<<-JS)).to eq(program)
54
63
  ace.edit('#{NAME_INFO[text_editor][:id]}')
@@ -13,11 +13,25 @@ step '次のブロックを配置する:' do |haml|
13
13
  JS
14
14
  end
15
15
 
16
+ step '次のブロック(:comment)を配置する:' do |_, haml|
17
+ haml = %(%xml{:xmlns => "http://www.w3.org/1999/xhtml"}\n) +
18
+ haml.lines.map { |s| " #{s}" }.join
19
+ engine = Haml::Engine.new(haml)
20
+ xml = engine.render
21
+ page.execute_script(<<-JS)
22
+ do {
23
+ var dom = Blockly.Xml.textToDom('#{escape_javascript(xml)}');
24
+ Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, dom);
25
+ } while (false);
26
+ JS
27
+ end
28
+
16
29
  step 'すべてのブロックをクリアする' do
17
30
  page.execute_script('Blockly.mainWorkspace.clear()')
18
31
  end
19
32
 
20
33
  step 'ブロックからソースコードを生成する' do
34
+ step '"ブロックタブ" にタブを切り替える'
21
35
  step '"Rubyタブ" にタブを切り替える'
22
36
  end
23
37
 
@@ -0,0 +1,35 @@
1
+ # -*- coding: utf-8 -*-
2
+ # Doc Stringsに含まれるシナリオアウトラインのプレースホルダを置き換える
3
+ # ためのモンキーパッチ。turnip-1.1.0で動作確認済み。
4
+ # rubocop:disable all
5
+ class Turnip::Builder
6
+ class ScenarioOutline
7
+ def to_scenarios(examples)
8
+ rows = examples.rows.map(&:cells)
9
+ headers = rows.shift
10
+ rows.map do |row|
11
+ Scenario.new(@raw).tap do |scenario|
12
+ scenario.steps = steps.map do |step|
13
+ new_description = substitute(step.description, headers, row)
14
+ new_extra_args = step.extra_args.map do |ea|
15
+ if ea.instance_of?(Turnip::Table)
16
+ Turnip::Table.new(ea.map {|t_row| t_row.map {|t_col| substitute(t_col, headers, row) } })
17
+ else
18
+ substitute_only_matched(ea, headers, row)
19
+ end
20
+ end
21
+ Step.new(new_description, new_extra_args, step.line)
22
+ end
23
+ end
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def substitute_only_matched(text, headers, row)
30
+ text.gsub(/<([^<>]*)>/) { |s|
31
+ (res = Hash[headers.zip(row)][$1]) ? res : s
32
+ }
33
+ end
34
+ end
35
+ end
@@ -116,6 +116,7 @@ step 'JavaScriptによるリクエストが終わるまで待つ' do
116
116
  sleep 1
117
117
  end
118
118
  end
119
+
119
120
  step ':name は :value であること' do |name, value|
120
121
  expect(page.evaluate_script(<<-JS)).to eq(value)
121
122
  $('#{NAME_INFO[name][:selector]}').val()
data/spec/teaspoon_env.rb CHANGED
@@ -22,7 +22,7 @@ Teaspoon.setup do |config|
22
22
  #config.server = nil # defaults to Rack::Server
23
23
 
24
24
  # Behaviors
25
- #config.server_timeout = 20 # timeout for starting the server
25
+ config.server_timeout = 120 # timeout for starting the server
26
26
  # defaults to any open port unless specified
27
27
  #config.server_port = nil
28
28
  #config.fail_fast = true # abort after the first failing suite
@@ -1,2 +1,3 @@
1
+ load 'spec/steps/fix_turnip.rb', true
1
2
  load 'spec/steps/global_variable.rb', true
2
3
  Dir.glob('spec/steps{,/**}/*_steps.rb') { |f| load f, true }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smalruby-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: x86-mingw32
6
6
  authors:
7
7
  - Kouji Takao
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-11 00:00:00.000000000 Z
11
+ date: 2014-02-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -339,6 +339,7 @@ files:
339
339
  - app/assets/javascripts/blocks/data.js.coffee.erb
340
340
  - app/assets/javascripts/blocks/etc.js.coffee.erb
341
341
  - app/assets/javascripts/blocks/events.js.coffee.erb
342
+ - app/assets/javascripts/blocks/field_character.js.coffee.erb
342
343
  - app/assets/javascripts/blocks/hardware.js.coffee.erb
343
344
  - app/assets/javascripts/blocks/looks.js.coffee.erb
344
345
  - app/assets/javascripts/blocks/motion.js.coffee.erb
@@ -495,6 +496,7 @@ files:
495
496
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature
496
497
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature
497
498
  - spec/acceptance/block_mode/blocks/hardware/sensor_value.feature
499
+ - spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature
498
500
  - spec/acceptance/block_mode/blocks/looks/hide.feature
499
501
  - spec/acceptance/block_mode/blocks/looks/say.feature
500
502
  - spec/acceptance/block_mode/blocks/looks/show.feature
@@ -514,6 +516,18 @@ files:
514
516
  - spec/acceptance/block_mode/blocks/motion/set_y.feature
515
517
  - spec/acceptance/block_mode/blocks/motion/turn.feature
516
518
  - spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature
519
+ - spec/acceptance/block_mode/blocks/operators/and_or.feature
520
+ - spec/acceptance/block_mode/blocks/operators/four_arithmetic_and_compares.feature
521
+ - spec/acceptance/block_mode/blocks/operators/index_of.feature
522
+ - spec/acceptance/block_mode/blocks/operators/length.feature
523
+ - spec/acceptance/block_mode/blocks/operators/math_method.feature
524
+ - spec/acceptance/block_mode/blocks/operators/negate.feature
525
+ - spec/acceptance/block_mode/blocks/operators/rand.feature
526
+ - spec/acceptance/block_mode/blocks/operators/round.feature
527
+ - spec/acceptance/block_mode/blocks/operators/true_false.feature
528
+ - spec/acceptance/block_mode/blocks/ruby/expression.feature
529
+ - spec/acceptance/block_mode/blocks/ruby/p.feature
530
+ - spec/acceptance/block_mode/blocks/ruby/statement_comment.feature
517
531
  - spec/acceptance/block_mode/blocks/sensing/character_property.feature
518
532
  - spec/acceptance/block_mode/blocks/sensing/hit.feature
519
533
  - spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature
@@ -544,6 +558,7 @@ files:
544
558
  - spec/spec_helper.rb
545
559
  - spec/steps/ace_steps.rb
546
560
  - spec/steps/block_mode_steps.rb
561
+ - spec/steps/fix_turnip.rb
547
562
  - spec/steps/global_variable.rb
548
563
  - spec/steps/text_editor_steps.rb
549
564
  - spec/support/capybara.rb
@@ -556,11 +571,11 @@ files:
556
571
  - vendor/assets/javascripts/blockly/msg/js/ja.js
557
572
  - vendor/assets/javascripts/jquery.blockUI.js
558
573
  - vendor/assets/stylesheets/.keep
559
- - public/assets/application-0c2ae32cd8822cec7ba6e445e2501010.js
560
- - public/assets/application-0c2ae32cd8822cec7ba6e445e2501010.js.gz
561
574
  - public/assets/application-0e1a6c238c0cc501b29746e5db35b5a1.css
562
575
  - public/assets/application-0e1a6c238c0cc501b29746e5db35b5a1.css.gz
563
- - public/assets/default-7f438ebd7f8ab6ef65c5b9744786e57f.xml
576
+ - public/assets/application-735e172a0df828da16d22f5d3c26671f.js
577
+ - public/assets/application-735e172a0df828da16d22f5d3c26671f.js.gz
578
+ - public/assets/default-5d1886100d7c8961e9962bbc4bb0c714.xml
564
579
  - public/assets/favicon-a37c90b368fd8ed436cb8f9e9396465c.ico
565
580
  - public/assets/jquery-ui/animated-overlay-c48c87b7a95316f4698484e3b85ee4aa.gif
566
581
  - public/assets/jquery-ui/ui-bg_flat_0_aaaaaa_40x100-58b63faadd031ca3db096dfdffd90224.png
@@ -633,6 +648,7 @@ test_files:
633
648
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature
634
649
  - spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature
635
650
  - spec/acceptance/block_mode/blocks/hardware/sensor_value.feature
651
+ - spec/acceptance/block_mode/blocks/hardware/servo_set_position.feature
636
652
  - spec/acceptance/block_mode/blocks/looks/hide.feature
637
653
  - spec/acceptance/block_mode/blocks/looks/say.feature
638
654
  - spec/acceptance/block_mode/blocks/looks/show.feature
@@ -652,6 +668,18 @@ test_files:
652
668
  - spec/acceptance/block_mode/blocks/motion/set_y.feature
653
669
  - spec/acceptance/block_mode/blocks/motion/turn.feature
654
670
  - spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature
671
+ - spec/acceptance/block_mode/blocks/operators/and_or.feature
672
+ - spec/acceptance/block_mode/blocks/operators/four_arithmetic_and_compares.feature
673
+ - spec/acceptance/block_mode/blocks/operators/index_of.feature
674
+ - spec/acceptance/block_mode/blocks/operators/length.feature
675
+ - spec/acceptance/block_mode/blocks/operators/math_method.feature
676
+ - spec/acceptance/block_mode/blocks/operators/negate.feature
677
+ - spec/acceptance/block_mode/blocks/operators/rand.feature
678
+ - spec/acceptance/block_mode/blocks/operators/round.feature
679
+ - spec/acceptance/block_mode/blocks/operators/true_false.feature
680
+ - spec/acceptance/block_mode/blocks/ruby/expression.feature
681
+ - spec/acceptance/block_mode/blocks/ruby/p.feature
682
+ - spec/acceptance/block_mode/blocks/ruby/statement_comment.feature
655
683
  - spec/acceptance/block_mode/blocks/sensing/character_property.feature
656
684
  - spec/acceptance/block_mode/blocks/sensing/hit.feature
657
685
  - spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature
@@ -682,6 +710,7 @@ test_files:
682
710
  - spec/spec_helper.rb
683
711
  - spec/steps/ace_steps.rb
684
712
  - spec/steps/block_mode_steps.rb
713
+ - spec/steps/fix_turnip.rb
685
714
  - spec/steps/global_variable.rb
686
715
  - spec/steps/text_editor_steps.rb
687
716
  - spec/support/capybara.rb