cucumber 3.1.0 → 3.1.1

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.
Files changed (118) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -2
  3. data/CONTRIBUTING.md +1 -0
  4. data/README.md +6 -7
  5. data/lib/autotest/cucumber.rb +1 -0
  6. data/lib/autotest/cucumber_mixin.rb +1 -0
  7. data/lib/autotest/cucumber_rails.rb +1 -0
  8. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  9. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  10. data/lib/autotest/cucumber_rspec.rb +1 -0
  11. data/lib/autotest/cucumber_rspec2.rb +1 -0
  12. data/lib/autotest/discover.rb +1 -0
  13. data/lib/cucumber.rb +1 -0
  14. data/lib/cucumber/cli/configuration.rb +1 -0
  15. data/lib/cucumber/cli/main.rb +2 -2
  16. data/lib/cucumber/cli/options.rb +42 -40
  17. data/lib/cucumber/cli/profile_loader.rb +5 -7
  18. data/lib/cucumber/cli/rerun_file.rb +1 -0
  19. data/lib/cucumber/configuration.rb +1 -0
  20. data/lib/cucumber/constantize.rb +6 -5
  21. data/lib/cucumber/core_ext/string.rb +1 -0
  22. data/lib/cucumber/deprecate.rb +1 -1
  23. data/lib/cucumber/encoding.rb +2 -1
  24. data/lib/cucumber/errors.rb +1 -0
  25. data/lib/cucumber/events.rb +1 -1
  26. data/lib/cucumber/events/gherkin_source_read.rb +1 -4
  27. data/lib/cucumber/events/step_activated.rb +4 -5
  28. data/lib/cucumber/events/step_definition_registered.rb +4 -8
  29. data/lib/cucumber/events/test_case_finished.rb +0 -4
  30. data/lib/cucumber/events/test_case_started.rb +0 -4
  31. data/lib/cucumber/events/test_run_finished.rb +2 -3
  32. data/lib/cucumber/events/test_run_started.rb +2 -4
  33. data/lib/cucumber/events/test_step_finished.rb +0 -4
  34. data/lib/cucumber/events/test_step_started.rb +1 -5
  35. data/lib/cucumber/file_specs.rb +2 -1
  36. data/lib/cucumber/filters.rb +1 -0
  37. data/lib/cucumber/filters/activate_steps.rb +1 -1
  38. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  39. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  40. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  41. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  42. data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
  43. data/lib/cucumber/filters/gated_receiver.rb +1 -2
  44. data/lib/cucumber/filters/prepare_world.rb +2 -5
  45. data/lib/cucumber/filters/quit.rb +2 -3
  46. data/lib/cucumber/filters/randomizer.rb +6 -7
  47. data/lib/cucumber/filters/retry.rb +2 -2
  48. data/lib/cucumber/filters/tag_limits.rb +2 -2
  49. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
  50. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
  51. data/lib/cucumber/formatter/ansicolor.rb +13 -12
  52. data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
  53. data/lib/cucumber/formatter/console.rb +10 -11
  54. data/lib/cucumber/formatter/console_counts.rb +4 -4
  55. data/lib/cucumber/formatter/console_issues.rb +3 -3
  56. data/lib/cucumber/formatter/duration.rb +1 -0
  57. data/lib/cucumber/formatter/duration_extractor.rb +1 -1
  58. data/lib/cucumber/formatter/fail_fast.rb +9 -6
  59. data/lib/cucumber/formatter/fanout.rb +1 -3
  60. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  61. data/lib/cucumber/formatter/html.rb +27 -31
  62. data/lib/cucumber/formatter/html_builder.rb +2 -1
  63. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -2
  64. data/lib/cucumber/formatter/interceptor.rb +18 -5
  65. data/lib/cucumber/formatter/io.rb +1 -0
  66. data/lib/cucumber/formatter/json.rb +2 -1
  67. data/lib/cucumber/formatter/json_pretty.rb +1 -0
  68. data/lib/cucumber/formatter/junit.rb +16 -15
  69. data/lib/cucumber/formatter/pretty.rb +3 -2
  70. data/lib/cucumber/formatter/progress.rb +3 -2
  71. data/lib/cucumber/formatter/rerun.rb +1 -0
  72. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  73. data/lib/cucumber/formatter/steps.rb +2 -2
  74. data/lib/cucumber/formatter/summary.rb +1 -1
  75. data/lib/cucumber/formatter/unicode.rb +2 -2
  76. data/lib/cucumber/formatter/usage.rb +21 -18
  77. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  78. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
  79. data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
  80. data/lib/cucumber/gherkin/i18n.rb +1 -0
  81. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  82. data/lib/cucumber/glue/dsl.rb +1 -0
  83. data/lib/cucumber/glue/hook.rb +1 -0
  84. data/lib/cucumber/glue/invoke_in_world.rb +3 -3
  85. data/lib/cucumber/glue/proto_world.rb +8 -9
  86. data/lib/cucumber/glue/registry_and_more.rb +13 -12
  87. data/lib/cucumber/glue/snippet.rb +1 -5
  88. data/lib/cucumber/glue/step_definition.rb +9 -9
  89. data/lib/cucumber/glue/world_factory.rb +0 -2
  90. data/lib/cucumber/hooks.rb +1 -3
  91. data/lib/cucumber/load_path.rb +1 -0
  92. data/lib/cucumber/multiline_argument.rb +2 -2
  93. data/lib/cucumber/multiline_argument/data_table.rb +10 -10
  94. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +4 -7
  95. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  96. data/lib/cucumber/platform.rb +2 -1
  97. data/lib/cucumber/project_initializer.rb +1 -1
  98. data/lib/cucumber/rake/task.rb +7 -4
  99. data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
  100. data/lib/cucumber/rspec/doubles.rb +1 -0
  101. data/lib/cucumber/running_test_case.rb +2 -1
  102. data/lib/cucumber/runtime.rb +5 -5
  103. data/lib/cucumber/runtime/after_hooks.rb +1 -0
  104. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  105. data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
  106. data/lib/cucumber/runtime/step_hooks.rb +2 -0
  107. data/lib/cucumber/runtime/support_code.rb +3 -7
  108. data/lib/cucumber/runtime/user_interface.rb +2 -3
  109. data/lib/cucumber/step_argument.rb +1 -0
  110. data/lib/cucumber/step_definition_light.rb +2 -1
  111. data/lib/cucumber/step_definitions.rb +1 -0
  112. data/lib/cucumber/step_match.rb +5 -7
  113. data/lib/cucumber/step_match_search.rb +1 -2
  114. data/lib/cucumber/term/ansicolor.rb +30 -30
  115. data/lib/cucumber/unit.rb +1 -0
  116. data/lib/cucumber/version +1 -1
  117. data/lib/simplecov_setup.rb +1 -0
  118. metadata +61 -117
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Cucumber
3
- module Gherkin
4
- module Formatter
5
- module Escaping
6
- # Escapes a pipes and backslashes:
7
- #
8
- # * | becomes \|
9
- # * \ becomes \\
10
- #
11
- # This is used in the pretty formatter.
12
- def escape_cell(s)
13
- s.gsub(/\\(?!\|)/, '\\\\\\\\').gsub(/\n/, '\\n').gsub(/\|/, '\\|')
4
+ module Gherkin
5
+ module Formatter
6
+ module Escaping
7
+ # Escapes a pipes and backslashes:
8
+ #
9
+ # * | becomes \|
10
+ # * \ becomes \\
11
+ #
12
+ # This is used in the pretty formatter.
13
+ def escape_cell(s)
14
+ s.gsub(/\\(?!\|)/, '\\\\\\\\').gsub(/\n/, '\\n').gsub(/\|/, '\\|')
15
+ end
14
16
  end
15
17
  end
16
18
  end
17
19
  end
18
- end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Cucumber
3
4
  module Gherkin
4
5
  module I18n
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'gherkin/token_scanner'
3
4
  require 'gherkin/token_matcher'
4
5
  require 'gherkin/parser'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/cucumber_expressions/parameter_type'
3
4
  require 'cucumber/deprecate'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/glue/invoke_in_world'
3
4
 
4
5
  module Cucumber
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/platform'
3
4
  module Cucumber
4
5
  module Glue
@@ -17,7 +18,7 @@ module Cucumber
17
18
  depth = backtrace.count { |line| line == instance_exec_invocation_line }
18
19
  end_pos = depth > 1 ? instance_exec_pos : -1
19
20
 
20
- backtrace[replacement_line+1..end_pos] = nil
21
+ backtrace[replacement_line + 1..end_pos] = nil
21
22
  backtrace.compact!
22
23
  end
23
24
  end
@@ -27,7 +28,7 @@ module Cucumber
27
28
  if check_arity && !cucumber_compatible_arity?(args, block)
28
29
  world.instance_exec do
29
30
  ari = block.arity
30
- ari = ari < 0 ? (ari.abs-1).to_s+'+' : ari
31
+ ari = ari < 0 ? (ari.abs - 1).to_s + '+' : ari
31
32
  s1 = ari == 1 ? '' : 's'
32
33
  s2 = args.length == 1 ? '' : 's'
33
34
  raise ArityMismatchError.new(
@@ -65,6 +66,5 @@ module Cucumber
65
66
  # is different from the number of Proc arguments.
66
67
  class ArityMismatchError < StandardError
67
68
  end
68
-
69
69
  end
70
70
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/gherkin/formatter/ansi_escapes'
3
4
  require 'cucumber/core/ast/data_table'
4
5
 
@@ -9,7 +10,6 @@ module Cucumber
9
10
  # You can, and probably should, extend this API with your own methods that
10
11
  # make sense in your domain. For more on that, see {Cucumber::Glue::Dsl#World}
11
12
  module ProtoWorld
12
-
13
13
  # Run a single Gherkin step
14
14
  # @example Call another step
15
15
  # step "I am logged in"
@@ -25,7 +25,7 @@ module Cucumber
25
25
  # step "the email should contain:", "Dear sir,\nYou've won a prize!\n"
26
26
  # @param [String] name The name of the step
27
27
  # @param [String,Cucumber::Ast::DocString,Cucumber::Ast::Table] multiline_argument
28
- def step(name, raw_multiline_arg=nil)
28
+ def step(name, raw_multiline_arg = nil)
29
29
  super
30
30
  end
31
31
 
@@ -67,7 +67,7 @@ module Cucumber
67
67
  # %w{ CUC-101 Peeler 22 }
68
68
  # ])
69
69
  #
70
- def table(text_or_table, file=nil, line=0)
70
+ def table(text_or_table, file = nil, line = 0)
71
71
  location = !file ? Core::Ast::Location.of_caller : Core::Ast::Location.new(file, line)
72
72
  MultilineArgument::DataTable.from(text_or_table, location)
73
73
  end
@@ -84,12 +84,12 @@ module Cucumber
84
84
  end
85
85
 
86
86
  # Pause the tests and ask the operator for input
87
- def ask(question, timeout_seconds=60)
87
+ def ask(question, timeout_seconds = 60)
88
88
  super
89
89
  end
90
90
 
91
91
  # Embed an image in the output
92
- def embed(file, mime_type, label='Screenshot')
92
+ def embed(file, mime_type, label = 'Screenshot')
93
93
  super
94
94
  end
95
95
 
@@ -138,7 +138,7 @@ module Cucumber
138
138
  add_namespaced_modules!(namespaced_world_modules)
139
139
  end
140
140
 
141
- define_method(:step) do |name, raw_multiline_arg=nil|
141
+ define_method(:step) do |name, raw_multiline_arg = nil|
142
142
  location = Core::Ast::Location.of_caller
143
143
  runtime.invoke_dynamic_step(name, MultilineArgument.from(raw_multiline_arg, location))
144
144
  end
@@ -159,11 +159,11 @@ module Cucumber
159
159
  end
160
160
  # rubocop:enable UnneededInterpolation
161
161
 
162
- define_method(:ask) do |question, timeout_seconds=60|
162
+ define_method(:ask) do |question, timeout_seconds = 60|
163
163
  runtime.ask(question, timeout_seconds)
164
164
  end
165
165
 
166
- define_method(:embed) do |file, mime_type, label='Screenshot'|
166
+ define_method(:embed) do |file, mime_type, label = 'Screenshot'|
167
167
  runtime.embed(file, mime_type, label)
168
168
  end
169
169
 
@@ -211,7 +211,6 @@ module Cucumber
211
211
  def stringify_namespaced_modules
212
212
  @__namespaced_modules.map { |k, v| "#{v.join(',')} (as #{k})" }.join('+')
213
213
  end
214
-
215
214
  end
216
215
  end
217
216
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/cucumber_expressions/parameter_type_registry'
3
4
  require 'cucumber/cucumber_expressions/cucumber_expression'
4
5
  require 'cucumber/cucumber_expressions/regular_expression'
@@ -62,12 +63,12 @@ module Cucumber
62
63
  end
63
64
 
64
65
  def step_matches(name_to_match)
65
- @step_definitions.reduce([]) { |result, step_definition|
66
+ @step_definitions.reduce([]) do |result, step_definition|
66
67
  if (arguments = step_definition.arguments_from(name_to_match))
67
68
  result << StepMatch.new(step_definition, name_to_match, arguments)
68
69
  end
69
70
  result
70
- }
71
+ end
71
72
  end
72
73
 
73
74
  def register_rb_hook(phase, tag_expressions, proc)
@@ -134,7 +135,7 @@ module Cucumber
134
135
  end
135
136
 
136
137
  def hooks_for(phase, scenario) #:nodoc:
137
- hooks[phase.to_sym].select{|hook| scenario.accept_hook?(hook)}
138
+ hooks[phase.to_sym].select {|hook| scenario.accept_hook?(hook)}
138
139
  end
139
140
 
140
141
  def unmatched_step_definitions
@@ -155,6 +156,14 @@ module Cucumber
155
156
  raise ArgumentError.new('Expression must be a String or Regexp')
156
157
  end
157
158
 
159
+ def self.cli_snippet_type_options
160
+ registry = CucumberExpressions::ParameterTypeRegistry.new
161
+ cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
162
+ Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
163
+ Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
164
+ end
165
+ end
166
+
158
167
  private
159
168
 
160
169
  def available_step_definition_hash
@@ -166,15 +175,7 @@ module Cucumber
166
175
  end
167
176
 
168
177
  def hooks
169
- @hooks ||= Hash.new{|h,k| h[k] = []}
170
- end
171
-
172
- def self.cli_snippet_type_options
173
- registry = CucumberExpressions::ParameterTypeRegistry.new
174
- cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
175
- Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
176
- Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
177
- end
178
+ @hooks ||= Hash.new {|h, k| h[k] = []}
178
179
  end
179
180
  end
180
181
 
@@ -3,7 +3,6 @@
3
3
  module Cucumber
4
4
  module Glue
5
5
  module Snippet
6
-
7
6
  ARGUMENT_PATTERNS = ['"([^"]*)"', '(\d+)']
8
7
 
9
8
  class Generator
@@ -26,7 +25,6 @@ module Cucumber
26
25
  end
27
26
 
28
27
  class BaseSnippet
29
-
30
28
  def initialize(cucumber_expression_generator, code_keyword, step_name, multiline_argument)
31
29
  @number_of_arguments = 0
32
30
  @code_keyword = code_keyword
@@ -72,7 +70,7 @@ module Cucumber
72
70
  end
73
71
 
74
72
  def parameters
75
- block_args = (0...number_of_arguments).map { |n| "arg#{n+1}" }
73
+ block_args = (0...number_of_arguments).map { |n| "arg#{n + 1}" }
76
74
  multiline_argument.append_block_parameter_to(block_args)
77
75
  block_args.empty? ? '' : " |#{block_args.join(", ")}|"
78
76
  end
@@ -80,7 +78,6 @@ module Cucumber
80
78
  def self.example(cucumber_expression_generator)
81
79
  new(cucumber_expression_generator, 'Given', 'I have 2 cukes', MultilineArgument::None.new).step
82
80
  end
83
-
84
81
  end
85
82
 
86
83
  class CucumberExpression < BaseSnippet
@@ -151,7 +148,6 @@ module Cucumber
151
148
  }
152
149
 
153
150
  module MultilineArgumentSnippet
154
-
155
151
  def self.new(multiline_argument)
156
152
  builder = Builder.new
157
153
  multiline_argument.describe_to(builder)
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/step_match'
3
4
  require 'cucumber/step_argument'
4
5
  require 'cucumber/core_ext/string'
@@ -17,7 +18,6 @@ module Cucumber
17
18
  # end
18
19
  #
19
20
  class StepDefinition
20
-
21
21
  class MissingProc < StandardError
22
22
  def message
23
23
  'Step definitions must always have a proc or symbol'
@@ -71,7 +71,7 @@ module Cucumber
71
71
  # @registry.available_step_definition(regexp_source, location)
72
72
  end
73
73
 
74
- # @api private
74
+ # @api private
75
75
  def to_hash
76
76
  type = expression.is_a?(CucumberExpressions::RegularExpression) ? 'regular expression' : 'cucumber expression'
77
77
  regexp = expression.regexp
@@ -91,19 +91,19 @@ module Cucumber
91
91
  }
92
92
  end
93
93
 
94
- # @api private
94
+ # @api private
95
95
  def ==(step_definition)
96
96
  expression.source == step_definition.expression.source
97
97
  end
98
98
 
99
- # @api private
99
+ # @api private
100
100
  def arguments_from(step_name)
101
101
  args = @expression.match(step_name)
102
102
  # @registry.invoked_step_definition(regexp_source, location) if args
103
103
  args
104
104
  end
105
105
 
106
- # @api private
106
+ # @api private
107
107
  # TODO: inline this and step definition just be a value object
108
108
  def invoke(args)
109
109
  begin
@@ -114,12 +114,12 @@ module Cucumber
114
114
  end
115
115
  end
116
116
 
117
- # @api private
117
+ # @api private
118
118
  def backtrace_line
119
119
  "#{location}:in `#{@expression}'"
120
120
  end
121
121
 
122
- # @api private
122
+ # @api private
123
123
  def file_colon_line
124
124
  case @proc
125
125
  when Proc
@@ -129,12 +129,12 @@ module Cucumber
129
129
  end
130
130
  end
131
131
 
132
- # The source location where the step defintion can be found
132
+ # The source location where the step definition can be found
133
133
  def location
134
134
  @location ||= Cucumber::Core::Ast::Location.from_source_location(*@proc.source_location)
135
135
  end
136
136
 
137
- # @api private
137
+ # @api private
138
138
  def file
139
139
  @file ||= location.file
140
140
  end
@@ -1,6 +1,5 @@
1
1
  module Cucumber
2
2
  module Glue
3
-
4
3
  class WorldFactory
5
4
  def initialize(proc)
6
5
  @proc = proc || -> { Object.new }
@@ -18,6 +17,5 @@ module Cucumber
18
17
  raise e
19
18
  end
20
19
  end
21
-
22
20
  end
23
21
  end
@@ -1,14 +1,13 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'pathname'
3
4
  require 'cucumber/core/ast/location'
4
5
  require 'cucumber/core/test/around_hook'
5
6
 
6
7
  module Cucumber
7
-
8
8
  # Hooks quack enough like `Cucumber::Core::Ast` source nodes that we can use them as
9
9
  # source for test steps
10
10
  module Hooks
11
-
12
11
  class << self
13
12
  def before_hook(source, location, &block)
14
13
  build_hook_step(source, location, block, BeforeHook, Core::Test::UnskippableAction)
@@ -107,6 +106,5 @@ module Cucumber
107
106
  visitor.after_step_hook(self, *args)
108
107
  end
109
108
  end
110
-
111
109
  end
112
110
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Cucumber
3
4
  module LoadPath
4
5
  def add_dirs(*dirs)
@@ -1,17 +1,17 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'delegate'
3
4
  require 'cucumber/multiline_argument/data_table'
4
5
  require 'cucumber/multiline_argument/doc_string'
5
6
 
6
7
  module Cucumber
7
8
  module MultilineArgument
8
-
9
9
  class << self
10
10
  def from_core(node)
11
11
  builder.wrap(node)
12
12
  end
13
13
 
14
- def from(argument, location=nil, content_type=nil)
14
+ def from(argument, location = nil, content_type = nil)
15
15
  location ||= Core::Ast::Location.of_caller
16
16
  case argument
17
17
  when String
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'forwardable'
3
4
  require 'cucumber/gherkin/data_table_parser'
4
5
  require 'cucumber/gherkin/formatter/escaping'
@@ -74,8 +75,7 @@ module Cucumber
74
75
  end
75
76
  end
76
77
 
77
-
78
- NULL_CONVERSIONS = Hash.new({ :strict => false, :proc => lambda{ |cell_value| cell_value } }).freeze
78
+ NULL_CONVERSIONS = Hash.new({ :strict => false, :proc => lambda { |cell_value| cell_value } }).freeze
79
79
 
80
80
  # @param data [Core::Ast::DataTable] the data for the table
81
81
  # @param conversion_procs [Hash] see map_columns!
@@ -161,7 +161,7 @@ module Cucumber
161
161
  def symbolic_hashes
162
162
  @symbolic_hashes ||=
163
163
  self.hashes.map do |string_hash|
164
- Hash[string_hash.map{ |a,b| [symbolize_key(a), b] }]
164
+ Hash[string_hash.map { |a, b| [symbolize_key(a), b] }]
165
165
  end
166
166
  end
167
167
 
@@ -260,7 +260,7 @@ module Cucumber
260
260
  # table.hashes.keys
261
261
  # # => ['phone number', 'ADDRESS']
262
262
  #
263
- def map_headers!(mappings={}, &block)
263
+ def map_headers!(mappings = {}, &block)
264
264
  # TODO: Remove this method for 2.0
265
265
  clear_cache!
266
266
  @header_mappings = mappings
@@ -268,7 +268,7 @@ module Cucumber
268
268
  end
269
269
 
270
270
  # Returns a new Table where the headers are redefined. See #map_headers!
271
- def map_headers(mappings={}, &block)
271
+ def map_headers(mappings = {}, &block)
272
272
  self.class.new(Core::Ast::DataTable.new(raw, location), @conversion_procs.dup, mappings, block)
273
273
  end
274
274
 
@@ -284,14 +284,14 @@ module Cucumber
284
284
  # end
285
285
  # end
286
286
  #
287
- def map_column!(column_name, strict=true, &conversion_proc)
287
+ def map_column!(column_name, strict = true, &conversion_proc)
288
288
  # TODO: Remove this method for 2.0
289
289
  @conversion_procs[column_name.to_s] = { :strict => strict, :proc => conversion_proc }
290
290
  self
291
291
  end
292
292
 
293
293
  # Returns a new Table with an additional column mapping. See #map_column!
294
- def map_column(column_name, strict=true, &conversion_proc)
294
+ def map_column(column_name, strict = true, &conversion_proc)
295
295
  conversion_procs = @conversion_procs.dup
296
296
  conversion_procs[column_name.to_s] = { :strict => strict, :proc => conversion_proc }
297
297
  self.class.new(Core::Ast::DataTable.new(raw, location), conversion_procs, @header_mappings.dup, @header_conversion_proc)
@@ -333,7 +333,7 @@ module Cucumber
333
333
  # Calling this method is particularly useful in <tt>Then</tt> steps that take
334
334
  # a Table argument, if you want to compare that table to some actual values.
335
335
  #
336
- def diff!(other_table, options={})
336
+ def diff!(other_table, options = {})
337
337
  other_table = ensure_table(other_table)
338
338
  other_table.convert_headers!
339
339
  other_table.convert_columns!
@@ -375,7 +375,7 @@ module Cucumber
375
375
  end
376
376
 
377
377
  def has_text?(text) #:nodoc:
378
- raw.flatten.compact.detect{|cell_value| cell_value.index(text)}
378
+ raw.flatten.compact.detect {|cell_value| cell_value.index(text)}
379
379
  end
380
380
 
381
381
  def cells_rows #:nodoc:
@@ -554,7 +554,7 @@ module Cucumber
554
554
  end
555
555
 
556
556
  def width
557
- map{|cell| cell.value ? escape_cell(cell.value.to_s).unpack('U*').length : 0}.max
557
+ map {|cell| cell.value ? escape_cell(cell.value.to_s).unpack('U*').length : 0}.max
558
558
  end
559
559
  end
560
560