cucumber-tag-expressions 7.0.0 → 8.1.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
  SHA256:
3
- metadata.gz: fef87856d34112746f4eb55b79609465df3d58c6dd2653bd834b6a649b4521ea
4
- data.tar.gz: e7dcc602274caaae9b5aa198a31d035cb375b6d5af07913cc52bc9ec371feabf
3
+ metadata.gz: ca8718895c5d5686b66697971803b693b584e38c34cd5b02433adc38e99562d5
4
+ data.tar.gz: e798b0ef686e5df942edb6289e681d615f734f21848897f9b82549be376cf6bf
5
5
  SHA512:
6
- metadata.gz: de8838af38969ce92dda4f8e01ca7dacb100db30cf5b2207b51a2aba744e8dddc23b1801a92e2829b863ad968b62e13d7eae0e1d5a19840ed042cf2d7fde9528
7
- data.tar.gz: 1e535cde232ca5762212c70306b7d70e94fef9ce683dd1aab01fdc8dd9353a9727d6cfaeb105f8750d017f2e121efb85b4a75d2f828ddc895e9eaab97d479cb7
6
+ metadata.gz: '0951dd38d6ae796ce4d0eba06c91f4bb760b7b3f4f5f8d212123fd9db486fef7780212ac72ede15342e7528b3f866f531b64a4e484514f798d606c7f9c623980'
7
+ data.tar.gz: a26645be0fbe7176f9da6e25ddcba1ab9837bf3d79bf110490b4909cbe359c86402410263aefc322c0d2da5ce5538c596f8a85d1a8d7621da832deb9eb2d3a5b
@@ -79,7 +79,7 @@ module Cucumber
79
79
  end
80
80
 
81
81
  def to_s
82
- 'true'
82
+ ''
83
83
  end
84
84
  end
85
85
  end
@@ -18,21 +18,16 @@ module Cucumber
18
18
  tokens.each { |token| expected_token_type = handle_sequential_tokens(token, infix_expression, expected_token_type) }
19
19
  while @operators.any?
20
20
  raise "Tag expression \"#{infix_expression}\" could not be parsed because of syntax error: Unmatched (." if @operators.last == '('
21
-
22
- push_expression(pop(@operators))
21
+ push_expression(infix_expression, @operators.pop)
23
22
  end
24
- pop(@expressions)
23
+ @expressions.pop
25
24
  end
26
25
 
27
26
  private
28
27
 
29
- def assoc_correct?(token, value)
30
- operator_types.dig(token, :assoc) == value
31
- end
32
-
33
28
  def lower_precedence?(operation)
34
- (assoc_correct?(operation, :left) && precedence(operation) <= precedence(@operators.last)) ||
35
- (assoc_correct?(operation, :right) && precedence(operation) < precedence(@operators.last))
29
+ (operator_types.dig(operation, :assoc) == :left && precedence(operation) <= precedence(@operators.last)) ||
30
+ (operator_types.dig(operation, :assoc) == :right && precedence(operation) < precedence(@operators.last))
36
31
  end
37
32
 
38
33
  def operator?(token)
@@ -71,11 +66,11 @@ module Cucumber
71
66
  tokens
72
67
  end
73
68
 
74
- def push_expression(token)
69
+ def push_expression(infix_expression, token)
75
70
  case token
76
- when 'and' then @expressions.push(And.new(*pop(@expressions, 2)))
77
- when 'or' then @expressions.push(Or.new(*pop(@expressions, 2)))
78
- when 'not' then @expressions.push(Not.new(pop(@expressions)))
71
+ when 'and' then @expressions.push(And.new(*popOperand(infix_expression, @expressions, 2)))
72
+ when 'or' then @expressions.push(Or.new(*popOperand(infix_expression, @expressions, 2)))
73
+ when 'not' then @expressions.push(Not.new(popOperand(infix_expression, @expressions)))
79
74
  else @expressions.push(Literal.new(token))
80
75
  end
81
76
  end
@@ -96,7 +91,7 @@ module Cucumber
96
91
 
97
92
  def handle_binary_operator(infix_expression, token, expected_token_type)
98
93
  check(infix_expression, expected_token_type, :operator)
99
- push_expression(pop(@operators)) while @operators.any? && operator?(@operators.last) && lower_precedence?(token)
94
+ push_expression(infix_expression, @operators.pop) while @operators.any? && operator?(@operators.last) && lower_precedence?(token)
100
95
  @operators.push(token)
101
96
  :operand
102
97
  end
@@ -109,16 +104,16 @@ module Cucumber
109
104
 
110
105
  def handle_close_paren(infix_expression, _token, expected_token_type)
111
106
  check(infix_expression, expected_token_type, :operator)
112
- push_expression(pop(@operators)) while @operators.any? && @operators.last != '('
107
+ push_expression(infix_expression, @operators.pop) while @operators.any? && @operators.last != '('
113
108
  raise "Tag expression \"#{infix_expression}\" could not be parsed because of syntax error: Unmatched )." if @operators.empty?
114
109
 
115
- pop(@operators) if @operators.last == '('
110
+ @operators.pop if @operators.last == '('
116
111
  :operator
117
112
  end
118
113
 
119
114
  def handle_literal(infix_expression, token, expected_token_type)
120
115
  check(infix_expression, expected_token_type, :operand)
121
- push_expression(token)
116
+ push_expression(infix_expression, token)
122
117
  :operator
123
118
  end
124
119
 
@@ -128,9 +123,9 @@ module Cucumber
128
123
  raise "Tag expression \"#{infix_expression}\" could not be parsed because of syntax error: Expected #{expected_token_type}."
129
124
  end
130
125
 
131
- def pop(array, amount = 1)
126
+ def popOperand(infix_expression, array, amount = 1)
132
127
  result = array.pop(amount)
133
- raise('Empty stack') if result.length != amount
128
+ raise "Tag expression \"#{infix_expression}\" could not be parsed because of syntax error: Expected operand." if result.length != amount
134
129
 
135
130
  amount == 1 ? result.first : result
136
131
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-tag-expressions
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrea Nodari
@@ -131,5 +131,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  requirements: []
132
132
  rubygems_version: 3.6.9
133
133
  specification_version: 4
134
- summary: cucumber-tag-expressions-7.0.0
134
+ summary: cucumber-tag-expressions-8.1.0
135
135
  test_files: []