cucumber 0.6.3 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. data/History.txt +25 -4
  2. data/VERSION.yml +1 -1
  3. data/cucumber.gemspec +33 -29
  4. data/examples/i18n/{cat → ca}/Rakefile +0 -0
  5. data/examples/i18n/{cat → ca}/features/step_definitons/calculator_steps.rb +0 -0
  6. data/examples/i18n/{cat → ca}/features/suma.feature +1 -1
  7. data/examples/i18n/{cat → ca}/lib/calculadora.rb +0 -0
  8. data/examples/i18n/{se → sr-Cyrl}/Rakefile +0 -0
  9. data/examples/i18n/{sr → sr-Cyrl}/features/sabiranje.feature +1 -1
  10. data/examples/i18n/{sr → sr-Cyrl}/features/step_definitons/calculator_steps.rb +0 -0
  11. data/examples/i18n/{sr → sr-Cyrl}/features/support/env.rb +0 -0
  12. data/examples/i18n/{sr-latn → sr-Cyrl}/lib/calculator.rb +0 -0
  13. data/examples/i18n/{sr-latn → sr-Latn}/Rakefile +0 -0
  14. data/examples/i18n/{sr-latn → sr-Latn}/features/sabiranje.feature +0 -0
  15. data/examples/i18n/{sr-latn → sr-Latn}/features/step_definitons/calculator_steps.rb +0 -0
  16. data/examples/i18n/{sr → sr-Latn}/lib/calculator.rb +0 -0
  17. data/examples/i18n/{sr → sv}/Rakefile +0 -0
  18. data/examples/i18n/{se → sv}/features/step_definitons/kalkulator_steps.rb +0 -0
  19. data/examples/i18n/{se → sv}/features/summering.feature +1 -1
  20. data/examples/i18n/{se → sv}/lib/kalkulator.rb +0 -0
  21. data/features/announce.feature +27 -5
  22. data/features/bug_585_tab_indentation.feature +22 -0
  23. data/features/exception_in_after_block.feature +25 -0
  24. data/features/exception_in_before_block.feature +21 -0
  25. data/features/language_help.feature +6 -6
  26. data/features/snippets_when_using_star_keyword.feature +36 -0
  27. data/features/wire_protocol_tags.feature +50 -10
  28. data/gem_tasks/contributors.rake +4 -2
  29. data/lib/autotest/cucumber_rails_rspec2.rb +6 -0
  30. data/lib/autotest/cucumber_rspec2.rb +6 -0
  31. data/lib/cucumber/ast/outline_table.rb +8 -0
  32. data/lib/cucumber/ast/py_string.rb +5 -1
  33. data/lib/cucumber/ast/step_invocation.rb +2 -2
  34. data/lib/cucumber/cli/options.rb +1 -0
  35. data/lib/cucumber/cli/profile_loader.rb +8 -2
  36. data/lib/cucumber/formatter/pdf.rb +9 -2
  37. data/lib/cucumber/formatter/progress.rb +24 -2
  38. data/lib/cucumber/formatter/unicode.rb +11 -11
  39. data/lib/cucumber/languages.yml +14 -13
  40. data/lib/cucumber/parser/feature.rb +0 -257
  41. data/lib/cucumber/parser/feature.tt +0 -32
  42. data/lib/cucumber/parser/i18n.tt +2 -1
  43. data/lib/cucumber/parser/natural_language.rb +7 -4
  44. data/lib/cucumber/parser/py_string.rb +2 -2
  45. data/lib/cucumber/parser/py_string.tt +2 -2
  46. data/lib/cucumber/rb_support/rb_world.rb +9 -0
  47. data/lib/cucumber/step_mother.rb +3 -3
  48. data/spec/cucumber/ast/feature_factory.rb +1 -1
  49. data/spec/cucumber/ast/py_string_spec.rb +4 -4
  50. data/spec/cucumber/ast/step_spec.rb +1 -1
  51. data/spec/cucumber/cli/configuration_spec.rb +7 -0
  52. data/spec/cucumber/cli/profile_loader_spec.rb +29 -4
  53. data/spec/cucumber/step_mother_spec.rb +13 -3
  54. metadata +34 -30
@@ -278,38 +278,6 @@ module Cucumber
278
278
  (step_keyword) / scenario_keyword / scenario_outline_keyword / table / tag / comment_line
279
279
  end
280
280
 
281
- rule py_string
282
- open_py_string s:(!close_py_string .)* close_py_string {
283
- def at_line?(line)
284
- line >= open_py_string.line && line <= close_py_string.line
285
- end
286
-
287
- def build
288
- Ast::PyString.new(open_py_string.line, close_py_string.line, s.text_value, open_py_string.indentation)
289
- end
290
- }
291
- end
292
-
293
- rule open_py_string
294
- indent:space* '"""' space* eol {
295
- def indentation
296
- indent.text_value.length
297
- end
298
-
299
- def line
300
- indent.line
301
- end
302
- }
303
- end
304
-
305
- rule close_py_string
306
- eol space* quotes:'"""' white {
307
- def line
308
- quotes.line
309
- end
310
- }
311
- end
312
-
313
281
  rule white
314
282
  (space / eol)*
315
283
  end
@@ -1,9 +1,10 @@
1
1
  module Cucumber
2
2
  module Parser
3
3
  module I18n
4
- grammar <%= keywords('grammar_name')[0] %>
4
+ grammar <%= @grammar_name %>
5
5
  include Feature
6
6
  include Table
7
+ include PyString
7
8
 
8
9
  rule feature
9
10
  feature_sub
@@ -23,7 +23,7 @@ module Cucumber
23
23
  def initialize(step_mother, lang)
24
24
  @keywords = Cucumber::LANGUAGES[lang]
25
25
  raise "Language not supported: #{lang.inspect}" if @keywords.nil?
26
- @keywords['grammar_name'] = @keywords['name'].gsub(/\s/, '')
26
+ @grammar_name = lang.gsub(/[\s-]/, '').upcase
27
27
  register_adverbs(step_mother) if step_mother
28
28
  @parser = nil
29
29
  end
@@ -45,9 +45,8 @@ module Cucumber
45
45
  # effectively breaking any other library that relies on ERB behavig the way it _should_.
46
46
  # This is a workaround hack until this has been fixed in Rails.
47
47
  grammar = "" + grammar # Make SafeBuffer a String again.
48
-
49
48
  Treetop.load_from_string(grammar)
50
- @parser = Parser::I18n.const_get("#{@keywords['grammar_name']}Parser").new
49
+ @parser = Parser::I18n.const_get("#{@grammar_name}Parser").new
51
50
  def @parser.inspect
52
51
  "#<#{self.class.name}>"
53
52
  end
@@ -92,13 +91,17 @@ module Cucumber
92
91
  keywords('and', space)
93
92
  end
94
93
 
94
+ def given_keyword
95
+ keywords('given', false)[1] # The 0th one is a '*', which we don't want
96
+ end
97
+
95
98
  def step_keywords
96
99
  %w{given when then and but}.map{|key| keywords(key, true)}.flatten.uniq
97
100
  end
98
101
 
99
102
  def keywords(key, space=false)
100
103
  raise "No #{key} in #{@keywords.inspect}" if @keywords[key].nil?
101
- @keywords[key].split('|').map{|kw| space ? keyword_space(kw) : kw}
104
+ @keywords[key].split('|').map{|kw| space ? keyword_space(kw) : kw}.uniq
102
105
  end
103
106
 
104
107
  private
@@ -40,7 +40,7 @@ module Cucumber
40
40
  line >= open_py_string.line && line <= close_py_string.line
41
41
  end
42
42
 
43
- def build(filter=nil)
43
+ def build(ignored_filter=nil)
44
44
  Ast::PyString.new(open_py_string.line, close_py_string.line, s.text_value, open_py_string.indentation)
45
45
  end
46
46
  end
@@ -128,7 +128,7 @@ module Cucumber
128
128
 
129
129
  module OpenPyString1
130
130
  def indentation
131
- indent.text_value.length
131
+ indent.text_value
132
132
  end
133
133
 
134
134
  def line
@@ -15,7 +15,7 @@ module Cucumber
15
15
  line >= open_py_string.line && line <= close_py_string.line
16
16
  end
17
17
 
18
- def build(filter=nil)
18
+ def build(ignored_filter=nil)
19
19
  Ast::PyString.new(open_py_string.line, close_py_string.line, s.text_value, open_py_string.indentation)
20
20
  end
21
21
  }
@@ -24,7 +24,7 @@ module Cucumber
24
24
  rule open_py_string
25
25
  indent:space* '"""' space* eol {
26
26
  def indentation
27
- indent.text_value.length
27
+ indent.text_value
28
28
  end
29
29
 
30
30
  def line
@@ -52,6 +52,15 @@ module Cucumber
52
52
  @__cucumber_step_mother.embed(file, mime_type)
53
53
  end
54
54
 
55
+ # Prints out the world class, followed by all included modules.
56
+ def announce_world
57
+ announce "WORLD:\n #{self.class}"
58
+ world = self
59
+ (class << self; self; end).instance_eval do
60
+ world.announce " #{included_modules.join("\n ")}"
61
+ end
62
+ end
63
+
55
64
  # Mark the matched step as pending.
56
65
  def pending(message = "TODO")
57
66
  if block_given?
@@ -133,7 +133,7 @@ module Cucumber
133
133
  # nicer, and in all outputs (in case you use several formatters)
134
134
  #
135
135
  def announce(msg)
136
- @visitor.announce(msg)
136
+ @visitor.announce(msg.to_s)
137
137
  end
138
138
 
139
139
  # Suspends execution and prompts +question+ to the console (STDOUT).
@@ -278,8 +278,8 @@ module Cucumber
278
278
  longest_regexp_length = no_groups.map {|step_match| step_match.text_length }.max
279
279
  no_groups.select {|step_match| step_match.text_length == longest_regexp_length }
280
280
  elsif top_groups.any?
281
- shortest_capture_length = top_groups.map {|step_match| step_match.args.inject(0) {|sum, c| sum + c.length } }.min
282
- top_groups.select {|step_match| step_match.args.inject(0) {|sum, c| sum + c.length } == shortest_capture_length }
281
+ shortest_capture_length = top_groups.map {|step_match| step_match.args.inject(0) {|sum, c| sum + c.to_s.length } }.min
282
+ top_groups.select {|step_match| step_match.args.inject(0) {|sum, c| sum + c.to_s.length } == shortest_capture_length }
283
283
  else
284
284
  top_groups
285
285
  end
@@ -27,7 +27,7 @@ module Cucumber
27
27
  py_string = Ast::PyString.new(21, 22, %{
28
28
  I like
29
29
  Cucumber sandwich
30
- }, 10)
30
+ }, ' '*10)
31
31
 
32
32
  background = Ast::Background.new(Ast::Comment.new(""), 2, "Background:", "",
33
33
  [
@@ -5,20 +5,20 @@ module Cucumber
5
5
  module Ast
6
6
  describe PyString do
7
7
  it "should handle unindented" do
8
- ps = PyString.new(10, 13, "4.1\n4.2\n", 0)
8
+ ps = PyString.new(10, 13, "4.1\n4.2\n", "")
9
9
  ps.to_s.should == "4.1\n4.2\n"
10
10
  end
11
11
 
12
12
  it "should handle indented" do
13
13
  # """
14
- ps = PyString.new(10, 13, " 4.1\n 4.2\n", 2)
14
+ ps = PyString.new(10, 13, " 4.1\n 4.2\n", " ")
15
15
  ps.to_s.should == " 4.1\n 4.2\n"
16
16
  end
17
17
 
18
18
  describe "replacing arguments" do
19
19
 
20
20
  before(:each) do
21
- @ps = PyString.new(10, 13, "<book>\n<qty>\n", 0)
21
+ @ps = PyString.new(10, 13, "<book>\n<qty>\n", "")
22
22
  end
23
23
 
24
24
  it "should return a new py_string with arguments replaced with values" do
@@ -34,7 +34,7 @@ module Cucumber
34
34
  end
35
35
 
36
36
  it "should replaced nil with empty string" do
37
- ps = PyString.new(10, 13, "'<book>'", 0)
37
+ ps = PyString.new(10, 13, "'<book>'", "")
38
38
  py_string_with_replaced_arg = ps.arguments_replaced({'<book>' => nil})
39
39
 
40
40
  py_string_with_replaced_arg.to_s.should == "''"
@@ -48,7 +48,7 @@ module Cucumber
48
48
  end
49
49
 
50
50
  it "should replace arguments in py string arg" do
51
- py_string = PyString.new(1, 2, 'taste_<taste> color_<color>', 0)
51
+ py_string = PyString.new(1, 2, 'taste_<taste> color_<color>', '')
52
52
 
53
53
  step = Step.new(1, 'Given', 'a <color> cucumber', py_string)
54
54
 
@@ -140,6 +140,13 @@ module Cli
140
140
  config.options[:require].should == ['from/yml']
141
141
  end
142
142
 
143
+ it "allows --strict to be set by a profile" do
144
+ given_cucumber_yml_defined_as({'bongo' => '--strict'})
145
+
146
+ config.parse!(%w{--profile bongo})
147
+ config.options[:strict].should be_true
148
+ end
149
+
143
150
  it "parses ERB syntax in the cucumber.yml file" do
144
151
  given_cucumber_yml_defined_as({'default' => '<%="--require some_file"%>'})
145
152
 
@@ -2,9 +2,34 @@ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
2
  require 'yaml'
3
3
 
4
4
  module Cucumber
5
- module Cli
6
- describe ProfileLoader do
7
- it "should have all of its specs migrated from configuration_spec"
5
+ module Cli
6
+ describe ProfileLoader do
7
+ def given_cucumber_yml_defined_as(hash_or_string)
8
+ Dir.stub!(:glob).with('{,.config/,config/}cucumber{.yml,.yaml}').and_return(['cucumber.yml'])
9
+ File.stub!(:exist?).and_return(true)
10
+ cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
11
+ IO.stub!(:read).with('cucumber.yml').and_return(cucumber_yml)
12
+ end
13
+
14
+ def loader
15
+ ProfileLoader.new
16
+ end
17
+
18
+ it "treats backslashes as literals in rerun.txt when on Windows (JRuby or MRI)" do
19
+ given_cucumber_yml_defined_as({'default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22'})
20
+ if(Cucumber::WINDOWS)
21
+ loader.args_from('default').should == ['--format','pretty','features\sync_imap_mailbox.feature:16:22']
22
+ else
23
+ loader.args_from('default').should == ['--format','pretty','featuressync_imap_mailbox.feature:16:22']
24
+ end
25
+
26
+ end
27
+
28
+ it "treats forward slashes as literals" do
29
+ given_cucumber_yml_defined_as({'default' => '--format "ugly" features/sync_imap_mailbox.feature:16:22'})
30
+ loader.args_from('default').should == ['--format','ugly','features/sync_imap_mailbox.feature:16:22']
31
+ end
32
+
33
+ end
8
34
  end
9
35
  end
10
- end
@@ -67,6 +67,16 @@ spec/cucumber/step_mother_spec.rb:48:in `/Three cute (.*)/'
67
67
  end.should_not raise_error
68
68
  end
69
69
 
70
+ it "should not raise NoMethodError when guessing from multiple step definitions with nil fields" do
71
+ @step_mother.options = {:guess => true}
72
+ @dsl.Given(/Three (.*) mice( cannot find food)?/) {|disability, is_disastrous|}
73
+ @dsl.Given(/Three (.*)?/) {|animal|}
74
+
75
+ lambda do
76
+ @step_mother.step_match("Three blind mice")
77
+ end.should_not raise_error
78
+ end
79
+
70
80
  it "should pick right step definition when --guess is enabled and equal number of capture groups" do
71
81
  @step_mother.options = {:guess => true}
72
82
  right = @dsl.Given(/Three (.*) mice/) {|disability|}
@@ -112,7 +122,7 @@ spec/cucumber/step_mother_spec.rb:48:in `/Three cute (.*)/'
112
122
  raise "Should fail"
113
123
  rescue RbSupport::NilWorld => e
114
124
  e.message.should == "World procs should never return nil"
115
- e.backtrace.should == ["spec/cucumber/step_mother_spec.rb:108:in `World'"]
125
+ e.backtrace.should == ["spec/cucumber/step_mother_spec.rb:118:in `World'"]
116
126
  end
117
127
  end
118
128
 
@@ -142,8 +152,8 @@ spec/cucumber/step_mother_spec.rb:48:in `/Three cute (.*)/'
142
152
  end.should raise_error(RbSupport::MultipleWorld, %{You can only pass a proc to #World once, but it's happening
143
153
  in 2 places:
144
154
 
145
- spec/cucumber/step_mother_spec.rb:139:in `World'
146
- spec/cucumber/step_mother_spec.rb:141:in `World'
155
+ spec/cucumber/step_mother_spec.rb:149:in `World'
156
+ spec/cucumber/step_mother_spec.rb:151:in `World'
147
157
 
148
158
  Use Ruby modules instead to extend your worlds. See the Cucumber::RbSupport::RbDsl#World RDoc
149
159
  or http://wiki.github.com/aslakhellesoy/cucumber/a-whole-new-world.
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 6
8
- - 3
9
- version: 0.6.3
8
+ - 4
9
+ version: 0.6.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - "Aslak Helles\xC3\xB8y"
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-03-02 00:00:00 +01:00
17
+ date: 2010-03-30 00:00:00 +02:00
18
18
  default_executable: cucumber
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -236,10 +236,10 @@ files:
236
236
  - examples/i18n/bg/features/support/env.rb
237
237
  - examples/i18n/bg/features/support/world.rb
238
238
  - examples/i18n/bg/lib/calculator.rb
239
- - examples/i18n/cat/Rakefile
240
- - examples/i18n/cat/features/step_definitons/calculator_steps.rb
241
- - examples/i18n/cat/features/suma.feature
242
- - examples/i18n/cat/lib/calculadora.rb
239
+ - examples/i18n/ca/Rakefile
240
+ - examples/i18n/ca/features/step_definitons/calculator_steps.rb
241
+ - examples/i18n/ca/features/suma.feature
242
+ - examples/i18n/ca/lib/calculadora.rb
243
243
  - examples/i18n/da/Rakefile
244
244
  - examples/i18n/da/features/sammenlaegning.feature
245
245
  - examples/i18n/da/features/step_definitons/lommeregner_steps.rb
@@ -357,25 +357,25 @@ files:
357
357
  - examples/i18n/ru/features/support/env.rb
358
358
  - examples/i18n/ru/features/support/world.rb
359
359
  - examples/i18n/ru/lib/calculator.rb
360
- - examples/i18n/se/Rakefile
361
- - examples/i18n/se/features/step_definitons/kalkulator_steps.rb
362
- - examples/i18n/se/features/summering.feature
363
- - examples/i18n/se/lib/kalkulator.rb
364
360
  - examples/i18n/sk/.gitignore
365
361
  - examples/i18n/sk/Rakefile
366
362
  - examples/i18n/sk/features/addition.feature
367
363
  - examples/i18n/sk/features/division.feature
368
364
  - examples/i18n/sk/features/step_definitons/calculator_steps.rb
369
365
  - examples/i18n/sk/lib/calculator.rb
370
- - examples/i18n/sr-latn/Rakefile
371
- - examples/i18n/sr-latn/features/sabiranje.feature
372
- - examples/i18n/sr-latn/features/step_definitons/calculator_steps.rb
373
- - examples/i18n/sr-latn/lib/calculator.rb
374
- - examples/i18n/sr/Rakefile
375
- - examples/i18n/sr/features/sabiranje.feature
376
- - examples/i18n/sr/features/step_definitons/calculator_steps.rb
377
- - examples/i18n/sr/features/support/env.rb
378
- - examples/i18n/sr/lib/calculator.rb
366
+ - examples/i18n/sr-Cyrl/Rakefile
367
+ - examples/i18n/sr-Cyrl/features/sabiranje.feature
368
+ - examples/i18n/sr-Cyrl/features/step_definitons/calculator_steps.rb
369
+ - examples/i18n/sr-Cyrl/features/support/env.rb
370
+ - examples/i18n/sr-Cyrl/lib/calculator.rb
371
+ - examples/i18n/sr-Latn/Rakefile
372
+ - examples/i18n/sr-Latn/features/sabiranje.feature
373
+ - examples/i18n/sr-Latn/features/step_definitons/calculator_steps.rb
374
+ - examples/i18n/sr-Latn/lib/calculator.rb
375
+ - examples/i18n/sv/Rakefile
376
+ - examples/i18n/sv/features/step_definitons/kalkulator_steps.rb
377
+ - examples/i18n/sv/features/summering.feature
378
+ - examples/i18n/sv/lib/kalkulator.rb
379
379
  - examples/i18n/tr/.gitignore
380
380
  - examples/i18n/tr/Rakefile
381
381
  - examples/i18n/tr/features/bolme.feature
@@ -522,6 +522,7 @@ files:
522
522
  - features/bug_371.feature
523
523
  - features/bug_464.feature
524
524
  - features/bug_475.feature
525
+ - features/bug_585_tab_indentation.feature
525
526
  - features/call_many_steps.feature
526
527
  - features/cucumber_cli.feature
527
528
  - features/cucumber_cli_diff_disabled.feature
@@ -549,6 +550,7 @@ files:
549
550
  - features/rerun_formatter.feature
550
551
  - features/simplest.feature
551
552
  - features/snippet.feature
553
+ - features/snippets_when_using_star_keyword.feature
552
554
  - features/step_definitions/cucumber_steps.rb
553
555
  - features/step_definitions/extra_steps.rb
554
556
  - features/step_definitions/simplest_steps.rb
@@ -580,7 +582,9 @@ files:
580
582
  - lib/autotest/cucumber_mixin.rb
581
583
  - lib/autotest/cucumber_rails.rb
582
584
  - lib/autotest/cucumber_rails_rspec.rb
585
+ - lib/autotest/cucumber_rails_rspec2.rb
583
586
  - lib/autotest/cucumber_rspec.rb
587
+ - lib/autotest/cucumber_rspec2.rb
584
588
  - lib/autotest/discover.rb
585
589
  - lib/cucumber.rb
586
590
  - lib/cucumber/ast.rb
@@ -743,7 +747,7 @@ post_install_message: |+
743
747
 
744
748
  (::) U P G R A D I N G (::)
745
749
 
746
- Thank you for installing cucumber-0.6.3.
750
+ Thank you for installing cucumber-0.6.4.
747
751
  Please be sure to read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
748
752
  for important information about this release. Happy cuking!
749
753
 
@@ -822,8 +826,8 @@ test_files:
822
826
  - examples/i18n/bg/features/support/env.rb
823
827
  - examples/i18n/bg/features/support/world.rb
824
828
  - examples/i18n/bg/lib/calculator.rb
825
- - examples/i18n/cat/features/step_definitons/calculator_steps.rb
826
- - examples/i18n/cat/lib/calculadora.rb
829
+ - examples/i18n/ca/features/step_definitons/calculator_steps.rb
830
+ - examples/i18n/ca/lib/calculadora.rb
827
831
  - examples/i18n/da/features/step_definitons/lommeregner_steps.rb
828
832
  - examples/i18n/da/lib/lommeregner.rb
829
833
  - examples/i18n/de/features/step_definitons/calculator_steps.rb
@@ -875,15 +879,15 @@ test_files:
875
879
  - examples/i18n/ru/features/support/env.rb
876
880
  - examples/i18n/ru/features/support/world.rb
877
881
  - examples/i18n/ru/lib/calculator.rb
878
- - examples/i18n/se/features/step_definitons/kalkulator_steps.rb
879
- - examples/i18n/se/lib/kalkulator.rb
880
882
  - examples/i18n/sk/features/step_definitons/calculator_steps.rb
881
883
  - examples/i18n/sk/lib/calculator.rb
882
- - examples/i18n/sr/features/step_definitons/calculator_steps.rb
883
- - examples/i18n/sr/features/support/env.rb
884
- - examples/i18n/sr/lib/calculator.rb
885
- - examples/i18n/sr-latn/features/step_definitons/calculator_steps.rb
886
- - examples/i18n/sr-latn/lib/calculator.rb
884
+ - examples/i18n/sr-Cyrl/features/step_definitons/calculator_steps.rb
885
+ - examples/i18n/sr-Cyrl/features/support/env.rb
886
+ - examples/i18n/sr-Cyrl/lib/calculator.rb
887
+ - examples/i18n/sr-Latn/features/step_definitons/calculator_steps.rb
888
+ - examples/i18n/sr-Latn/lib/calculator.rb
889
+ - examples/i18n/sv/features/step_definitons/kalkulator_steps.rb
890
+ - examples/i18n/sv/lib/kalkulator.rb
887
891
  - examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb
888
892
  - examples/i18n/tr/lib/hesap_makinesi.rb
889
893
  - examples/i18n/uz/features/step_definitons/calculator_steps.rb