cucumber-gherkin 29.0.0 → 30.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,6 +11,7 @@ module Gherkin
11
11
  pickles = []
12
12
 
13
13
  return pickles unless gherkin_document.feature
14
+
14
15
  feature = gherkin_document.feature
15
16
  language = feature.language
16
17
  tags = feature.tags
@@ -143,9 +144,7 @@ module Gherkin
143
144
  type: keyword_type,
144
145
  text: interpolate(step.text, variable_cells, value_cells),
145
146
  }
146
- if values_row
147
- props[:ast_node_ids].push(values_row.id)
148
- end
147
+ props[:ast_node_ids].push(values_row.id) if values_row
149
148
 
150
149
  if step.data_table
151
150
  data_table = Cucumber::Messages::PickleStepArgument.new(
@@ -180,14 +179,12 @@ module Gherkin
180
179
  props = {
181
180
  content: interpolate(doc_string.content, variable_cells, value_cells)
182
181
  }
183
- if doc_string.media_type
184
- props[:media_type] = interpolate(doc_string.media_type, variable_cells, value_cells)
185
- end
182
+ props[:media_type] = interpolate(doc_string.media_type, variable_cells, value_cells) if doc_string.media_type
186
183
  Cucumber::Messages::PickleDocString.new(**props)
187
184
  end
188
185
 
189
186
  def pickle_tags(tags)
190
- tags.map {|tag| pickle_tag(tag)}
187
+ tags.map { |tag| pickle_tag(tag) }
191
188
  end
192
189
 
193
190
  def pickle_tag(tag)
data/lib/gherkin/query.rb CHANGED
@@ -12,11 +12,13 @@ module Gherkin
12
12
 
13
13
  def scenario_parent_locations(scenario_node_id)
14
14
  return @scenario_parent_locations[scenario_node_id] if @scenario_parent_locations.has_key?(scenario_node_id)
15
+
15
16
  raise AstNodeNotLocatedException, "No scenario parent locations found for #{scenario_node_id} }. Known: #{@scenario_parent_locations.keys}"
16
17
  end
17
18
 
18
19
  def location(ast_node_id)
19
20
  return @ast_node_locations[ast_node_id] if @ast_node_locations.has_key?(ast_node_id)
21
+
20
22
  raise AstNodeNotLocatedException, "No location found for #{ast_node_id} }. Known: #{@ast_node_locations.keys}"
21
23
  end
22
24
 
@@ -24,6 +26,7 @@ module Gherkin
24
26
 
25
27
  def update_feature(feature)
26
28
  return if feature.nil?
29
+
27
30
  store_nodes_location(feature.tags)
28
31
 
29
32
  feature.children.each do |child|
@@ -35,6 +38,7 @@ module Gherkin
35
38
 
36
39
  def update_rule(feature, rule)
37
40
  return if rule.nil?
41
+
38
42
  store_nodes_location(rule.tags)
39
43
  rule.children.each do |child|
40
44
  update_background(rule, child.background) if child.background
@@ -18,30 +18,31 @@ module Gherkin
18
18
 
19
19
  def messages
20
20
  enumerated = false
21
- Enumerator.new do |y|
21
+ Enumerator.new do |yielder|
22
22
  raise DoubleIterationException, "Messages have already been enumerated" if enumerated
23
+
23
24
  enumerated = true
24
25
 
25
26
  sources.each do |source|
26
- y.yield(Cucumber::Messages::Envelope.new(source: source)) if @options[:include_source]
27
+ yielder.yield(Cucumber::Messages::Envelope.new(source: source)) if @options[:include_source]
27
28
  begin
28
29
  gherkin_document = nil
29
30
 
30
31
  if @options[:include_gherkin_document]
31
32
  gherkin_document = build_gherkin_document(source)
32
- y.yield(Cucumber::Messages::Envelope.new(gherkin_document: gherkin_document))
33
+ yielder.yield(Cucumber::Messages::Envelope.new(gherkin_document: gherkin_document))
33
34
  end
34
35
  if @options[:include_pickles]
35
36
  gherkin_document ||= build_gherkin_document(source)
36
37
  pickles = @compiler.compile(gherkin_document, source)
37
38
  pickles.each do |pickle|
38
- y.yield(Cucumber::Messages::Envelope.new(pickle: pickle))
39
+ yielder.yield(Cucumber::Messages::Envelope.new(pickle: pickle))
39
40
  end
40
41
  end
41
- rescue CompositeParserException => err
42
- yield_parse_errors(y, err.errors, source.uri)
43
- rescue ParserException => err
44
- yield_parse_errors(y, [err], source.uri)
42
+ rescue CompositeParserException => e
43
+ yield_parse_errors(yielder, e.errors, source.uri)
44
+ rescue ParserException => e
45
+ yield_parse_errors(yielder, [e], source.uri)
45
46
  end
46
47
  end
47
48
  end
@@ -49,7 +50,7 @@ module Gherkin
49
50
 
50
51
  private
51
52
 
52
- def yield_parse_errors(y, errors, uri)
53
+ def yield_parse_errors(yielder, errors, uri)
53
54
  errors.each do |err|
54
55
  parse_error = Cucumber::Messages::ParseError.new(
55
56
  source: Cucumber::Messages::SourceReference.new(
@@ -61,22 +62,22 @@ module Gherkin
61
62
  ),
62
63
  message: err.message
63
64
  )
64
- y.yield(Cucumber::Messages::Envelope.new(parse_error: parse_error))
65
+ yielder.yield(Cucumber::Messages::Envelope.new(parse_error: parse_error))
65
66
  end
66
67
  end
67
68
 
68
69
  def sources
69
- Enumerator.new do |y|
70
+ Enumerator.new do |yielder|
70
71
  @paths.each do |path|
71
72
  source = Cucumber::Messages::Source.new(
72
73
  uri: path,
73
74
  data: File.open(path, 'r:UTF-8', &:read),
74
75
  media_type: 'text/x.cucumber.gherkin+plain'
75
76
  )
76
- y.yield(source)
77
+ yielder.yield(source)
77
78
  end
78
79
  @sources.each do |source|
79
- y.yield(source)
80
+ yielder.yield(source)
80
81
  end
81
82
  end
82
83
  end
@@ -5,35 +5,35 @@ module Gherkin
5
5
  end
6
6
 
7
7
  def reset
8
- @tokens_text = ""
8
+ @tokens_text = ''
9
9
  end
10
10
 
11
11
  def build(token)
12
12
  @tokens_text << "#{format_token(token)}\n"
13
13
  end
14
14
 
15
- def start_rule(rule_type)
16
- end
15
+ def start_rule(_rule_type); end
17
16
 
18
- def end_rule(rule_type)
19
- end
17
+ def end_rule(_rule_type); end
20
18
 
21
19
  def get_result
22
20
  @tokens_text
23
21
  end
24
22
 
25
23
  private
24
+
26
25
  def format_token(token)
27
- return "EOF" if token.eof?
26
+ return 'EOF' if token.eof?
28
27
 
29
- sprintf "(%s:%s)%s:%s/%s/%s",
28
+ sprintf(
29
+ "(%s:%s)%s:%s/%s/%s",
30
30
  token.location[:line],
31
31
  token.location[:column],
32
32
  token.matched_type,
33
33
  token.matched_keyword ? sprintf("(%s)%s", token.matched_keyword_type, token.matched_keyword) : "",
34
34
  token.matched_text,
35
- Array(token.matched_items).map { |i| "#{i.column}:#{i.text}"}.join(',')
35
+ Array(token.matched_items).map { |i| "#{i.column}:#{i.text}" }.join(',')
36
+ )
36
37
  end
37
-
38
38
  end
39
39
  end
@@ -48,21 +48,22 @@ module Gherkin
48
48
 
49
49
  def match_TableRow(token)
50
50
  return false unless token.line.start_with?('|')
51
- # TODO: indent
52
- set_token_matched(token, :TableRow, nil, nil, nil, nil,
53
- token.line.table_cells)
51
+
52
+ set_token_matched(token, :TableRow, nil, nil, nil, nil, token.line.table_cells)
54
53
  true
55
54
  end
56
55
 
57
56
  def match_Empty(token)
58
57
  return false unless token.line.empty?
58
+
59
59
  set_token_matched(token, :Empty, nil, nil, 0)
60
60
  true
61
61
  end
62
62
 
63
63
  def match_Comment(token)
64
64
  return false unless token.line.start_with?('#')
65
- text = token.line.get_line_text(0) #take the entire line, including leading space
65
+
66
+ text = token.line.get_line_text(0) # take the entire line, including leading space
66
67
  set_token_matched(token, :Comment, text, nil, 0)
67
68
  true
68
69
  end
@@ -70,7 +71,7 @@ module Gherkin
70
71
  def match_Language(token)
71
72
  return false unless token.line.trimmed_line_text =~ LANGUAGE_PATTERN
72
73
 
73
- dialect_name = $1
74
+ dialect_name = Regexp.last_match(1)
74
75
  set_token_matched(token, :Language, dialect_name)
75
76
 
76
77
  change_dialect(dialect_name, token.location)
@@ -108,6 +109,7 @@ module Gherkin
108
109
 
109
110
  def match_EOF(token)
110
111
  return false unless token.eof?
112
+
111
113
  set_token_matched(token, :EOF)
112
114
  true
113
115
  end
@@ -132,22 +134,18 @@ module Gherkin
132
134
  title = token.line.get_rest_trimmed(keyword.length)
133
135
  keyword_types = @keyword_types[keyword]
134
136
  keyword_type = keyword_types[0]
135
- if keyword_types.length() > 1
136
- keyword_type = Cucumber::Messages::StepKeywordType::UNKNOWN
137
- end
137
+ keyword_type = Cucumber::Messages::StepKeywordType::UNKNOWN if keyword_types.length > 1
138
138
 
139
139
  set_token_matched(token,
140
140
  :StepLine, title, keyword, nil, keyword_type)
141
- return true
141
+ true
142
142
  end
143
143
 
144
144
  private
145
145
 
146
146
  def add_keyword_type_mappings(keywords, type)
147
147
  keywords.each do |keyword|
148
- if not @keyword_types.has_key?(keyword)
149
- @keyword_types[keyword] = []
150
- end
148
+ @keyword_types[keyword] = [] unless @keyword_types.has_key?(keyword)
151
149
  @keyword_types[keyword] += [type]
152
150
  end
153
151
  end
@@ -14,7 +14,7 @@ module Gherkin
14
14
  def initialize(source_or_io)
15
15
  @line_number = 0
16
16
 
17
- case(source_or_io)
17
+ case source_or_io
18
18
  when String
19
19
  @io = StringIO.new(source_or_io)
20
20
  when StringIO, IO
@@ -25,7 +25,7 @@ module Gherkin
25
25
  end
26
26
 
27
27
  def read
28
- location = {line: @line_number += 1}
28
+ location = { line: @line_number += 1 }
29
29
  if @io.nil? || line = @io.gets
30
30
  gherkin_line = line ? GherkinLine.new(line, location[:line]) : nil
31
31
  Token.new(gherkin_line, location)
@@ -35,6 +35,5 @@ module Gherkin
35
35
  Token.new(nil, location)
36
36
  end
37
37
  end
38
-
39
38
  end
40
39
  end
data/lib/gherkin.rb CHANGED
@@ -7,28 +7,26 @@ module Gherkin
7
7
  include_pickles: true
8
8
  }.freeze
9
9
 
10
- def self.from_paths(paths, options={})
10
+ def self.from_paths(paths, options = {})
11
11
  Stream::ParserMessageStream.new(
12
- paths,
13
- [],
14
- options
12
+ paths,
13
+ [],
14
+ options
15
15
  ).messages
16
16
  end
17
17
 
18
- def self.from_sources(sources, options={})
18
+ def self.from_sources(sources, options = {})
19
19
  Stream::ParserMessageStream.new(
20
- [],
21
- sources,
22
- options
20
+ [],
21
+ sources,
22
+ options
23
23
  ).messages
24
24
  end
25
25
 
26
- def self.from_source(uri, data, options={})
26
+ def self.from_source(uri, data, options = {})
27
27
  from_sources([encode_source_message(uri, data)], options)
28
28
  end
29
29
 
30
- private
31
-
32
30
  def self.encode_source_message(uri, data)
33
31
  Cucumber::Messages::Source.new(
34
32
  uri: uri,
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 29.0.0
4
+ version: 30.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gáspár Nagy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-08-12 00:00:00.000000000 Z
13
+ date: 2024-10-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cucumber-messages
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '25'
22
22
  - - "<"
23
23
  - !ruby/object:Gem::Version
24
- version: '26'
24
+ version: '28'
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
@@ -31,7 +31,7 @@ dependencies:
31
31
  version: '25'
32
32
  - - "<"
33
33
  - !ruby/object:Gem::Version
34
- version: '26'
34
+ version: '28'
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rake
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -126,8 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  - !ruby/object:Gem::Version
127
127
  version: 3.2.8
128
128
  requirements: []
129
- rubygems_version: 3.5.11
129
+ rubygems_version: 3.5.16
130
130
  signing_key:
131
131
  specification_version: 4
132
- summary: cucumber-gherkin-29.0.0
132
+ summary: cucumber-gherkin-30.0.0
133
133
  test_files: []