cucumber-expressions 4.0.4 → 5.0.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 585a2bd12be1402edbd044df4eba75a3facc8ae7
4
- data.tar.gz: e2f73a0945067fc0f36aee14c2fd2c8a0a1953cf
3
+ metadata.gz: 496273cb3a1f1f91726135226ec1d3e8d69eef38
4
+ data.tar.gz: 7d0b9fe4bb923c498b8202a9a94c4bf62d86bb26
5
5
  SHA512:
6
- metadata.gz: 107cee1adc2c92cf7fde7b709dc01ae34b316e34ce604adc19232d75ed66d5abfb28be5cf29c96d6e633d34bf38c5650a8626d314a4db0c6064e481622e28923
7
- data.tar.gz: caebefb4d97b8abe78c6565a643bb35c6f96175b5169394b46d03b9cfab339512d7167d6df1a0ea4071033a2139a77e88586139ed0868df45ff4275bb768c215
6
+ metadata.gz: 7f1052d6c856b8d34a6ac44eb2027bf60b3e0f89d0089d3d76f0f58a913de40abe2c97c318142787c291bee3b084a8feda60d5728da5f7ab97230e1e682cb9ab
7
+ data.tar.gz: 6118073dcf156c9e2a9d580252aade7b371aa5202fb4a5ab7e29332b8ae57fffdd561037002bf7f42269cde1d6cff61986865dd5cf8de86595a96169b051979a
@@ -1,7 +1,7 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'cucumber-expressions'
4
- s.version = '4.0.4'
4
+ s.version = '5.0.0'
5
5
  s.authors = ["Aslak Hellesøy"]
6
6
  s.description = 'Cucumber Expressions - a simpler alternative to Regular Expressions'
7
7
  s.summary = "cucumber-expressions-#{s.version}"
@@ -27,8 +27,10 @@ module Cucumber
27
27
  @group, @parameter_type = group, parameter_type
28
28
  end
29
29
 
30
- def value
31
- @parameter_type.transform(@group ? @group.values : nil)
30
+ def value(self_obj=:nil)
31
+ raise "No self_obj" if self_obj == :nil
32
+ group_values = @group ? @group.values : nil
33
+ @parameter_type.transform(self_obj, group_values)
32
34
  end
33
35
  end
34
36
  end
@@ -34,15 +34,17 @@ module Cucumber
34
34
  @regexps = string_array(regexp)
35
35
  end
36
36
 
37
- def transform(group_values)
37
+ def transform(self_obj, group_values)
38
38
  if @transformer.arity == 1
39
39
  non_nil_group_values = group_values.compact
40
40
  raise CucumberExpressionError.new(
41
41
  "Single transformer unexpectedly matched 2 values - \"#{non_nil_group_values[0]}\" and \"${non_nil_group_values[1]}\""
42
42
  ) if non_nil_group_values.length >= 2
43
- return @transformer.call(non_nil_group_values[0])
43
+ args = [non_nil_group_values[0]]
44
+ else
45
+ args = group_values
44
46
  end
45
- @transformer.call(*group_values)
47
+ self_obj.instance_exec(*args, &@transformer)
46
48
  end
47
49
 
48
50
  def <=>(other)
@@ -11,7 +11,7 @@ module Cucumber
11
11
  expr = "I have {int} cuke(s)"
12
12
  expression = CucumberExpression.new(expr, parameter_registry)
13
13
  args = expression.match("I have 7 cukes")
14
- expect(args[0].value).to eq(7)
14
+ expect(args[0].value(nil)).to eq(7)
15
15
  ### [capture-match-arguments]
16
16
  end
17
17
 
@@ -69,13 +69,42 @@ module Cucumber
69
69
  expect(CucumberExpression.new(expr, ParameterTypeRegistry.new).source).to eq(expr)
70
70
  end
71
71
 
72
+ it "delegates transform to custom object" do
73
+ parameter_type_registry = ParameterTypeRegistry.new
74
+ parameter_type_registry.define_parameter_type(
75
+ ParameterType.new(
76
+ 'widget',
77
+ /\w+/,
78
+ Object,
79
+ -> (s) {
80
+ self.create_widget(s)
81
+ },
82
+ false,
83
+ true
84
+ )
85
+ )
86
+ expression = CucumberExpression.new(
87
+ 'I have a {widget}',
88
+ parameter_type_registry
89
+ )
90
+
91
+ class World
92
+ def create_widget(s)
93
+ "widget:#{s}"
94
+ end
95
+ end
96
+
97
+ args = expression.match("I have a bolt")
98
+ expect(args[0].value(World.new)).to eq('widget:bolt')
99
+ end
100
+
72
101
  describe "escapes special characters" do
73
102
  %w(\\ [ ] ^ $ . | ? * +).each do |character|
74
103
  it "escapes #{character}" do
75
104
  expr = "I have {int} cuke(s) and #{character}"
76
105
  expression = CucumberExpression.new(expr, ParameterTypeRegistry.new)
77
106
  arg1 = expression.match("I have 800 cukes and #{character}")[0]
78
- expect(arg1.value).to eq(800)
107
+ expect(arg1.value(nil)).to eq(800)
79
108
  end
80
109
  end
81
110
  end
@@ -84,7 +113,7 @@ module Cucumber
84
113
  cucumber_expression = CucumberExpression.new(expression, ParameterTypeRegistry.new)
85
114
  args = cucumber_expression.match(text)
86
115
  return nil if args.nil?
87
- args.map {|arg| arg.value}
116
+ args.map {|arg| arg.value(nil)}
88
117
  end
89
118
  end
90
119
  end
@@ -62,7 +62,7 @@ module Cucumber
62
62
  describe CucumberExpression do
63
63
  it "matches parameters with custom parameter type" do
64
64
  expression = CucumberExpression.new("I have a {color} ball", @parameter_type_registry)
65
- transformed_argument_value = expression.match("I have a red ball")[0].value
65
+ transformed_argument_value = expression.match("I have a red ball")[0].value(nil)
66
66
  expect(transformed_argument_value).to eq(Color.new('red'))
67
67
  end
68
68
 
@@ -82,13 +82,13 @@ module Cucumber
82
82
  )
83
83
  args = expression.match('A 5 thick line from 10,20,30 to 40,50,60')
84
84
 
85
- thick = args[0].value
85
+ thick = args[0].value(nil)
86
86
  expect(thick).to eq(5)
87
87
 
88
- from = args[1].value
88
+ from = args[1].value(nil)
89
89
  expect(from).to eq(Coordinate.new(10, 20, 30))
90
90
 
91
- to = args[2].value
91
+ to = args[2].value(nil)
92
92
  expect(to).to eq(Coordinate.new(40, 50, 60))
93
93
  end
94
94
 
@@ -103,7 +103,7 @@ module Cucumber
103
103
  false
104
104
  ))
105
105
  expression = CucumberExpression.new("I have a {color} ball", parameter_type_registry)
106
- transformed_argument_value = expression.match("I have a dark red ball")[0].value
106
+ transformed_argument_value = expression.match("I have a dark red ball")[0].value(nil)
107
107
  expect(transformed_argument_value).to eq(Color.new('dark red'))
108
108
  end
109
109
 
@@ -118,7 +118,7 @@ module Cucumber
118
118
  ))
119
119
  expression = CucumberExpression.new("I have a {throwing} parameter", @parameter_type_registry)
120
120
  args = expression.match("I have a bad parameter")
121
- expect {args[0].value}.to raise_error("Can't transform [bad]")
121
+ expect {args[0].value(nil)}.to raise_error("Can't transform [bad]")
122
122
  end
123
123
 
124
124
  describe "conflicting parameter type" do
@@ -157,11 +157,11 @@ module Cucumber
157
157
  ))
158
158
 
159
159
  css_color = CucumberExpression.new("I have a {css-color} ball", @parameter_type_registry)
160
- css_color_value = css_color.match("I have a blue ball")[0].value
160
+ css_color_value = css_color.match("I have a blue ball")[0].value(nil)
161
161
  expect(css_color_value).to eq(CssColor.new("blue"))
162
162
 
163
163
  color = CucumberExpression.new("I have a {color} ball", @parameter_type_registry)
164
- color_value = color.match("I have a blue ball")[0].value
164
+ color_value = color.match("I have a blue ball")[0].value(nil)
165
165
  expect(color_value).to eq(Color.new("blue"))
166
166
  end
167
167
  end
@@ -170,7 +170,7 @@ module Cucumber
170
170
  describe RegularExpression do
171
171
  it "matches arguments with custom parameter type" do
172
172
  expression = RegularExpression.new(/I have a (red|blue|yellow) ball/, @parameter_type_registry)
173
- value = expression.match("I have a red ball")[0].value
173
+ value = expression.match("I have a red ball")[0].value(nil)
174
174
  expect(value).to eq(Color.new('red'))
175
175
  end
176
176
  end
@@ -13,7 +13,7 @@ module Cucumber
13
13
 
14
14
  arguments = expression.match(text)
15
15
  return nil if arguments.nil?
16
- arguments.map { |arg| arg.value }
16
+ arguments.map { |arg| arg.value(nil) }
17
17
  end
18
18
 
19
19
  File.open(File.expand_path("../../../../examples.txt", __FILE__), "r:utf-8") do |io|
@@ -11,8 +11,8 @@ module Cucumber
11
11
  expr = /I have (\d+) cukes? in my (\w*) now/
12
12
  expression = RegularExpression.new(expr, parameter_type_registry)
13
13
  args = expression.match("I have 7 cukes in my belly now")
14
- expect( args[0].value ).to eq(7)
15
- expect( args[1].value ).to eq("belly")
14
+ expect( args[0].value(nil) ).to eq(7)
15
+ expect( args[1].value(nil) ).to eq("belly")
16
16
  ### [capture-match-arguments]
17
17
  end
18
18
 
@@ -62,7 +62,7 @@ module Cucumber
62
62
  regular_expression = RegularExpression.new(expression, ParameterTypeRegistry.new)
63
63
  arguments = regular_expression.match(text)
64
64
  return nil if arguments.nil?
65
- arguments.map { |arg| arg.value }
65
+ arguments.map { |arg| arg.value(nil) }
66
66
  end
67
67
  end
68
68
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-expressions
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.4
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-05 00:00:00.000000000 Z
11
+ date: 2017-10-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -130,7 +130,7 @@ rubyforge_project:
130
130
  rubygems_version: 2.6.8
131
131
  signing_key:
132
132
  specification_version: 4
133
- summary: cucumber-expressions-4.0.4
133
+ summary: cucumber-expressions-5.0.0
134
134
  test_files:
135
135
  - spec/capture_warnings.rb
136
136
  - spec/coverage.rb