cucumber 0.2.2 → 0.2.3
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.
- data/History.txt +21 -1
- data/Manifest.txt +49 -47
- data/bin/cucumber +1 -1
- data/config/hoe.rb +2 -2
- data/examples/i18n/Rakefile +6 -8
- data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/ar/lib/calculator.rb +1 -0
- data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
- data/examples/i18n/de/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/en/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/es/features/step_definitons/calculador_steps.rb +1 -1
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +1 -1
- data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +1 -1
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +1 -1
- data/examples/i18n/id/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
- data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/ko/features/addition.feature +1 -1
- data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/no/features/support/env.rb +1 -1
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
- data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/ru/features/support/env.rb +1 -1
- data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
- data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/tickets/features/246.feature +4 -0
- data/examples/tickets/features/step_definitons/246_steps.rb +3 -0
- data/features/cucumber_cli_outlines.feature +1 -1
- data/gem_tasks/rspec.rake +3 -2
- data/lib/cucumber/ast/outline_table.rb +1 -1
- data/lib/cucumber/ast/table.rb +21 -0
- data/lib/cucumber/formatter/ansicolor.rb +10 -2
- data/lib/cucumber/languages.yml +51 -3
- data/lib/cucumber/parser.rb +2 -7
- data/lib/cucumber/parser/feature.rb +34 -39
- data/lib/cucumber/parser/feature.tt +1 -1
- data/lib/cucumber/parser/i18n.tt +4 -0
- data/lib/cucumber/step_definition.rb +9 -12
- data/lib/cucumber/step_mother.rb +3 -2
- data/lib/cucumber/version.rb +1 -1
- data/rails_generators/cucumber/templates/env.rb +1 -1
- data/rails_generators/cucumber/templates/paths.rb +2 -1
- data/rails_generators/cucumber/templates/webrat_steps.rb +8 -0
- data/{spec → specs}/cucumber/ast/background_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/feature_factory.rb +0 -0
- data/{spec → specs}/cucumber/ast/feature_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/py_string_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/scenario_outline_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/scenario_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/step_collection_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/step_spec.rb +0 -0
- data/{spec → specs}/cucumber/ast/table_spec.rb +21 -0
- data/{spec → specs}/cucumber/ast/tags_spec.rb +0 -0
- data/{spec → specs}/cucumber/broadcaster_spec.rb +0 -0
- data/{spec → specs}/cucumber/cli/configuration_spec.rb +0 -0
- data/{spec → specs}/cucumber/cli/main_spec.rb +0 -0
- data/{spec → specs}/cucumber/core_ext/proc_spec.rb +1 -1
- data/{spec → specs}/cucumber/core_ext/string_spec.rb +0 -0
- data/{spec → specs}/cucumber/formatter/ansicolor_spec.rb +0 -0
- data/{spec → specs}/cucumber/formatter/color_io_spec.rb +0 -0
- data/{spec → specs}/cucumber/formatter/html/cucumber.css +0 -0
- data/{spec → specs}/cucumber/formatter/html/cucumber.js +0 -0
- data/{spec → specs}/cucumber/formatter/html/index.html +0 -0
- data/{spec → specs}/cucumber/formatter/html/jquery-1.3.min.js +0 -0
- data/{spec → specs}/cucumber/formatter/html/jquery.uitableedit.js +0 -0
- data/{spec → specs}/cucumber/formatters/profile_formatter_spec.rb +0 -0
- data/{spec → specs}/cucumber/parser/feature_parser_spec.rb +0 -0
- data/{spec → specs}/cucumber/parser/table_parser_spec.rb +0 -0
- data/{spec → specs}/cucumber/rails/stubs/mini_rails.rb +0 -0
- data/{spec → specs}/cucumber/rails/stubs/test_help.rb +0 -0
- data/{spec → specs}/cucumber/rails/world_spec.rb +0 -0
- data/{spec → specs}/cucumber/sell_cucumbers.feature +0 -0
- data/{spec → specs}/cucumber/step_definition_spec.rb +8 -0
- data/{spec → specs}/cucumber/step_mother_spec.rb +19 -3
- data/{spec → specs}/cucumber/treetop_parser/empty_feature.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/empty_scenario.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/empty_scenario_outline.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/fit_scenario.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/given_scenario.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/invalid_scenario_outlines.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/multiline_steps.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/multiple_tables.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/scenario_outline.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/spaces.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/test_dos.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/with_comments.feature +0 -0
- data/{spec → specs}/cucumber/treetop_parser/with_tags.feature +0 -0
- data/{spec → specs}/cucumber/world/pending_spec.rb +0 -0
- data/{spec → specs}/spec.opts +0 -0
- data/{spec → specs}/spec_helper.rb +0 -0
- metadata +54 -52
data/lib/cucumber/ast/table.rb
CHANGED
@@ -60,6 +60,23 @@ module Cucumber
|
|
60
60
|
row.to_hash
|
61
61
|
end
|
62
62
|
end
|
63
|
+
|
64
|
+
# Converts this table into a Hash where the first column is
|
65
|
+
# used as keys and the second column is used as values
|
66
|
+
#
|
67
|
+
# | a | 2 |
|
68
|
+
# | b | 3 |
|
69
|
+
#
|
70
|
+
# Gets converted into the following:
|
71
|
+
#
|
72
|
+
# {'a' => '2', 'b' => '3'}
|
73
|
+
#
|
74
|
+
# The table must be exactly two columns wide
|
75
|
+
#
|
76
|
+
def rows_hash
|
77
|
+
verify_table_width(2)
|
78
|
+
@rows_hash = self.transpose.hashes[0]
|
79
|
+
end
|
63
80
|
|
64
81
|
# Gets the raw data of this table. For example, a Table built from
|
65
82
|
# the following plain text:
|
@@ -160,6 +177,10 @@ module Cucumber
|
|
160
177
|
def verify_column(column_name)
|
161
178
|
raise %{The column named "#{column_name}" does not exist} unless @raw[0].include?(column_name)
|
162
179
|
end
|
180
|
+
|
181
|
+
def verify_table_width(width)
|
182
|
+
raise %{The table must have exactly #{width} columns} unless @raw[0].size == width
|
183
|
+
end
|
163
184
|
|
164
185
|
def arguments_replaced(arguments) #:nodoc:
|
165
186
|
raw_with_replaced_args = raw.map do |row|
|
@@ -6,12 +6,20 @@ if Cucumber::WINDOWS_MRI
|
|
6
6
|
gem 'win32console', '>= 1.2.0'
|
7
7
|
require 'Win32/Console/ANSI'
|
8
8
|
rescue LoadError
|
9
|
-
STDERR.puts
|
9
|
+
STDERR.puts %{*** WARNING: You must "gem install win32console" (1.2.0 or higher) to get coloured output on MRI/Windows}
|
10
|
+
Term::ANSIColor.coloring = false
|
11
|
+
end
|
12
|
+
elsif Cucumber::WINDOWS && Cucumber::JRUBY
|
13
|
+
begin
|
14
|
+
gem 'aslakhellesoy-ansicolor', '>= 1.0'
|
15
|
+
require 'ansicolor'
|
16
|
+
rescue LoadError
|
17
|
+
STDERR.puts %{*** WARNING: You must "gem install aslakhellesoy-ansicolor --source http://gems.github.com" (1.0 or higher) to get coloured output on JRuby/Windows}
|
10
18
|
Term::ANSIColor.coloring = false
|
11
19
|
end
|
12
20
|
end
|
13
21
|
|
14
|
-
Term::ANSIColor.coloring = false if !STDOUT.tty?
|
22
|
+
Term::ANSIColor.coloring = false if !STDOUT.tty?
|
15
23
|
|
16
24
|
module Cucumber
|
17
25
|
module Formatter
|
data/lib/cucumber/languages.yml
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
then: Then
|
21
21
|
and: And
|
22
22
|
but: But
|
23
|
+
space_after_keyword: true
|
23
24
|
|
24
25
|
# Please help us keeping the languages below uptodate. The parsers for a language
|
25
26
|
# that is missing a keyword will expect the English word until the missing word(s)
|
@@ -41,6 +42,7 @@
|
|
41
42
|
then: اذاً|ثم
|
42
43
|
and: و
|
43
44
|
but: لكن
|
45
|
+
space_after_keyword: true
|
44
46
|
"cy":
|
45
47
|
name: Welsh
|
46
48
|
native: Cymraeg
|
@@ -53,6 +55,7 @@
|
|
53
55
|
then: Yna
|
54
56
|
and: A
|
55
57
|
but: Ond
|
58
|
+
space_after_keyword: true
|
56
59
|
"cz":
|
57
60
|
name: Czech
|
58
61
|
native: Česky
|
@@ -67,6 +70,7 @@
|
|
67
70
|
then: Pak
|
68
71
|
and: A
|
69
72
|
but: Ale
|
73
|
+
space_after_keyword: true
|
70
74
|
"da":
|
71
75
|
name: Danish
|
72
76
|
native: dansk
|
@@ -81,6 +85,7 @@
|
|
81
85
|
then: Så
|
82
86
|
and: Og
|
83
87
|
but: Men
|
88
|
+
space_after_keyword: true
|
84
89
|
"de":
|
85
90
|
name: German
|
86
91
|
native: Deutsch
|
@@ -95,6 +100,7 @@
|
|
95
100
|
then: Dann
|
96
101
|
and: Und
|
97
102
|
but: Aber
|
103
|
+
space_after_keyword: true
|
98
104
|
"en-au":
|
99
105
|
name: Australian
|
100
106
|
native: Australian
|
@@ -109,6 +115,7 @@
|
|
109
115
|
then: Ya gotta
|
110
116
|
and: N
|
111
117
|
but: Cept
|
118
|
+
space_after_keyword: true
|
112
119
|
"en-lol":
|
113
120
|
name: LOLCAT
|
114
121
|
native: LOLCAT
|
@@ -123,6 +130,7 @@
|
|
123
130
|
then: DEN
|
124
131
|
and: AN
|
125
132
|
but: BUT
|
133
|
+
space_after_keyword: true
|
126
134
|
"en-tx":
|
127
135
|
name: Texan
|
128
136
|
native: Texan
|
@@ -137,6 +145,7 @@
|
|
137
145
|
then: Then y'all
|
138
146
|
and: And y'all
|
139
147
|
but: But y'all
|
148
|
+
space_after_keyword: true
|
140
149
|
"es":
|
141
150
|
name: Spanish
|
142
151
|
native: español
|
@@ -151,6 +160,7 @@
|
|
151
160
|
then: Entonces
|
152
161
|
and: Y
|
153
162
|
but: Pero
|
163
|
+
space_after_keyword: true
|
154
164
|
"et":
|
155
165
|
name: Estonian
|
156
166
|
native: eesti keel
|
@@ -165,6 +175,7 @@
|
|
165
175
|
then: Siis
|
166
176
|
and: Ja
|
167
177
|
but: Kuid
|
178
|
+
space_after_keyword: true
|
168
179
|
"fi":
|
169
180
|
name: Finnish
|
170
181
|
native: suomi
|
@@ -179,6 +190,7 @@
|
|
179
190
|
then: Niin
|
180
191
|
and: Ja
|
181
192
|
but: Mutta
|
193
|
+
space_after_keyword: true
|
182
194
|
"fr":
|
183
195
|
name: French
|
184
196
|
native: français
|
@@ -193,11 +205,13 @@
|
|
193
205
|
then: Alors
|
194
206
|
and: Et
|
195
207
|
but: Mais
|
208
|
+
space_after_keyword: true
|
196
209
|
"id":
|
197
210
|
name: Indonesian
|
198
211
|
native: Bahasa Indonesia
|
199
212
|
encoding: UTF-8
|
200
213
|
feature: Fitur
|
214
|
+
background: Dasar
|
201
215
|
scenario: Skenario
|
202
216
|
scenario_outline: Skenario konsep
|
203
217
|
examples: Contoh
|
@@ -206,18 +220,22 @@
|
|
206
220
|
then: Maka
|
207
221
|
and: Dan
|
208
222
|
but: Tapi
|
223
|
+
space_after_keyword: true
|
209
224
|
"it":
|
210
225
|
name: Italian
|
211
226
|
native: italiano
|
212
227
|
encoding: UTF-8
|
213
228
|
feature: Funzionalità
|
229
|
+
background: Contesto
|
214
230
|
scenario: Scenario
|
215
|
-
|
231
|
+
scenario_outline: Schema dello scenario
|
232
|
+
examples: Esempi
|
216
233
|
given: Dato
|
217
234
|
when: Quando
|
218
235
|
then: Allora
|
219
236
|
and: E
|
220
237
|
but: Ma
|
238
|
+
space_after_keyword: true
|
221
239
|
"ja":
|
222
240
|
name: Japanese
|
223
241
|
native: 日本語
|
@@ -225,13 +243,14 @@
|
|
225
243
|
feature: フィーチャ
|
226
244
|
background: 背景
|
227
245
|
scenario: シナリオ
|
228
|
-
scenario_outline:
|
246
|
+
scenario_outline: シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ
|
229
247
|
examples: 例|サンプル
|
230
248
|
given: 前提
|
231
249
|
when: もし
|
232
250
|
then: ならば
|
233
251
|
and: かつ
|
234
252
|
but: しかし
|
253
|
+
space_after_keyword: false
|
235
254
|
"lt":
|
236
255
|
name: Lithuanian
|
237
256
|
native: lietuvių kalba
|
@@ -244,17 +263,22 @@
|
|
244
263
|
then: Tada
|
245
264
|
and: Ir
|
246
265
|
but: Bet
|
266
|
+
space_after_keyword: true
|
247
267
|
"nl":
|
248
268
|
name: Dutch
|
249
269
|
native: Nederlands
|
250
270
|
encoding: UTF-8
|
251
271
|
feature: Functionaliteit
|
272
|
+
background: Achtergrond
|
252
273
|
scenario: Scenario
|
274
|
+
scenario_outline: Abstract Scenario
|
275
|
+
examples: Voorbeelden
|
253
276
|
given: Gegeven
|
254
277
|
when: Als
|
255
278
|
then: Dan
|
256
279
|
and: En
|
257
280
|
but: Maar
|
281
|
+
space_after_keyword: true
|
258
282
|
"no":
|
259
283
|
name: Norwegian
|
260
284
|
native: norsk
|
@@ -269,6 +293,7 @@
|
|
269
293
|
then: Så
|
270
294
|
and: Og
|
271
295
|
but: Men
|
296
|
+
space_after_keyword: true
|
272
297
|
"pl":
|
273
298
|
name: Polish
|
274
299
|
native: polski
|
@@ -280,6 +305,7 @@
|
|
280
305
|
then: Wtedy
|
281
306
|
and: Oraz
|
282
307
|
but: Ale
|
308
|
+
space_after_keyword: true
|
283
309
|
"pt":
|
284
310
|
name: Portuguese
|
285
311
|
native: português
|
@@ -294,6 +320,7 @@
|
|
294
320
|
then: Então
|
295
321
|
and: E
|
296
322
|
but: Mas
|
323
|
+
space_after_keyword: true
|
297
324
|
"ro":
|
298
325
|
name: Romanian
|
299
326
|
native: română
|
@@ -305,6 +332,7 @@
|
|
305
332
|
then: Atunci
|
306
333
|
and: Si
|
307
334
|
but: Dar
|
335
|
+
space_after_keyword: true
|
308
336
|
"ro2":
|
309
337
|
name: Romanian (diacritical)
|
310
338
|
native: română (diacritical)
|
@@ -316,6 +344,7 @@
|
|
316
344
|
then: Atunci
|
317
345
|
and: Și
|
318
346
|
but: Dar
|
347
|
+
space_after_keyword: true
|
319
348
|
"ru":
|
320
349
|
name: Russian
|
321
350
|
native: русский
|
@@ -330,6 +359,7 @@
|
|
330
359
|
then: То
|
331
360
|
and: И|К тому же
|
332
361
|
but: Но|А
|
362
|
+
space_after_keyword: true
|
333
363
|
"se":
|
334
364
|
name: Swedish
|
335
365
|
native: Svenska
|
@@ -344,6 +374,22 @@
|
|
344
374
|
then: Så
|
345
375
|
and: Och
|
346
376
|
but: Men
|
377
|
+
space_after_keyword: true
|
378
|
+
"sk":
|
379
|
+
name: Slovak
|
380
|
+
native: Slovensky
|
381
|
+
encoding: UTF-8
|
382
|
+
feature: Požiadavka
|
383
|
+
background: Pozadie
|
384
|
+
scenario: Scenár
|
385
|
+
scenario_outline: Náčrt Scenáru
|
386
|
+
examples: Príklady
|
387
|
+
given: Pokiaľ
|
388
|
+
when: Keď
|
389
|
+
then: Tak
|
390
|
+
and: A
|
391
|
+
but: Ale
|
392
|
+
space_after_keyword: true
|
347
393
|
"zh-CN":
|
348
394
|
name: Chinese simplified
|
349
395
|
native: 简体中文
|
@@ -358,6 +404,7 @@
|
|
358
404
|
then: 那么
|
359
405
|
and: 而且
|
360
406
|
but: 但是
|
407
|
+
space_after_keyword: false
|
361
408
|
"zh-TW":
|
362
409
|
name: Chinese traditional
|
363
410
|
native: 繁體中文
|
@@ -372,6 +419,7 @@
|
|
372
419
|
then: 那麼
|
373
420
|
and: 而且|並且
|
374
421
|
but: 但是
|
422
|
+
space_after_keyword: false
|
375
423
|
"ko":
|
376
424
|
name: Korean
|
377
425
|
native: 한국어
|
@@ -381,9 +429,9 @@
|
|
381
429
|
scenario: 시나리오
|
382
430
|
scenario_outline: 시나리오 개요
|
383
431
|
examples: 예
|
384
|
-
more_examples: 다른 예
|
385
432
|
given: 조건
|
386
433
|
when: 만일
|
387
434
|
then: 그러면
|
388
435
|
and: 그리고
|
389
436
|
but: 하지만
|
437
|
+
space_after_keyword: false
|
data/lib/cucumber/parser.rb
CHANGED
@@ -13,12 +13,6 @@ module Cucumber
|
|
13
13
|
#
|
14
14
|
# The AST classes are defined in the Cucumber::Ast module.
|
15
15
|
module Parser
|
16
|
-
translator = Module.new do
|
17
|
-
def keywordz(key)
|
18
|
-
'Scenario'
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
16
|
def self.load_parser(keywords)
|
23
17
|
Loader.new(keywords)
|
24
18
|
end
|
@@ -34,7 +28,8 @@ module Cucumber
|
|
34
28
|
require 'cucumber/parser/feature'
|
35
29
|
end
|
36
30
|
|
37
|
-
def keywords(key)
|
31
|
+
def keywords(key, raw=false)
|
32
|
+
return @keywords[key] if raw
|
38
33
|
values = @keywords[key].split('|')
|
39
34
|
values.map{|value| "'#{value}'"}.join(" / ")
|
40
35
|
end
|
@@ -870,6 +870,10 @@ module Cucumber
|
|
870
870
|
elements[2]
|
871
871
|
end
|
872
872
|
|
873
|
+
def keyword_space
|
874
|
+
elements[3]
|
875
|
+
end
|
876
|
+
|
873
877
|
def name
|
874
878
|
elements[4]
|
875
879
|
end
|
@@ -920,60 +924,51 @@ module Cucumber
|
|
920
924
|
r4 = _nt_step_keyword
|
921
925
|
s0 << r4
|
922
926
|
if r4
|
923
|
-
|
924
|
-
loop do
|
925
|
-
r6 = _nt_space
|
926
|
-
if r6
|
927
|
-
s5 << r6
|
928
|
-
else
|
929
|
-
break
|
930
|
-
end
|
931
|
-
end
|
932
|
-
r5 = SyntaxNode.new(input, i5...index, s5)
|
927
|
+
r5 = _nt_keyword_space
|
933
928
|
s0 << r5
|
934
929
|
if r5
|
935
|
-
|
936
|
-
s0 <<
|
937
|
-
if
|
938
|
-
|
939
|
-
|
930
|
+
r6 = _nt_line_to_eol
|
931
|
+
s0 << r6
|
932
|
+
if r6
|
933
|
+
i7 = index
|
934
|
+
s8, i8 = [], index
|
940
935
|
loop do
|
941
|
-
|
942
|
-
if
|
943
|
-
|
936
|
+
r9 = _nt_eol
|
937
|
+
if r9
|
938
|
+
s8 << r9
|
944
939
|
else
|
945
940
|
break
|
946
941
|
end
|
947
942
|
end
|
948
|
-
if
|
949
|
-
self.index =
|
950
|
-
|
943
|
+
if s8.empty?
|
944
|
+
self.index = i8
|
945
|
+
r8 = nil
|
951
946
|
else
|
952
|
-
|
947
|
+
r8 = SyntaxNode.new(input, i8...index, s8)
|
953
948
|
end
|
954
|
-
if
|
955
|
-
|
949
|
+
if r8
|
950
|
+
r7 = r8
|
956
951
|
else
|
957
|
-
|
958
|
-
if
|
959
|
-
|
952
|
+
r10 = _nt_eof
|
953
|
+
if r10
|
954
|
+
r7 = r10
|
960
955
|
else
|
961
|
-
self.index =
|
962
|
-
|
956
|
+
self.index = i7
|
957
|
+
r7 = nil
|
963
958
|
end
|
964
959
|
end
|
965
|
-
s0 <<
|
966
|
-
if
|
967
|
-
|
968
|
-
if
|
969
|
-
|
960
|
+
s0 << r7
|
961
|
+
if r7
|
962
|
+
r12 = _nt_multiline_arg
|
963
|
+
if r12
|
964
|
+
r11 = r12
|
970
965
|
else
|
971
|
-
|
966
|
+
r11 = SyntaxNode.new(input, index...index)
|
972
967
|
end
|
973
|
-
s0 <<
|
974
|
-
if
|
975
|
-
|
976
|
-
s0 <<
|
968
|
+
s0 << r11
|
969
|
+
if r11
|
970
|
+
r13 = _nt_white
|
971
|
+
s0 << r13
|
977
972
|
end
|
978
973
|
end
|
979
974
|
end
|
@@ -121,7 +121,7 @@ module Cucumber
|
|
121
121
|
end
|
122
122
|
|
123
123
|
rule step
|
124
|
-
comment space* step_keyword
|
124
|
+
comment space* step_keyword keyword_space name:line_to_eol (eol+ / eof) multi:multiline_arg? white {
|
125
125
|
def build
|
126
126
|
if multi.respond_to?(:build)
|
127
127
|
Ast::Step.new(step_keyword.line, step_keyword.text_value, name.text_value.strip, multi.build)
|