cucumber-gherkin 29.0.0 → 30.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fb339971170bdf897bf51a6d7cc8e63fee16894e19c4ef4473338019c74210e4
4
- data.tar.gz: 90052ec9d9cff63eaca6f7d0a69b86e898e0c32f6ad04952d7bdf39904070cec
3
+ metadata.gz: c8e28c956d49e3459e25aa1dc8aedf72dfbfa31d904426676f1c38126f5954a1
4
+ data.tar.gz: 4f9821c2a63ed6d29c19270081b04389c3c53e6440af042e7e748c7066fad584
5
5
  SHA512:
6
- metadata.gz: 8afa90ac6ba2c8b4730e64038d3a6e7c733698e8b10c1e10dbd6f82356fab0baa679944aa3c4aadf850f77aba270f28b53dc3fd72137e64785cc4aecfee980af
7
- data.tar.gz: bd312859d9a2b2c1dc5ae2bcd9ae19b527e83d1f0a645a3f8e60f913f08552f9f6629ac7840d6950263859bf7ace7ee58f3c8221586ca1f2e0ef1d9ca2266723
6
+ metadata.gz: 3f517b44e24aa884a2c213a782b931a09f45e1642da6a74b36536f83e5b2863f3b2a45256174fc1886ecd3fbe491ead2f308782ec4b2f431fe86b4a29ba827c8
7
+ data.tar.gz: 378cd806e477186a82ab8a884e927eb4318bf0d03afa50df71f73f02f8f4b2dac0477141ed665002914e26d182ff5aae0c608c404f32b2ab833978eb0142908a
data/bin/gherkin CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__),"../lib"))
4
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '../lib'))
4
5
 
5
6
  require 'optparse'
6
7
  require 'json'
@@ -29,18 +30,19 @@ OptionParser.new do |opts|
29
30
  end
30
31
  end.parse!
31
32
 
32
- def process_messages(messages, options)
33
+ def process_messages(messages, _options)
33
34
  messages.each do |message|
34
- STDOUT.write(message.to_json)
35
- STDOUT.write("\n")
35
+ $stdout.write(message.to_json)
36
+ $stdout.write("\n")
36
37
  end
37
38
  end
38
39
 
39
- if ARGV.empty?
40
- # Read from STDIN
41
- messages = Cucumber::Messages::Helpers::NdjsonToMessageEnumerator.new(STDIN)
42
- else
43
- messages = Gherkin.from_paths(ARGV, options)
44
- end
40
+ messages =
41
+ if ARGV.empty?
42
+ # Read from $stdin
43
+ Cucumber::Messages::Helpers::NdjsonToMessageEnumerator.new($stdin)
44
+ else
45
+ Gherkin.from_paths(ARGV, options)
46
+ end
45
47
 
46
48
  process_messages(messages, options)
data/bin/gherkin-ruby CHANGED
@@ -1,2 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
2
4
  load(File.dirname(__FILE__) + '/gherkin')
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/messages'
2
4
  require_relative 'ast_node'
3
5
 
@@ -17,17 +19,19 @@ module Gherkin
17
19
  @stack.push AstNode.new(rule_type)
18
20
  end
19
21
 
20
- def end_rule(rule_type)
22
+ def end_rule(_rule_type)
21
23
  node = @stack.pop
22
24
  current_node.add(node.rule_type, transform_node(node))
23
25
  end
24
26
 
25
27
  def build(token)
26
28
  if token.matched_type == :Comment
27
- @comments.push(Cucumber::Messages::Comment.new(
28
- location: get_location(token, 0),
29
- text: token.matched_text
30
- ))
29
+ @comments.push(
30
+ Cucumber::Messages::Comment.new(
31
+ location: get_location(token, 0),
32
+ text: token.matched_text
33
+ )
34
+ )
31
35
  else
32
36
  current_node.add(token.matched_type, token)
33
37
  end
@@ -56,11 +60,13 @@ module Gherkin
56
60
 
57
61
  tags_node.get_tokens(:TagLine).each do |token|
58
62
  token.matched_items.each do |tag_item|
59
- tags.push(Cucumber::Messages::Tag.new(
60
- location: get_location(token, tag_item.column),
61
- name: tag_item.text,
62
- id: @id_generator.new_id
63
- ))
63
+ tags.push(
64
+ Cucumber::Messages::Tag.new(
65
+ location: get_location(token, tag_item.column),
66
+ name: tag_item.text,
67
+ id: @id_generator.new_id
68
+ )
69
+ )
64
70
  end
65
71
  end
66
72
 
@@ -75,17 +81,15 @@ module Gherkin
75
81
  cells: get_cells(token)
76
82
  )
77
83
  end
78
- ensure_cell_count(rows)
79
- rows
84
+ rows.tap { ensure_cell_count(rows) }
80
85
  end
81
86
 
82
87
  def ensure_cell_count(rows)
83
88
  return if rows.empty?
89
+
84
90
  cell_count = rows[0].cells.length
85
91
  rows.each do |row|
86
- if row.cells.length != cell_count
87
- raise AstBuilderException.new("inconsistent cell count within the table", row.location.to_h)
88
- end
92
+ raise AstBuilderException.new('inconsistent cell count within the table', row.location.to_h) if row.cells.length != cell_count
89
93
  end
90
94
  end
91
95
 
@@ -113,7 +117,7 @@ module Gherkin
113
117
  data_table = node.get_single(:DataTable)
114
118
  doc_string = node.get_single(:DocString)
115
119
 
116
- step = Cucumber::Messages::Step.new(
120
+ Cucumber::Messages::Step.new(
117
121
  location: get_location(step_line, 0),
118
122
  keyword: step_line.matched_keyword,
119
123
  keyword_type: step_line.matched_keyword_type,
@@ -196,14 +200,16 @@ module Gherkin
196
200
  line_tokens = node.get_tokens(:Other)
197
201
  # Trim trailing empty lines
198
202
  last_non_empty = line_tokens.rindex { |token| !token.line.trimmed_line_text.empty? }
199
- description = line_tokens[0..last_non_empty].map { |token| token.matched_text }.join("\n")
200
- return description
203
+ line_tokens[0..last_non_empty].map { |token| token.matched_text }.join("\n")
204
+
201
205
  when :Feature
202
206
  header = node.get_single(:FeatureHeader)
203
207
  return unless header
208
+
204
209
  tags = get_tags(header)
205
210
  feature_line = header.get_token(:FeatureLine)
206
211
  return unless feature_line
212
+
207
213
  children = []
208
214
  background = node.get_single(:Background)
209
215
  children.push(Cucumber::Messages::FeatureChild.new(background: background)) if background
@@ -228,8 +234,10 @@ module Gherkin
228
234
  when :Rule
229
235
  header = node.get_single(:RuleHeader)
230
236
  return unless header
237
+
231
238
  rule_line = header.get_token(:RuleLine)
232
239
  return unless rule_line
240
+
233
241
  tags = get_tags(header)
234
242
  children = []
235
243
  background = node.get_single(:Background)
@@ -255,7 +263,7 @@ module Gherkin
255
263
  feature: feature
256
264
  )
257
265
  else
258
- return node
266
+ node
259
267
  end
260
268
  end
261
269
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gherkin
2
4
  class AstNode
3
5
  attr_reader :rule_type
@@ -1,14 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cucumber/messages'
2
4
  require 'json'
3
5
 
4
6
  module Gherkin
5
- DIALECT_FILE_PATH = File.expand_path("gherkin-languages.json", File.dirname(__FILE__))
7
+ DIALECT_FILE_PATH = File.expand_path('gherkin-languages.json', File.dirname(__FILE__))
6
8
  DIALECTS = JSON.parse File.open(DIALECT_FILE_PATH, 'r:UTF-8').read
7
9
 
8
10
  class Dialect
9
11
  def self.for(name)
10
12
  spec = DIALECTS[name]
11
13
  return nil unless spec
14
+
12
15
  new(spec)
13
16
  end
14
17
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gherkin
2
4
  class ParserError < StandardError; end
3
5
  class AstNodeNotLocatedException < StandardError; end
@@ -30,16 +32,16 @@ module Gherkin
30
32
  end
31
33
 
32
34
  class UnexpectedTokenException < ParserException
33
- def initialize(received_token, expected_token_types, state_comment)
35
+ def initialize(received_token, expected_token_types, _state_comment)
34
36
  message = "expected: #{expected_token_types.join(", ")}, got '#{received_token.token_value.strip}'"
35
37
  column = received_token.location[:column]
36
- location = (column.nil? || column.zero?) ? {line: received_token.location[:line], column: received_token.line.indent + 1} : received_token.location
38
+ location = (column.nil? || column.zero?) ? { line: received_token.location[:line], column: received_token.line.indent + 1 } : received_token.location
37
39
  super(message, location)
38
40
  end
39
41
  end
40
42
 
41
43
  class UnexpectedEOFException < ParserException
42
- def initialize(received_token, expected_token_types, state_comment)
44
+ def initialize(received_token, expected_token_types, _state_comment)
43
45
  message = "unexpected end of file, expected: #{expected_token_types.join(", ")}"
44
46
  super(message, received_token.location)
45
47
  end
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Gherkin
2
4
  class GherkinLine
3
5
  attr_reader :indent, :trimmed_line_text
6
+
4
7
  def initialize(line_text, line_number)
5
8
  @line_text = line_text
6
9
  @line_number = line_number
@@ -13,7 +16,7 @@ module Gherkin
13
16
  end
14
17
 
15
18
  def start_with_title_keyword?(keyword)
16
- start_with?(keyword+':') # The C# impl is more complicated. Find out why.
19
+ start_with?(keyword + ':') # The C# impl is more complicated. Find out why.
17
20
  end
18
21
 
19
22
  def get_rest_trimmed(length)
@@ -87,11 +90,9 @@ module Gherkin
87
90
  items = uncommented_line.split('@')
88
91
 
89
92
  tags = []
90
- items.each { |untrimmed|
93
+ items.each do |untrimmed|
91
94
  item = untrimmed.strip
92
- if item.length == 0
93
- next
94
- end
95
+ next if item.length == 0
95
96
 
96
97
  unless item =~ /^\S+$/
97
98
  location = { line: @line_number, column: column }
@@ -100,7 +101,7 @@ module Gherkin
100
101
 
101
102
  tags << Span.new(column, '@' + item)
102
103
  column += untrimmed.length + 1
103
- }
104
+ end
104
105
  tags
105
106
  end
106
107