gherkin 2.3.3-x86-mswin32 → 2.3.4-x86-mswin32
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 +6 -0
- data/VERSION +1 -1
- data/gherkin.gemspec +3 -3
- data/lib/gherkin/formatter/pretty_formatter.rb +58 -49
- data/lib/gherkin/i18n.yml +7 -20
- data/ragel/lexer.c.rl.erb +25 -13
- data/spec/gherkin/formatter/pretty_formatter_spec.rb +13 -24
- data/spec/gherkin/i18n_spec.rb +44 -45
- metadata +8 -50
data/History.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.3.
|
1
|
+
2.3.4
|
data/gherkin.gemspec
CHANGED
@@ -51,9 +51,9 @@ Gem::Specification.new do |s|
|
|
51
51
|
s.add_dependency('json', '~> 1.4.6')
|
52
52
|
|
53
53
|
s.add_development_dependency('rake', '~> 0.8.7')
|
54
|
-
s.add_development_dependency('bundler', '~> 1.0.
|
55
|
-
s.add_development_dependency('rspec', '~> 2.
|
56
|
-
s.add_development_dependency('awesome_print', '~> 0.2
|
54
|
+
s.add_development_dependency('bundler', '~> 1.0.10')
|
55
|
+
s.add_development_dependency('rspec', '~> 2.5.0')
|
56
|
+
s.add_development_dependency('awesome_print', '~> 0.3.2')
|
57
57
|
s.add_development_dependency('cucumber', '~> 0.10.0')
|
58
58
|
# Only needed by Cucumber. Remove when Cucumber no longer needs those.
|
59
59
|
s.add_development_dependency('term-ansicolor', '~> 1.0.5')
|
@@ -19,6 +19,9 @@ module Gherkin
|
|
19
19
|
@step_printer = StepPrinter.new
|
20
20
|
@monochrome = monochrome
|
21
21
|
@executing = executing
|
22
|
+
@background = nil
|
23
|
+
@tag_statement = nil
|
24
|
+
@steps = []
|
22
25
|
end
|
23
26
|
|
24
27
|
def uri(uri)
|
@@ -32,26 +35,47 @@ module Gherkin
|
|
32
35
|
print_description(feature.description, ' ', false)
|
33
36
|
end
|
34
37
|
|
35
|
-
def background(
|
36
|
-
|
37
|
-
|
38
|
-
@io.puts " #{statement.keyword}: #{statement.name}#{indented_element_uri!(statement.keyword, statement.name, statement.line)}"
|
39
|
-
print_description(statement.description, ' ')
|
38
|
+
def background(background)
|
39
|
+
replay
|
40
|
+
@statement = background
|
40
41
|
end
|
41
42
|
|
42
|
-
def scenario(
|
43
|
-
|
44
|
-
|
45
|
-
print_tags(statement.tags, ' ')
|
46
|
-
@io.puts " #{statement.keyword}: #{statement.name}#{indented_element_uri!(statement.keyword, statement.name, statement.line)}"
|
47
|
-
print_description(statement.description, ' ')
|
43
|
+
def scenario(scenario)
|
44
|
+
replay
|
45
|
+
@statement = scenario
|
48
46
|
end
|
49
47
|
|
50
48
|
def scenario_outline(scenario_outline)
|
51
|
-
|
49
|
+
replay
|
50
|
+
@statement = scenario_outline
|
51
|
+
end
|
52
|
+
|
53
|
+
def replay
|
54
|
+
print_statement
|
55
|
+
print_steps
|
56
|
+
end
|
57
|
+
|
58
|
+
def print_statement
|
59
|
+
return if @statement.nil?
|
60
|
+
calculate_location_indentations
|
61
|
+
@io.puts
|
62
|
+
print_comments(@statement.comments, ' ')
|
63
|
+
print_tags(@statement.tags, ' ') if @statement.respond_to?(:tags) # Background doesn't
|
64
|
+
@io.write " #{@statement.keyword}: #{@statement.name}"
|
65
|
+
location = @executing ? "#{@uri}:#{@statement.line}" : nil
|
66
|
+
@io.puts indented_location(location, true)
|
67
|
+
print_description(@statement.description, ' ')
|
68
|
+
@statement = nil
|
69
|
+
end
|
70
|
+
|
71
|
+
def print_steps
|
72
|
+
while(@steps.any?)
|
73
|
+
print_step('skipped', [], nil, true)
|
74
|
+
end
|
52
75
|
end
|
53
76
|
|
54
77
|
def examples(examples)
|
78
|
+
replay
|
55
79
|
@io.puts
|
56
80
|
print_comments(examples.comments, ' ')
|
57
81
|
print_tags(examples.tags, ' ')
|
@@ -61,42 +85,36 @@ module Gherkin
|
|
61
85
|
end
|
62
86
|
|
63
87
|
def step(step)
|
64
|
-
@
|
65
|
-
@step_index += 1 if @step_index
|
66
|
-
# TODO: It feels a little funny to have this logic here in the formatter.
|
67
|
-
# We may have to duplicate it across formatters. So maybe we should move
|
68
|
-
# this out to the callers instead.
|
69
|
-
#
|
70
|
-
# Maybe it's a Filter!! ExecuteFilter and PrettyFilter
|
71
|
-
match(Model::Match.new([], nil)) unless @executing
|
88
|
+
@steps << step
|
72
89
|
end
|
73
90
|
|
74
91
|
def match(match)
|
75
92
|
@match = match
|
76
|
-
|
93
|
+
print_statement
|
94
|
+
print_step('executing', @match.arguments, @match.location, false)
|
77
95
|
end
|
78
96
|
|
79
97
|
def result(result)
|
80
98
|
@io.write(up(1))
|
81
|
-
print_step(result.status, @match.arguments, @match.location)
|
99
|
+
print_step(result.status, @match.arguments, @match.location, true)
|
82
100
|
end
|
83
101
|
|
84
|
-
def print_step(status, arguments, location)
|
102
|
+
def print_step(status, arguments, location, proceed)
|
103
|
+
step = proceed ? @steps.shift : @steps[0]
|
104
|
+
|
85
105
|
text_format = format(status)
|
86
106
|
arg_format = arg_format(status)
|
87
107
|
|
88
|
-
print_comments(
|
108
|
+
print_comments(step.comments, ' ')
|
89
109
|
@io.write(' ')
|
90
|
-
@io.write(text_format.text(
|
91
|
-
@step_printer.write_step(@io, text_format, arg_format,
|
92
|
-
|
93
|
-
|
94
|
-
@io.puts
|
95
|
-
case @step.multiline_arg
|
110
|
+
@io.write(text_format.text(step.keyword))
|
111
|
+
@step_printer.write_step(@io, text_format, arg_format, step.name, arguments)
|
112
|
+
@io.puts(indented_location(location, proceed))
|
113
|
+
case step.multiline_arg
|
96
114
|
when Model::PyString
|
97
|
-
py_string(
|
115
|
+
py_string(step.multiline_arg)
|
98
116
|
when Array
|
99
|
-
table(
|
117
|
+
table(step.multiline_arg)
|
100
118
|
end
|
101
119
|
end
|
102
120
|
|
@@ -136,16 +154,10 @@ module Gherkin
|
|
136
154
|
end
|
137
155
|
|
138
156
|
def eof
|
157
|
+
replay
|
139
158
|
# NO-OP
|
140
159
|
end
|
141
160
|
|
142
|
-
# This method can be invoked before a #scenario, to ensure location arguments are aligned
|
143
|
-
def steps(steps)
|
144
|
-
@step_lengths = steps.map {|step| (step.keyword+step.name).unpack("U*").length}
|
145
|
-
@max_step_length = @step_lengths.max
|
146
|
-
@step_index = -1
|
147
|
-
end
|
148
|
-
|
149
161
|
def table(rows)
|
150
162
|
cell_lengths = rows.map do |row|
|
151
163
|
row.cells.map do |cell|
|
@@ -216,18 +228,15 @@ module Gherkin
|
|
216
228
|
end
|
217
229
|
end
|
218
230
|
|
219
|
-
def
|
220
|
-
|
221
|
-
|
222
|
-
@max_step_length = [@max_step_length, l].max
|
223
|
-
indent = @max_step_length - l
|
224
|
-
' ' * indent + ' ' + comments + "# #{@uri}:#{line}" + reset
|
231
|
+
def indented_location(location, proceed)
|
232
|
+
indentation = proceed ? @indentations.shift : @indentations[0]
|
233
|
+
location ? (' ' * indentation + ' ' + comments + "# #{location}" + reset) : ''
|
225
234
|
end
|
226
235
|
|
227
|
-
def
|
228
|
-
|
229
|
-
|
230
|
-
@
|
236
|
+
def calculate_location_indentations
|
237
|
+
line_widths = ([@statement] + @steps).map {|step| (step.keyword+step.name).unpack("U*").length}
|
238
|
+
max_line_width = line_widths.max
|
239
|
+
@indentations = line_widths.map{|w| max_line_width - w}
|
231
240
|
end
|
232
241
|
end
|
233
242
|
end
|
data/lib/gherkin/i18n.yml
CHANGED
@@ -433,28 +433,15 @@
|
|
433
433
|
"ro":
|
434
434
|
name: Romanian
|
435
435
|
native: română
|
436
|
-
background:
|
437
|
-
feature: Functionalitate
|
436
|
+
background: Context
|
437
|
+
feature: Functionalitate|Funcționalitate|Funcţionalitate
|
438
438
|
scenario: Scenariu
|
439
|
-
scenario_outline:
|
440
|
-
examples:
|
441
|
-
given: "*|
|
442
|
-
when: "*|Cand"
|
439
|
+
scenario_outline: Structura scenariu|Structură scenariu
|
440
|
+
examples: Exemple
|
441
|
+
given: "*|Date fiind|Dat fiind|Dati fiind|Dați fiind|Daţi fiind"
|
442
|
+
when: "*|Cand|Când"
|
443
443
|
then: "*|Atunci"
|
444
|
-
and: "*|Si"
|
445
|
-
but: "*|Dar"
|
446
|
-
"ro-RO":
|
447
|
-
name: Romanian (diacritical)
|
448
|
-
native: română (diacritical)
|
449
|
-
background: Condiţii
|
450
|
-
feature: Funcționalitate
|
451
|
-
scenario: Scenariu
|
452
|
-
scenario_outline: Scenariul de şablon
|
453
|
-
examples: Exemplele
|
454
|
-
given: "*|Dacă"
|
455
|
-
when: "*|Când"
|
456
|
-
then: "*|Atunci"
|
457
|
-
and: "*|Și"
|
444
|
+
and: "*|Si|Și|Şi"
|
458
445
|
but: "*|Dar"
|
459
446
|
"ru":
|
460
447
|
name: Russian
|
data/ragel/lexer.c.rl.erb
CHANGED
@@ -175,11 +175,12 @@ static VALUE rb_eGherkinLexingError;
|
|
175
175
|
}
|
176
176
|
|
177
177
|
action store_cell_content {
|
178
|
+
VALUE re_pipe, re_newline, re_backslash;
|
178
179
|
VALUE con = ENCODED_STR_NEW(PTR_TO(content_start), LEN(content_start, p));
|
179
180
|
rb_funcall(con, rb_intern("strip!"), 0);
|
180
|
-
|
181
|
-
|
182
|
-
|
181
|
+
re_pipe = rb_reg_regcomp(rb_str_new2("\\\\\\|"));
|
182
|
+
re_newline = rb_reg_regcomp(rb_str_new2("\\\\n"));
|
183
|
+
re_backslash = rb_reg_regcomp(rb_str_new2("\\\\\\\\"));
|
183
184
|
rb_funcall(con, rb_intern("gsub!"), 2, re_pipe, rb_str_new2("|"));
|
184
185
|
rb_funcall(con, rb_intern("gsub!"), 2, re_newline, rb_str_new2("\n"));
|
185
186
|
rb_funcall(con, rb_intern("gsub!"), 2, re_backslash, rb_str_new2("\\"));
|
@@ -192,6 +193,7 @@ static VALUE rb_eGherkinLexingError;
|
|
192
193
|
}
|
193
194
|
|
194
195
|
action end_feature {
|
196
|
+
int line;
|
195
197
|
if (cs < lexer_first_final) {
|
196
198
|
if (raise_lexer_error != NULL) {
|
197
199
|
size_t count = 0;
|
@@ -212,6 +214,7 @@ static VALUE rb_eGherkinLexingError;
|
|
212
214
|
newstr_val = rb_str_new(buff, len);
|
213
215
|
newstr = RSTRING_PTR(newstr_val);
|
214
216
|
|
217
|
+
|
215
218
|
for (count = 0; count < len; count++) {
|
216
219
|
if(buff[count] == 10) {
|
217
220
|
newstr[newstr_count] = '\0'; // terminate new string at first newline found
|
@@ -227,7 +230,7 @@ static VALUE rb_eGherkinLexingError;
|
|
227
230
|
newstr_count++;
|
228
231
|
}
|
229
232
|
|
230
|
-
|
233
|
+
line = lexer->line_number;
|
231
234
|
lexer_init(lexer); // Re-initialize so we can scan again with the same lexer
|
232
235
|
raise_lexer_error(newstr, line);
|
233
236
|
}
|
@@ -246,10 +249,11 @@ static VALUE rb_eGherkinLexingError;
|
|
246
249
|
static VALUE
|
247
250
|
unindent(VALUE con, int start_col)
|
248
251
|
{
|
252
|
+
VALUE re;
|
249
253
|
// Gherkin will crash gracefully if the string representation of start_col pushes the pattern past 32 characters
|
250
254
|
char pat[32];
|
251
255
|
snprintf(pat, 32, "^[\t ]{0,%d}", start_col);
|
252
|
-
|
256
|
+
re = rb_reg_regcomp(rb_str_new2(pat));
|
253
257
|
rb_funcall(con, rb_intern("gsub!"), 2, re, rb_str_new2(""));
|
254
258
|
|
255
259
|
return Qnil;
|
@@ -275,6 +279,7 @@ store_multiline_kw_con(VALUE listener, const char * event_name,
|
|
275
279
|
const char * at, size_t length,
|
276
280
|
int current_line, int start_col)
|
277
281
|
{
|
282
|
+
VALUE split;
|
278
283
|
VALUE con = Qnil, kw = Qnil, name = Qnil, desc = Qnil;
|
279
284
|
|
280
285
|
kw = ENCODED_STR_NEW(keyword_at, keyword_length);
|
@@ -282,7 +287,7 @@ store_multiline_kw_con(VALUE listener, const char * event_name,
|
|
282
287
|
|
283
288
|
unindent(con, start_col);
|
284
289
|
|
285
|
-
|
290
|
+
split = rb_str_split(con, "\n");
|
286
291
|
|
287
292
|
name = rb_funcall(split, rb_intern("shift"), 0);
|
288
293
|
desc = rb_ary_join(split, rb_str_new2( "\n" ));
|
@@ -315,12 +320,14 @@ store_pystring_content(VALUE listener,
|
|
315
320
|
const char *at, size_t length,
|
316
321
|
int current_line)
|
317
322
|
{
|
323
|
+
VALUE re2;
|
324
|
+
VALUE unescape_escaped_quotes;
|
318
325
|
VALUE con = ENCODED_STR_NEW(at, length);
|
319
326
|
|
320
327
|
unindent(con, start_col);
|
321
328
|
|
322
|
-
|
323
|
-
|
329
|
+
re2 = rb_reg_regcomp(rb_str_new2("\r\\Z"));
|
330
|
+
unescape_escaped_quotes = rb_reg_regcomp(rb_str_new2("\\\\\"\\\\\"\\\\\""));
|
324
331
|
rb_funcall(con, rb_intern("sub!"), 2, re2, rb_str_new2(""));
|
325
332
|
rb_funcall(con, rb_intern("gsub!"), 2, unescape_escaped_quotes, rb_str_new2("\"\"\""));
|
326
333
|
rb_funcall(listener, rb_intern("py_string"), 2, con, INT2FIX(current_line));
|
@@ -359,9 +366,10 @@ static VALUE CLexer_alloc(VALUE klass)
|
|
359
366
|
|
360
367
|
static VALUE CLexer_init(VALUE self, VALUE listener)
|
361
368
|
{
|
369
|
+
lexer_state *lxr;
|
362
370
|
rb_iv_set(self, "@listener", listener);
|
363
371
|
|
364
|
-
|
372
|
+
lxr = NULL;
|
365
373
|
DATA_GET(self, lexer_state, lxr);
|
366
374
|
lexer_init(lxr);
|
367
375
|
|
@@ -370,16 +378,20 @@ static VALUE CLexer_init(VALUE self, VALUE listener)
|
|
370
378
|
|
371
379
|
static VALUE CLexer_scan(VALUE self, VALUE input)
|
372
380
|
{
|
381
|
+
VALUE input_copy;
|
382
|
+
char *data;
|
383
|
+
size_t len;
|
373
384
|
VALUE listener = rb_iv_get(self, "@listener");
|
374
385
|
|
375
|
-
lexer_state *lexer
|
386
|
+
lexer_state *lexer;
|
387
|
+
lexer = NULL;
|
376
388
|
DATA_GET(self, lexer_state, lexer);
|
377
389
|
|
378
|
-
|
390
|
+
input_copy = rb_str_dup(input);
|
379
391
|
|
380
392
|
rb_str_append(input_copy, rb_str_new2("\n%_FEATURE_END_%"));
|
381
|
-
|
382
|
-
|
393
|
+
data = RSTRING_PTR(input_copy);
|
394
|
+
len = RSTRING_LEN(input_copy);
|
383
395
|
|
384
396
|
if (len == 0) {
|
385
397
|
rb_raise(rb_eGherkinLexingError, "No content to lex.");
|
@@ -38,24 +38,15 @@ module Gherkin
|
|
38
38
|
@f.uri("features/foo.feature")
|
39
39
|
@f.feature(Model::Feature.new([], [], "Feature", "Hello", "World", 1))
|
40
40
|
|
41
|
-
step1 = Model::Step.new([], "Given ", "some stuff", 5)
|
42
|
-
match1 = Model::Match.new([], "features/step_definitions/bar.rb:56")
|
43
|
-
result1 = Model::Result.new('passed', 22, nil)
|
44
|
-
|
45
|
-
step2 = Model::Step.new([], "When ", "foo", 6)
|
46
|
-
match2 = Model::Match.new([], "features/step_definitions/bar.rb:96")
|
47
|
-
result2 = Model::Result.new('passed', 33, nil)
|
48
|
-
|
49
|
-
@f.steps([step1, step2])
|
50
41
|
@f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
|
42
|
+
@f.step(Model::Step.new([], "Given ", "some stuff", 5))
|
43
|
+
@f.step(Model::Step.new([], "When ", "foo", 6))
|
51
44
|
|
52
|
-
@f.
|
53
|
-
@f.
|
54
|
-
@f.result(result1)
|
45
|
+
@f.match(Model::Match.new([], "features/step_definitions/bar.rb:56"))
|
46
|
+
@f.result(Model::Result.new('passed', 22, nil))
|
55
47
|
|
56
|
-
@f.
|
57
|
-
@f.
|
58
|
-
@f.result(result2)
|
48
|
+
@f.match(Model::Match.new([], "features/step_definitions/bar.rb:96"))
|
49
|
+
@f.result(Model::Result.new('passed', 33, nil))
|
59
50
|
|
60
51
|
assert_io(%{Feature: Hello
|
61
52
|
World
|
@@ -75,7 +66,6 @@ module Gherkin
|
|
75
66
|
match = Model::Match.new([], "features/step_definitions/bar.rb:56")
|
76
67
|
result = Model::Result.new('passed', 0, nil)
|
77
68
|
|
78
|
-
@f.steps([step])
|
79
69
|
@f.scenario(Model::Scenario.new([], [], "Scenario", "The scenario", "", 4))
|
80
70
|
@f.step(step)
|
81
71
|
@f.match(match)
|
@@ -91,16 +81,15 @@ module Gherkin
|
|
91
81
|
end
|
92
82
|
|
93
83
|
it "should highlight arguments for regular steps" do
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
@f.
|
99
|
-
@f.step(step)
|
100
|
-
@f.match(match)
|
101
|
-
@f.result(result)
|
84
|
+
@f.uri("foo.feature")
|
85
|
+
@f.scenario(Model::Scenario.new([], [], "Scenario", "Lots of cukes", "", 3))
|
86
|
+
@f.step(Model::Step.new([], "Given ", "I have 999 cukes in my belly", 3))
|
87
|
+
@f.match(Model::Match.new([Gherkin::Formatter::Argument.new(7, '999')], nil))
|
88
|
+
@f.result(Model::Result.new('passed', 6, nil))
|
102
89
|
|
103
90
|
assert_io(
|
91
|
+
"\n" +
|
92
|
+
" Scenario: Lots of cukes \e[90m# foo.feature:3\e[0m\n" +
|
104
93
|
" #{executing}Given #{reset}#{executing}I have #{reset}#{executing_arg}999#{reset}#{executing} cukes in my belly#{reset}\n" +
|
105
94
|
"#{up(1)} #{passed}Given #{reset}#{passed}I have #{reset}#{passed_arg}999#{reset}#{passed} cukes in my belly#{reset}\n"
|
106
95
|
)
|
data/spec/gherkin/i18n_spec.rb
CHANGED
@@ -79,51 +79,50 @@ module Gherkin
|
|
79
79
|
unless defined?(JRUBY_VERSION)
|
80
80
|
it "should print available languages" do
|
81
81
|
("\n" + Gherkin::I18n.language_table).should == %{
|
82
|
-
| ar | Arabic
|
83
|
-
| bg | Bulgarian
|
84
|
-
| ca | Catalan
|
85
|
-
| cs | Czech
|
86
|
-
| cy-GB | Welsh
|
87
|
-
| da | Danish
|
88
|
-
| de | German
|
89
|
-
| en | English
|
90
|
-
| en-Scouse | Scouse
|
91
|
-
| en-au | Australian
|
92
|
-
| en-lol | LOLCAT
|
93
|
-
| en-pirate | Pirate
|
94
|
-
| en-tx | Texan
|
95
|
-
| eo | Esperanto
|
96
|
-
| es | Spanish
|
97
|
-
| et | Estonian
|
98
|
-
| fi | Finnish
|
99
|
-
| fr | French
|
100
|
-
| he | Hebrew
|
101
|
-
| hr | Croatian
|
102
|
-
| hu | Hungarian
|
103
|
-
| id | Indonesian
|
104
|
-
| it | Italian
|
105
|
-
| ja | Japanese
|
106
|
-
| ko | Korean
|
107
|
-
| lt | Lithuanian
|
108
|
-
| lu | Luxemburgish
|
109
|
-
| lv | Latvian
|
110
|
-
| nl | Dutch
|
111
|
-
| no | Norwegian
|
112
|
-
| pl | Polish
|
113
|
-
| pt | Portuguese
|
114
|
-
| ro | Romanian
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
| sr-
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| zh-
|
126
|
-
| zh-TW | Chinese traditional | 繁體中文 |
|
82
|
+
| ar | Arabic | العربية |
|
83
|
+
| bg | Bulgarian | български |
|
84
|
+
| ca | Catalan | català |
|
85
|
+
| cs | Czech | Česky |
|
86
|
+
| cy-GB | Welsh | Cymraeg |
|
87
|
+
| da | Danish | dansk |
|
88
|
+
| de | German | Deutsch |
|
89
|
+
| en | English | English |
|
90
|
+
| en-Scouse | Scouse | Scouse |
|
91
|
+
| en-au | Australian | Australian |
|
92
|
+
| en-lol | LOLCAT | LOLCAT |
|
93
|
+
| en-pirate | Pirate | Pirate |
|
94
|
+
| en-tx | Texan | Texan |
|
95
|
+
| eo | Esperanto | Esperanto |
|
96
|
+
| es | Spanish | español |
|
97
|
+
| et | Estonian | eesti keel |
|
98
|
+
| fi | Finnish | suomi |
|
99
|
+
| fr | French | français |
|
100
|
+
| he | Hebrew | עברית |
|
101
|
+
| hr | Croatian | hrvatski |
|
102
|
+
| hu | Hungarian | magyar |
|
103
|
+
| id | Indonesian | Bahasa Indonesia |
|
104
|
+
| it | Italian | italiano |
|
105
|
+
| ja | Japanese | 日本語 |
|
106
|
+
| ko | Korean | 한국어 |
|
107
|
+
| lt | Lithuanian | lietuvių kalba |
|
108
|
+
| lu | Luxemburgish | Lëtzebuergesch |
|
109
|
+
| lv | Latvian | latviešu |
|
110
|
+
| nl | Dutch | Nederlands |
|
111
|
+
| no | Norwegian | norsk |
|
112
|
+
| pl | Polish | polski |
|
113
|
+
| pt | Portuguese | português |
|
114
|
+
| ro | Romanian | română |
|
115
|
+
| ru | Russian | русский |
|
116
|
+
| sk | Slovak | Slovensky |
|
117
|
+
| sr-Cyrl | Serbian | Српски |
|
118
|
+
| sr-Latn | Serbian (Latin) | Srpski (Latinica) |
|
119
|
+
| sv | Swedish | Svenska |
|
120
|
+
| tr | Turkish | Türkçe |
|
121
|
+
| uk | Ukrainian | Українська |
|
122
|
+
| uz | Uzbek | Узбекча |
|
123
|
+
| vi | Vietnamese | Tiếng Việt |
|
124
|
+
| zh-CN | Chinese simplified | 简体中文 |
|
125
|
+
| zh-TW | Chinese traditional | 繁體中文 |
|
127
126
|
}
|
128
127
|
end
|
129
128
|
end
|
metadata
CHANGED
@@ -1,12 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gherkin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
|
6
|
-
- 2
|
7
|
-
- 3
|
8
|
-
- 3
|
9
|
-
version: 2.3.3
|
4
|
+
prerelease:
|
5
|
+
version: 2.3.4
|
10
6
|
platform: x86-mswin32
|
11
7
|
authors:
|
12
8
|
- Mike Sassak
|
@@ -16,7 +12,7 @@ autorequire:
|
|
16
12
|
bindir: bin
|
17
13
|
cert_chain: []
|
18
14
|
|
19
|
-
date:
|
15
|
+
date: 2011-03-10 00:00:00 +00:00
|
20
16
|
default_executable: gherkin
|
21
17
|
dependencies:
|
22
18
|
- !ruby/object:Gem::Dependency
|
@@ -27,10 +23,6 @@ dependencies:
|
|
27
23
|
requirements:
|
28
24
|
- - ~>
|
29
25
|
- !ruby/object:Gem::Version
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 4
|
33
|
-
- 6
|
34
26
|
version: 1.4.6
|
35
27
|
type: :runtime
|
36
28
|
version_requirements: *id001
|
@@ -42,10 +34,6 @@ dependencies:
|
|
42
34
|
requirements:
|
43
35
|
- - ~>
|
44
36
|
- !ruby/object:Gem::Version
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
- 8
|
48
|
-
- 7
|
49
37
|
version: 0.8.7
|
50
38
|
type: :development
|
51
39
|
version_requirements: *id002
|
@@ -57,11 +45,7 @@ dependencies:
|
|
57
45
|
requirements:
|
58
46
|
- - ~>
|
59
47
|
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
- 1
|
62
|
-
- 0
|
63
|
-
- 7
|
64
|
-
version: 1.0.7
|
48
|
+
version: 1.0.10
|
65
49
|
type: :development
|
66
50
|
version_requirements: *id003
|
67
51
|
- !ruby/object:Gem::Dependency
|
@@ -72,11 +56,7 @@ dependencies:
|
|
72
56
|
requirements:
|
73
57
|
- - ~>
|
74
58
|
- !ruby/object:Gem::Version
|
75
|
-
|
76
|
-
- 2
|
77
|
-
- 3
|
78
|
-
- 0
|
79
|
-
version: 2.3.0
|
59
|
+
version: 2.5.0
|
80
60
|
type: :development
|
81
61
|
version_requirements: *id004
|
82
62
|
- !ruby/object:Gem::Dependency
|
@@ -87,11 +67,7 @@ dependencies:
|
|
87
67
|
requirements:
|
88
68
|
- - ~>
|
89
69
|
- !ruby/object:Gem::Version
|
90
|
-
|
91
|
-
- 0
|
92
|
-
- 2
|
93
|
-
- 1
|
94
|
-
version: 0.2.1
|
70
|
+
version: 0.3.2
|
95
71
|
type: :development
|
96
72
|
version_requirements: *id005
|
97
73
|
- !ruby/object:Gem::Dependency
|
@@ -102,10 +78,6 @@ dependencies:
|
|
102
78
|
requirements:
|
103
79
|
- - ~>
|
104
80
|
- !ruby/object:Gem::Version
|
105
|
-
segments:
|
106
|
-
- 0
|
107
|
-
- 10
|
108
|
-
- 0
|
109
81
|
version: 0.10.0
|
110
82
|
type: :development
|
111
83
|
version_requirements: *id006
|
@@ -117,10 +89,6 @@ dependencies:
|
|
117
89
|
requirements:
|
118
90
|
- - ~>
|
119
91
|
- !ruby/object:Gem::Version
|
120
|
-
segments:
|
121
|
-
- 1
|
122
|
-
- 0
|
123
|
-
- 5
|
124
92
|
version: 1.0.5
|
125
93
|
type: :development
|
126
94
|
version_requirements: *id007
|
@@ -132,10 +100,6 @@ dependencies:
|
|
132
100
|
requirements:
|
133
101
|
- - ~>
|
134
102
|
- !ruby/object:Gem::Version
|
135
|
-
segments:
|
136
|
-
- 3
|
137
|
-
- 0
|
138
|
-
- 0
|
139
103
|
version: 3.0.0
|
140
104
|
type: :development
|
141
105
|
version_requirements: *id008
|
@@ -308,7 +272,6 @@ files:
|
|
308
272
|
- lib/1.8/gherkin_lexer_pl.so
|
309
273
|
- lib/1.8/gherkin_lexer_pt.so
|
310
274
|
- lib/1.8/gherkin_lexer_ro.so
|
311
|
-
- lib/1.8/gherkin_lexer_ro_ro.so
|
312
275
|
- lib/1.8/gherkin_lexer_ru.so
|
313
276
|
- lib/1.8/gherkin_lexer_sk.so
|
314
277
|
- lib/1.8/gherkin_lexer_sr_cyrl.so
|
@@ -353,7 +316,6 @@ files:
|
|
353
316
|
- lib/1.9/gherkin_lexer_pl.so
|
354
317
|
- lib/1.9/gherkin_lexer_pt.so
|
355
318
|
- lib/1.9/gherkin_lexer_ro.so
|
356
|
-
- lib/1.9/gherkin_lexer_ro_ro.so
|
357
319
|
- lib/1.9/gherkin_lexer_ru.so
|
358
320
|
- lib/1.9/gherkin_lexer_sk.so
|
359
321
|
- lib/1.9/gherkin_lexer_sr_cyrl.so
|
@@ -379,24 +341,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
379
341
|
requirements:
|
380
342
|
- - ">="
|
381
343
|
- !ruby/object:Gem::Version
|
382
|
-
segments:
|
383
|
-
- 0
|
384
344
|
version: "0"
|
385
345
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
386
346
|
none: false
|
387
347
|
requirements:
|
388
348
|
- - ">="
|
389
349
|
- !ruby/object:Gem::Version
|
390
|
-
segments:
|
391
|
-
- 0
|
392
350
|
version: "0"
|
393
351
|
requirements: []
|
394
352
|
|
395
353
|
rubyforge_project:
|
396
|
-
rubygems_version: 1.
|
354
|
+
rubygems_version: 1.6.2
|
397
355
|
signing_key:
|
398
356
|
specification_version: 3
|
399
|
-
summary: gherkin-2.3.
|
357
|
+
summary: gherkin-2.3.4
|
400
358
|
test_files:
|
401
359
|
- features/escaped_pipes.feature
|
402
360
|
- features/feature_parser.feature
|