gherkin 2.4.21-universal-dotnet → 2.5.0-universal-dotnet

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,21 +1,21 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gherkin (2.4.21)
4
+ gherkin (2.5.0)
5
5
  json (>= 1.4.6)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
10
  builder (3.0.0)
11
- cucumber (1.0.6)
11
+ cucumber (1.1.0)
12
12
  builder (>= 2.1.2)
13
13
  diff-lcs (>= 1.1.2)
14
- gherkin (~> 2.4.18)
14
+ gherkin (~> 2.5.0)
15
15
  json (>= 1.4.6)
16
16
  term-ansicolor (>= 1.0.6)
17
17
  diff-lcs (1.1.3)
18
- json (1.6.0)
18
+ json (1.6.1)
19
19
  libv8 (3.3.10.2)
20
20
  rake (0.9.2)
21
21
  rake-compiler (0.7.9)
@@ -35,13 +35,12 @@ GEM
35
35
  yard (0.7.2)
36
36
 
37
37
  PLATFORMS
38
- java
39
38
  ruby
40
39
 
41
40
  DEPENDENCIES
42
41
  builder (>= 2.1.2)
43
42
  bundler (>= 1.0.18)
44
- cucumber (>= 1.0.6)
43
+ cucumber (>= 1.1.0)
45
44
  gherkin!
46
45
  rake (>= 0.9.2)
47
46
  rake-compiler (>= 0.7.9)
data/History.md CHANGED
@@ -1,3 +1,74 @@
1
+ ## [2.5.0](https://github.com/cucumber/gherkin/compare/v2.4.21...v2.5.0)
2
+
3
+ ### Changed Features
4
+
5
+ The JSON representation of features has changed. The difference lies in how Doc Strings and Data Tables are represented. Consider the following steps:
6
+
7
+ Given a Data Table:
8
+ | Hipster | Ipsum |
9
+ | Freegan | Vinyl |
10
+ Given a Doc String:
11
+ """
12
+ Hipster
13
+ Ipsum
14
+ """
15
+
16
+ This is now represented in JSON as:
17
+
18
+ "steps": [
19
+ {
20
+ "keyword": "Given ",
21
+ "name": "a Data Table"
22
+ "line": 5,
23
+ "rows": [
24
+ { "cells": ["Hipster", "Ipsum"], "line": 6 },
25
+ { "cells": ["Freegan", "Vinyl"], "line": 7 }
26
+ ]
27
+ },
28
+ {
29
+ "keyword": "Given ",
30
+ "name": "a Doc String"
31
+ "line": 8,
32
+ "doc_string": {
33
+ "value": "Hipster\nIpsum"
34
+ "line": 9,
35
+ "content_type": "plaintext",
36
+ }
37
+ }
38
+ ]
39
+
40
+ Previously it would be represented in JSON as:
41
+
42
+ "steps": [
43
+ {
44
+ "keyword": "Given ",
45
+ "name": "a Data Table"
46
+ "line": 5,
47
+ "multiline_arg": {
48
+ "type": "table"
49
+ "value": [
50
+ { "cells": ["Hipster", "Ipsum"], "line": 6 },
51
+ { "cells": ["Freegan", "Vinyl"], "line": 7 }
52
+ ]
53
+ }
54
+ },
55
+ {
56
+ "keyword": "Given ",
57
+ "name": "a Doc String"
58
+ "line": 8,
59
+ "multiline_arg": {
60
+ "type": "doc_string"
61
+ "value": "Hipster\nIpsum"
62
+ "line": 9,
63
+ "content_type": "plaintext",
64
+ }
65
+ }
66
+ ]
67
+
68
+ ### Bugfixes
69
+ * Java JSONFormatter produces invalid JSON ([#128](https://github.com/cucumber/gherkin/issues/128) Aslak Hellesøy)
70
+ * Missing matches and results in JSONFormatter output ([#129](https://github.com/cucumber/gherkin/issues/129) Aslak Hellesøy)
71
+
1
72
  ## [2.4.21](https://github.com/cucumber/gherkin/compare/v2.4.20...v2.4.21)
2
73
 
3
74
  ### Bugfixes
@@ -71,154 +71,208 @@ Feature: JSON formatter
71
71
  Then the outputted JSON should be:
72
72
  """
73
73
  {
74
- "tags": [{"name": "@one", "line":1}],
75
- "keyword": "Feature",
76
- "name": "OH HAI",
77
74
  "description": "",
78
- "line": 2,
79
- "elements":[
75
+ "elements": [
80
76
  {
81
- "type": "scenario",
82
- "keyword": "Scenario",
83
- "name": "Fujin",
84
77
  "description": "",
78
+ "keyword": "Scenario",
85
79
  "line": 4,
80
+ "name": "Fujin",
86
81
  "steps": [
87
82
  {
88
83
  "keyword": "Given ",
89
- "name": "wind",
90
- "line": 5
84
+ "line": 5,
85
+ "name": "wind"
91
86
  },
92
87
  {
93
88
  "keyword": "Then ",
94
- "name": "spirit",
95
- "line": 6
89
+ "line": 6,
90
+ "name": "spirit"
96
91
  }
97
- ]
92
+ ],
93
+ "type": "scenario"
98
94
  },
99
95
  {
100
- "type": "scenario",
101
- "tags": [{"name": "@two", "line":8}],
102
- "keyword": "Scenario",
103
- "name": "_why",
104
96
  "description": "",
97
+ "keyword": "Scenario",
105
98
  "line": 9,
99
+ "name": "_why",
106
100
  "steps": [
107
101
  {
108
102
  "keyword": "Given ",
109
- "name": "chunky",
110
- "line": 10
103
+ "line": 10,
104
+ "name": "chunky"
111
105
  },
112
106
  {
113
107
  "keyword": "Then ",
114
- "name": "bacon",
115
- "line": 11
108
+ "line": 11,
109
+ "name": "bacon"
116
110
  }
117
- ]
118
- },
119
- {
120
- "type": "scenario_outline",
121
- "tags": [{"name": "@three", "line":13}, {"name": "@four", "line":13}],
122
- "keyword": "Scenario Outline",
123
- "name": "Life",
124
- "description": "",
125
- "line": 14,
126
- "steps": [
111
+ ],
112
+ "tags": [
127
113
  {
128
- "keyword": "Given ",
129
- "name": "some <boredom>",
130
- "line": 15
114
+ "line": 8,
115
+ "name": "@two"
131
116
  }
132
117
  ],
118
+ "type": "scenario"
119
+ },
120
+ {
121
+ "description": "",
133
122
  "examples": [
134
123
  {
135
- "tags": [{"name": "@five", "line":17}],
136
- "keyword": "Examples",
137
- "name": "Real life",
138
124
  "description": "",
125
+ "keyword": "Examples",
139
126
  "line": 18,
127
+ "name": "Real life",
140
128
  "rows": [
141
129
  {
142
- "cells": ["boredom"],
130
+ "cells": [
131
+ "boredom"
132
+ ],
143
133
  "line": 19
144
134
  },
145
135
  {
146
- "cells": ["airport"],
136
+ "cells": [
137
+ "airport"
138
+ ],
147
139
  "line": 20
148
140
  },
149
141
  {
150
- "cells": ["meeting"],
142
+ "cells": [
143
+ "meeting"
144
+ ],
151
145
  "line": 21
152
146
  }
147
+ ],
148
+ "tags": [
149
+ {
150
+ "line": 17,
151
+ "name": "@five"
152
+ }
153
153
  ]
154
154
  }
155
- ]
155
+ ],
156
+ "keyword": "Scenario Outline",
157
+ "line": 14,
158
+ "name": "Life",
159
+ "steps": [
160
+ {
161
+ "keyword": "Given ",
162
+ "line": 15,
163
+ "name": "some <boredom>"
164
+ }
165
+ ],
166
+ "tags": [
167
+ {
168
+ "line": 13,
169
+ "name": "@three"
170
+ },
171
+ {
172
+ "line": 13,
173
+ "name": "@four"
174
+ }
175
+ ],
176
+ "type": "scenario_outline"
156
177
  },
157
178
  {
158
- "type": "scenario",
159
- "keyword": "Scenario",
160
- "name": "who stole my mojo?",
161
179
  "description": "",
180
+ "keyword": "Scenario",
162
181
  "line": 23,
182
+ "name": "who stole my mojo?",
163
183
  "steps": [
164
184
  {
165
185
  "keyword": "When ",
166
- "name": "I was",
167
186
  "line": 24,
168
- "multiline_arg": {
169
- "type": "table",
170
- "value": [
171
- {
172
- "line": 25,
173
- "cells": ["asleep"]
174
- }
175
- ]
176
- }
187
+ "name": "I was",
188
+ "rows": [
189
+ {
190
+ "cells": [
191
+ "asleep"
192
+ ],
193
+ "line": 25
194
+ }
195
+ ]
177
196
  },
178
197
  {
198
+ "doc_string": {
199
+ "content_type": "plaintext",
200
+ "line": 27,
201
+ "value": "innocent"
202
+ },
179
203
  "keyword": "And ",
180
- "name": "so",
181
204
  "line": 26,
182
- "multiline_arg": {
183
- "type": "doc_string",
184
- "content_type": "plaintext",
185
- "value": "innocent",
186
- "line": 27
187
- }
205
+ "name": "so"
188
206
  }
189
- ]
207
+ ],
208
+ "type": "scenario"
190
209
  },
191
210
  {
192
- "type": "scenario_outline",
193
- "comments": [{"value": "# The", "line":31}],
194
- "keyword": "Scenario Outline",
195
- "name": "with",
196
- "description": "",
197
- "line": 32,
198
- "steps": [
211
+ "comments": [
199
212
  {
200
- "comments": [{"value": "# all", "line":33}],
201
- "keyword": "Then ",
202
- "line": 34,
203
- "name": "nice"
213
+ "line": 31,
214
+ "value": "# The"
204
215
  }
205
216
  ],
217
+ "description": "",
206
218
  "examples": [
207
219
  {
208
- "comments": [{"value": "# comments", "line": 36}, {"value": "# everywhere", "line": 37}],
209
- "keyword": "Examples",
210
- "name": "An example",
220
+ "comments": [
221
+ {
222
+ "line": 36,
223
+ "value": "# comments"
224
+ },
225
+ {
226
+ "line": 37,
227
+ "value": "# everywhere"
228
+ }
229
+ ],
211
230
  "description": "",
231
+ "keyword": "Examples",
212
232
  "line": 38,
233
+ "name": "An example",
213
234
  "rows": [
214
235
  {
215
- "comments": [{"value": "# I mean", "line": 39}],
216
- "line": 40,
217
- "cells": ["partout"]
236
+ "cells": [
237
+ "partout"
238
+ ],
239
+ "comments": [
240
+ {
241
+ "line": 39,
242
+ "value": "# I mean"
243
+ }
244
+ ],
245
+ "line": 40
218
246
  }
219
247
  ]
220
248
  }
221
- ]
249
+ ],
250
+ "keyword": "Scenario Outline",
251
+ "line": 32,
252
+ "name": "with",
253
+ "steps": [
254
+ {
255
+ "comments": [
256
+ {
257
+ "line": 33,
258
+ "value": "# all"
259
+ }
260
+ ],
261
+ "keyword": "Then ",
262
+ "line": 34,
263
+ "name": "nice"
264
+ }
265
+ ],
266
+ "type": "scenario_outline"
267
+ }
268
+ ],
269
+ "keyword": "Feature",
270
+ "line": 2,
271
+ "name": "OH HAI",
272
+ "tags": [
273
+ {
274
+ "line": 1,
275
+ "name": "@one"
222
276
  }
223
277
  ]
224
278
  }
@@ -144,24 +144,20 @@ Feature: JSON lexer
144
144
  "keyword": "When ",
145
145
  "name": "I was",
146
146
  "line": 24,
147
- "multiline_arg": {
148
- "type": "table",
149
- "value": [
150
- {
151
- "comments": [],
152
- "line": 25,
153
- "cells": ["asleep"]
154
- }
155
- ]
156
- }
147
+ "rows": [
148
+ {
149
+ "comments": [],
150
+ "line": 25,
151
+ "cells": ["asleep"]
152
+ }
153
+ ]
157
154
  },
158
155
  {
159
156
  "comments": [],
160
157
  "keyword": "And ",
161
158
  "name": "so",
162
159
  "line": 26,
163
- "multiline_arg": {
164
- "type": "doc_string",
160
+ "doc_string": {
165
161
  "value": "innocent",
166
162
  "line": 27
167
163
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "gherkin"
5
- s.version = "2.4.21"
5
+ s.version = "2.5.0"
6
6
  s.authors = ["Mike Sassak", "Gregory Hnatiuk", "Aslak Hellesøy"]
7
7
  s.description = "A fast Gherkin lexer/parser based on the Ragel State Machine Compiler."
8
8
  s.summary = "#{s.name}-#{s.version}"
@@ -46,7 +46,7 @@ Gem::Specification.new do |s|
46
46
  # Hack because json is released as two different versions for MRI and JRuby :-/
47
47
  s.add_dependency('json', '>= 1.4.6')
48
48
 
49
- s.add_development_dependency('cucumber', '>= 1.0.6')
49
+ s.add_development_dependency('cucumber', '>= 1.1.0')
50
50
  s.add_development_dependency('rake', '>= 0.9.2')
51
51
  s.add_development_dependency('bundler', '>= 1.0.18')
52
52
  s.add_development_dependency('rspec', '>= 2.6.0')
Binary file
@@ -29,14 +29,17 @@ module Gherkin
29
29
 
30
30
  def background(background)
31
31
  feature_elements << background.to_hash
32
+ @step_index = 0
32
33
  end
33
34
 
34
35
  def scenario(scenario)
35
36
  feature_elements << scenario.to_hash
37
+ @step_index = 0
36
38
  end
37
39
 
38
40
  def scenario_outline(scenario_outline)
39
41
  feature_elements << scenario_outline.to_hash
42
+ @step_index = 0
40
43
  end
41
44
 
42
45
  def examples(examples)
@@ -48,11 +51,16 @@ module Gherkin
48
51
  end
49
52
 
50
53
  def match(match)
51
- last_step['match'] = match.to_hash
54
+ current_steps[@step_index]['match'] = match.to_hash
52
55
  end
53
56
 
54
57
  def result(result)
55
- last_step['result'] = result.to_hash
58
+ current_steps[@step_index]['result'] = result.to_hash
59
+ @step_index += 1
60
+ end
61
+
62
+ def last_step
63
+ current_steps[-1]
56
64
  end
57
65
 
58
66
  def embedding(mime_type, data)
@@ -81,10 +89,6 @@ module Gherkin
81
89
  feature_element['steps'] ||= []
82
90
  end
83
91
 
84
- def last_step
85
- current_steps[-1]
86
- end
87
-
88
92
  def embeddings
89
93
  last_step['embeddings'] ||= []
90
94
  end
@@ -112,15 +112,15 @@ module Gherkin
112
112
  class Step < BasicStatement
113
113
  native_impl('gherkin')
114
114
 
115
- attr_accessor :multiline_arg
115
+ attr_accessor :rows
116
+ attr_accessor :doc_string
116
117
 
117
118
  def line_range
118
119
  range = super
119
- case multiline_arg
120
- when Array
121
- range = range.first..multiline_arg[-1].line
122
- when Model::DocString
123
- range = range.first..multiline_arg.line_range.last
120
+ if(rows)
121
+ range = range.first..rows[-1].line
122
+ elsif(doc_string)
123
+ range = range.first..doc_string.line_range.last
124
124
  end
125
125
  range
126
126
  end
@@ -136,20 +136,6 @@ module Gherkin
136
136
  Argument.new(offset, val)
137
137
  end
138
138
  end
139
-
140
- def to_hash
141
- hash = super
142
- if Array === @multiline_arg
143
- hash['multiline_arg'] = {
144
- 'type' => 'table',
145
- 'value' => hash['multiline_arg']
146
- }
147
- elsif DocString === @multiline_arg
148
- hash['multiline_arg']['type'] = 'doc_string'
149
- hash['multiline_arg']['content_type'] = @multiline_arg.content_type
150
- end
151
- hash
152
- end
153
139
  end
154
140
 
155
141
  class Comment < Hashable
@@ -110,12 +110,9 @@ module Gherkin
110
110
  @io.write(text_format.text(step.keyword))
111
111
  @step_printer.write_step(@io, text_format, arg_format, step.name, arguments)
112
112
  @io.puts(indented_location(location, proceed))
113
- case step.multiline_arg
114
- when Model::DocString
115
- doc_string(step.multiline_arg)
116
- when Array
117
- table(step.multiline_arg)
118
- end
113
+
114
+ doc_string(step.doc_string) if step.doc_string
115
+ table(step.rows) if step.rows
119
116
  end
120
117
 
121
118
  class MonochromeFormat
@@ -53,12 +53,11 @@ module Gherkin
53
53
  def step(o)
54
54
  step = Formatter::Model::Step.new(comments(o), keyword(o), name(o), line(o))
55
55
 
56
- if(ma = o['multiline_arg'])
57
- if(ma['type'] == 'table')
58
- step.multiline_arg = rows(ma['value'])
59
- else
60
- step.multiline_arg = Formatter::Model::DocString.new(ma['content_type'].to_s, ma['value'], ma['line'])
61
- end
56
+ if(o['rows'])
57
+ step.rows = rows(o['rows'])
58
+ elsif(o['doc_string'])
59
+ ds = o['doc_string']
60
+ step.doc_string = Formatter::Model::DocString.new(ds['content_type'].to_s, ds['value'], ds['line'])
62
61
  end
63
62
 
64
63
  step
@@ -98,7 +98,11 @@ module Gherkin
98
98
 
99
99
  def replay_step_or_examples
100
100
  if(@step_statement)
101
- @step_statement.multiline_arg = grab_doc_string! || grab_rows!
101
+ if(doc_string = grab_doc_string!)
102
+ @step_statement.doc_string = doc_string
103
+ elsif(rows = grab_rows!)
104
+ @step_statement.rows = rows
105
+ end
102
106
  @formatter.step(@step_statement)
103
107
  @step_statement = nil
104
108
  end
@@ -29,14 +29,9 @@
29
29
  "steps": [
30
30
  { "name": "A step with a table",
31
31
  "keyword": "Given ",
32
- "multiline_arg": {
33
- "type": "table",
34
- "value" : [
35
- {"cells":
36
- [ "a","row","for","a","step" ]
37
- }
38
- ]
39
- }
32
+ "rows" : [
33
+ {"cells": [ "a","row","for","a","step" ]}
34
+ ]
40
35
  }
41
36
  ],
42
37
  "examples": [
@@ -79,41 +74,35 @@
79
74
  "steps" : [
80
75
  { "name" : "a third step with a table",
81
76
  "keyword": "Given ",
82
- "multiline_arg": {
83
- "type": "table",
84
- "value": [
85
- {
86
- "cells" : [ "a","b" ],
87
- "line" : 987
88
- },
89
- { "cells" :
90
- [ "c","d" ]
91
- },
92
- { "cells" :
93
- [ "e", "f" ]
94
- }
95
- ]
96
- }
77
+ "rows": [
78
+ {
79
+ "cells" : [ "a","b" ],
80
+ "line" : 987
81
+ },
82
+ { "cells" :
83
+ [ "c","d" ]
84
+ },
85
+ { "cells" :
86
+ [ "e", "f" ]
87
+ }
88
+ ]
97
89
  },
98
90
  { "name" : "I am still testing things",
99
91
  "keyword": "Given ",
100
- "multiline_arg": {
101
- "type": "table",
102
- "value": [
103
- { "cells" :
104
- [ "g","h" ]
105
- },
106
- { "cells" :
107
- [ "e","r" ]
108
- },
109
- { "cells" :
110
- [ "k", "i" ]
111
- },
112
- { "cells" :
113
- [ "n", "" ]
114
- }
115
- ]
116
- }
92
+ "rows": [
93
+ { "cells" :
94
+ [ "g","h" ]
95
+ },
96
+ { "cells" :
97
+ [ "e","r" ]
98
+ },
99
+ { "cells" :
100
+ [ "k", "i" ]
101
+ },
102
+ { "cells" :
103
+ [ "n", "" ]
104
+ }
105
+ ]
117
106
  },
118
107
  { "name" : "I am done testing these tables",
119
108
  "keyword": "Given " },
@@ -128,8 +117,7 @@
128
117
  "steps" : [
129
118
  { "name" : "All work and no play",
130
119
  "keyword": "Given ",
131
- "multiline_arg": {
132
- "type": "doc_string",
120
+ "doc_string": {
133
121
  "content_type": "text",
134
122
  "value": "Makes Homer something something\nAnd something else",
135
123
  "line": 777
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+ require 'stringio'
3
+ require 'gherkin/formatter/json_formatter'
4
+ require 'gherkin/formatter/model'
5
+
6
+ module Gherkin
7
+ module Formatter
8
+ describe JSONFormatter do
9
+ it "renders results" do
10
+ io = StringIO.new
11
+ f = JSONFormatter.new(io)
12
+ f.uri("f.feature")
13
+ f.feature(Model::Feature.new([], [], "Feature", "f", "", 1))
14
+ f.scenario(Model::Scenario.new([], [], "Feature", "f", "", 2))
15
+ f.step(Model::Step.new([], "Given ", "g", 3))
16
+ f.step(Model::Step.new([], "When ", "w", 4))
17
+
18
+ f.match(Model::Match.new([], "def.rb:33"))
19
+ f.result(Model::Result.new(:passed, 1, nil))
20
+
21
+ f.match(Model::Match.new([], "def.rb:44"))
22
+ f.result(Model::Result.new(:passed, 1, nil))
23
+
24
+ f.eof
25
+
26
+ expected = %{
27
+ {
28
+ "keyword": "Feature",
29
+ "name": "f",
30
+ "line": 1,
31
+ "description": "",
32
+ "elements": [
33
+ {
34
+ "keyword": "Feature",
35
+ "name": "f",
36
+ "line": 2,
37
+ "description": "",
38
+ "type": "scenario",
39
+ "steps": [
40
+ {
41
+ "keyword": "Given ",
42
+ "name": "g",
43
+ "line": 3,
44
+ "match": {
45
+ "location": "def.rb:33"
46
+ },
47
+ "result": {
48
+ "status": "passed",
49
+ "duration": 1
50
+ }
51
+ },
52
+ {
53
+ "keyword": "When ",
54
+ "name": "w",
55
+ "line": 4,
56
+ "match": {
57
+ "location": "def.rb:44"
58
+ },
59
+ "result": {
60
+ "status": "passed",
61
+ "duration": 1
62
+ }
63
+ }
64
+ ]
65
+ }
66
+ ]
67
+ }
68
+ }
69
+
70
+ JSON.parse(expected).should == JSON.parse(io.string)
71
+ end
72
+ end
73
+ end
74
+ end
@@ -43,14 +43,11 @@ module Gherkin
43
43
  "steps": [
44
44
  {
45
45
  "name": "Hello",
46
- "multiline_arg": {
47
- "type": "table",
48
- "value": [
49
- {
50
- "cells": ["foo", "bar"]
51
- }
52
- ]
53
- }
46
+ "rows": [
47
+ {
48
+ "cells": ["foo", "bar"]
49
+ }
50
+ ]
54
51
  }
55
52
  ]
56
53
  }
@@ -1,3 +1,4 @@
1
+
1
2
  unless ENV['RUBY_CC_VERSION']
2
3
  require 'cucumber/rake/task'
3
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.21
4
+ version: 2.5.0
5
5
  prerelease:
6
6
  platform: universal-dotnet
7
7
  authors:
@@ -11,11 +11,11 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2011-09-16 00:00:00.000000000Z
14
+ date: 2011-09-22 00:00:00.000000000Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: json
18
- requirement: &2152557940 !ruby/object:Gem::Requirement
18
+ requirement: &2155955960 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ! '>='
@@ -23,21 +23,21 @@ dependencies:
23
23
  version: 1.4.6
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2152557940
26
+ version_requirements: *2155955960
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cucumber
29
- requirement: &2152557360 !ruby/object:Gem::Requirement
29
+ requirement: &2155950940 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ! '>='
33
33
  - !ruby/object:Gem::Version
34
- version: 1.0.6
34
+ version: 1.1.0
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *2152557360
37
+ version_requirements: *2155950940
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rake
40
- requirement: &2152556680 !ruby/object:Gem::Requirement
40
+ requirement: &2155927640 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ! '>='
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: 0.9.2
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *2152556680
48
+ version_requirements: *2155927640
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: bundler
51
- requirement: &2152555840 !ruby/object:Gem::Requirement
51
+ requirement: &2155926020 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ! '>='
@@ -56,10 +56,10 @@ dependencies:
56
56
  version: 1.0.18
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2152555840
59
+ version_requirements: *2155926020
60
60
  - !ruby/object:Gem::Dependency
61
61
  name: rspec
62
- requirement: &2152555380 !ruby/object:Gem::Requirement
62
+ requirement: &2155925000 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
65
  - - ! '>='
@@ -67,10 +67,10 @@ dependencies:
67
67
  version: 2.6.0
68
68
  type: :development
69
69
  prerelease: false
70
- version_requirements: *2152555380
70
+ version_requirements: *2155925000
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: therubyracer
73
- requirement: &2152554760 !ruby/object:Gem::Requirement
73
+ requirement: &2155923680 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
76
  - - ! '>='
@@ -78,10 +78,10 @@ dependencies:
78
78
  version: 0.9.4
79
79
  type: :development
80
80
  prerelease: false
81
- version_requirements: *2152554760
81
+ version_requirements: *2155923680
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: yard
84
- requirement: &2152554300 !ruby/object:Gem::Requirement
84
+ requirement: &2155922360 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
87
  - - ! '>='
@@ -89,10 +89,10 @@ dependencies:
89
89
  version: 0.7.2
90
90
  type: :development
91
91
  prerelease: false
92
- version_requirements: *2152554300
92
+ version_requirements: *2155922360
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: rdiscount
95
- requirement: &2152553840 !ruby/object:Gem::Requirement
95
+ requirement: &2152900280 !ruby/object:Gem::Requirement
96
96
  none: false
97
97
  requirements:
98
98
  - - ! '>='
@@ -100,10 +100,10 @@ dependencies:
100
100
  version: 1.6.8
101
101
  type: :development
102
102
  prerelease: false
103
- version_requirements: *2152553840
103
+ version_requirements: *2152900280
104
104
  - !ruby/object:Gem::Dependency
105
105
  name: term-ansicolor
106
- requirement: &2152553360 !ruby/object:Gem::Requirement
106
+ requirement: &2152899660 !ruby/object:Gem::Requirement
107
107
  none: false
108
108
  requirements:
109
109
  - - ! '>='
@@ -111,10 +111,10 @@ dependencies:
111
111
  version: 1.0.6
112
112
  type: :development
113
113
  prerelease: false
114
- version_requirements: *2152553360
114
+ version_requirements: *2152899660
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: builder
117
- requirement: &2152548680 !ruby/object:Gem::Requirement
117
+ requirement: &2152898420 !ruby/object:Gem::Requirement
118
118
  none: false
119
119
  requirements:
120
120
  - - ! '>='
@@ -122,7 +122,7 @@ dependencies:
122
122
  version: 2.1.2
123
123
  type: :development
124
124
  prerelease: false
125
- version_requirements: *2152548680
125
+ version_requirements: *2152898420
126
126
  description: A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
127
127
  email: cukes@googlegroups.com
128
128
  executables: []
@@ -220,6 +220,7 @@ files:
220
220
  - spec/gherkin/fixtures/with_bom.feature
221
221
  - spec/gherkin/formatter/ansi_escapes_spec.rb
222
222
  - spec/gherkin/formatter/filter_formatter_spec.rb
223
+ - spec/gherkin/formatter/json_formatter_spec.rb
223
224
  - spec/gherkin/formatter/model_spec.rb
224
225
  - spec/gherkin/formatter/pretty_formatter_spec.rb
225
226
  - spec/gherkin/formatter/spaces.feature
@@ -290,7 +291,7 @@ rubyforge_project:
290
291
  rubygems_version: 1.8.10
291
292
  signing_key:
292
293
  specification_version: 3
293
- summary: gherkin-2.4.21
294
+ summary: gherkin-2.5.0
294
295
  test_files:
295
296
  - features/escaped_pipes.feature
296
297
  - features/feature_parser.feature
@@ -326,6 +327,7 @@ test_files:
326
327
  - spec/gherkin/fixtures/with_bom.feature
327
328
  - spec/gherkin/formatter/ansi_escapes_spec.rb
328
329
  - spec/gherkin/formatter/filter_formatter_spec.rb
330
+ - spec/gherkin/formatter/json_formatter_spec.rb
329
331
  - spec/gherkin/formatter/model_spec.rb
330
332
  - spec/gherkin/formatter/pretty_formatter_spec.rb
331
333
  - spec/gherkin/formatter/spaces.feature