gherkin 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +15 -6
- data/README.rdoc +23 -0
- data/Rakefile +1 -0
- data/VERSION.yml +1 -1
- data/features/step_definitions/gherkin_steps.rb +1 -1
- data/features/step_definitions/{pretty_printer_steps.rb → pretty_listener_step.rb} +2 -2
- data/gherkin.gemspec +24 -35
- data/java/Gherkin.iml +8 -14
- data/java/src/{gherkin → main/java/gherkin}/lexer/.gitignore +0 -0
- data/lib/gherkin.rb +1 -1
- data/lib/gherkin/c_lexer.rb +2 -2
- data/lib/gherkin/{format → formatter}/argument.rb +1 -1
- data/lib/gherkin/{tools → formatter}/colors.rb +1 -1
- data/lib/gherkin/{format → formatter}/monochrome_format.rb +1 -1
- data/lib/gherkin/{tools → formatter}/pretty_listener.rb +8 -9
- data/lib/gherkin/i18n.rb +27 -5
- data/lib/gherkin/i18n_lexer.rb +18 -44
- data/lib/gherkin/parser/filter_listener.rb +191 -0
- data/lib/gherkin/parser/parser.rb +142 -0
- data/lib/gherkin/parser/sexp.rb +45 -0
- data/lib/gherkin/parser/tag_expression.rb +46 -0
- data/lib/gherkin/rb_lexer.rb +2 -2
- data/ragel/lexer_common.rl.erb +1 -1
- data/spec/gherkin/{format → formatter}/argument_spec.rb +2 -2
- data/spec/gherkin/{tools → formatter}/colors_spec.rb +2 -2
- data/spec/gherkin/{tools → formatter}/pretty_listener_spec.rb +5 -5
- data/spec/gherkin/i18n_lexer_spec.rb +3 -3
- data/spec/gherkin/parser/filter_listener_spec.rb +363 -0
- data/spec/gherkin/parser/parser_spec.rb +35 -0
- data/spec/gherkin/parser/tag_expression_spec.rb +120 -0
- data/spec/gherkin/rb_lexer_spec.rb +0 -1
- data/spec/gherkin/sexp_recorder.rb +3 -3
- data/spec/gherkin/shared/lexer_spec.rb +19 -19
- data/spec/gherkin/shared/tags_spec.rb +4 -4
- data/tasks/bench.rake +2 -2
- data/tasks/compile.rake +1 -1
- data/tasks/ragel_task.rb +1 -1
- metadata +25 -36
- data/java/build.xml +0 -16
- data/java/src/gherkin/FixJava.java +0 -37
- data/java/src/gherkin/I18nLexer.java +0 -48
- data/java/src/gherkin/Lexer.java +0 -5
- data/java/src/gherkin/LexingError.java +0 -7
- data/java/src/gherkin/Listener.java +0 -29
- data/java/src/gherkin/Main.java +0 -17
- data/java/src/gherkin/ParseError.java +0 -22
- data/java/src/gherkin/Parser.java +0 -191
- data/java/src/gherkin/formatter/Argument.java +0 -39
- data/java/src/gherkin/formatter/ArgumentFormat.java +0 -17
- data/java/src/gherkin/formatter/Colors.java +0 -7
- data/java/src/gherkin/formatter/Formatter.java +0 -15
- data/java/src/gherkin/formatter/PrettyFormatter.java +0 -219
- data/java/src/gherkin/parser/StateMachineReader.java +0 -67
- data/java/test/gherkin/formatter/ArgumentTest.java +0 -17
- data/lib/gherkin/lexer.rb +0 -35
- data/lib/gherkin/parser.rb +0 -19
- data/lib/gherkin/rb_parser.rb +0 -125
- data/spec/gherkin/parser_spec.rb +0 -33
@@ -0,0 +1,120 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
|
2
|
+
require 'gherkin/parser/tag_expression'
|
3
|
+
|
4
|
+
module Gherkin
|
5
|
+
module Parser
|
6
|
+
describe TagExpression do
|
7
|
+
context "no tags" do
|
8
|
+
before(:each) do
|
9
|
+
@e = TagExpression.new
|
10
|
+
end
|
11
|
+
|
12
|
+
it "should match @foo" do
|
13
|
+
@e.eval('@foo').should == true
|
14
|
+
end
|
15
|
+
|
16
|
+
it "should match empty tags" do
|
17
|
+
@e.eval().should == true
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
context "@foo" do
|
22
|
+
before(:each) do
|
23
|
+
@e = TagExpression.new('@foo')
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should match @foo" do
|
27
|
+
@e.eval('@foo').should == true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should not match @bar" do
|
31
|
+
@e.eval('@bar').should == false
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
context "!@foo" do
|
36
|
+
before(:each) do
|
37
|
+
@e = TagExpression.new('~@foo')
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should match @bar" do
|
41
|
+
@e.eval('@bar').should == true
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should not match @foo" do
|
45
|
+
@e.eval('@foo').should == false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
context "@foo || @bar" do
|
50
|
+
before(:each) do
|
51
|
+
@e = TagExpression.new('@foo,@bar')
|
52
|
+
end
|
53
|
+
|
54
|
+
it "should match @foo" do
|
55
|
+
@e.eval('@foo').should == true
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should match @bar" do
|
59
|
+
@e.eval('@bar').should == true
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should not match @zap" do
|
63
|
+
@e.eval('@zap').should == false
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "(@foo || @bar) && !@zap" do
|
68
|
+
before(:each) do
|
69
|
+
@e = TagExpression.new('@foo,@bar', '~@zap')
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should match @foo" do
|
73
|
+
@e.eval('@foo').should == true
|
74
|
+
end
|
75
|
+
|
76
|
+
it "should not match @foo @zap" do
|
77
|
+
@e.eval('@foo', '@zap').should == false
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
context "(@foo:3 || !@bar:4) && @zap:5" do
|
82
|
+
before(:each) do
|
83
|
+
@e = TagExpression.new('@foo:3,~@bar','@zap:5')
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should count tags for positive tags" do
|
87
|
+
@e.limits.should == {'@foo' => 3, '@zap' => 5}
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should match @foo @zap" do
|
91
|
+
@e.eval('@foo', '@zap').should == true
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context "Parsing '@foo:3,~@bar', '@zap:5'" do
|
96
|
+
before(:each) do
|
97
|
+
@e = TagExpression.new(' @foo:3 , ~@bar ', ' @zap:5 ')
|
98
|
+
end
|
99
|
+
|
100
|
+
it "should split and trim" do
|
101
|
+
@e.__send__(:ruby_expression).should == "(!vars['@bar']||vars['@foo'])&&(vars['@zap'])"
|
102
|
+
end
|
103
|
+
|
104
|
+
it "should have limits" do
|
105
|
+
@e.limits.should == {"@zap"=>5, "@foo"=>3}
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "Parsing ''" do
|
110
|
+
before(:each) do
|
111
|
+
@e = TagExpression.new('')
|
112
|
+
end
|
113
|
+
|
114
|
+
it "should ignore empty tags" do
|
115
|
+
@e.eval("@foo").should == true
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
@@ -4,9 +4,9 @@ module Gherkin
|
|
4
4
|
@sexps = []
|
5
5
|
end
|
6
6
|
|
7
|
-
def method_missing(
|
8
|
-
args[0] = args[0].
|
9
|
-
@sexps << [
|
7
|
+
def method_missing(event, *args)
|
8
|
+
args[0] = args[0].to_a if event == :row # Special JRuby handling
|
9
|
+
@sexps << [event] + args
|
10
10
|
end
|
11
11
|
|
12
12
|
def to_sexp
|
@@ -56,7 +56,7 @@ module Gherkin
|
|
56
56
|
@listener.to_sexp.should == [
|
57
57
|
[:feature, "Feature", "hi", 1],
|
58
58
|
[:scenario, "Scenario", "test", 2],
|
59
|
-
[:tag, "hello", 4],
|
59
|
+
[:tag, "@hello", 4],
|
60
60
|
[:scenario, "Scenario", "another", 5],
|
61
61
|
[:eof]
|
62
62
|
]
|
@@ -404,16 +404,16 @@ Given I am a step
|
|
404
404
|
scan_file("simple_with_tags.feature")
|
405
405
|
@listener.to_sexp.should == [
|
406
406
|
[:comment, "# FC", 1],
|
407
|
-
[:tag, "ft",2],
|
407
|
+
[:tag, "@ft",2],
|
408
408
|
[:feature, "Feature", "hi", 3],
|
409
|
-
[:tag, "st1", 5],
|
410
|
-
[:tag, "st2", 5],
|
409
|
+
[:tag, "@st1", 5],
|
410
|
+
[:tag, "@st2", 5],
|
411
411
|
[:scenario, "Scenario", "First", 6],
|
412
412
|
[:step, "Given ", "Pepper", 7],
|
413
|
-
[:tag, "st3", 9],
|
414
|
-
[:tag, "st4", 10],
|
415
|
-
[:tag, "ST5", 10],
|
416
|
-
[:tag, "
|
413
|
+
[:tag, "@st3", 9],
|
414
|
+
[:tag, "@st4", 10],
|
415
|
+
[:tag, "@ST5", 10],
|
416
|
+
[:tag, "@#^%&ST6**!", 10],
|
417
417
|
[:scenario, "Scenario", "Second", 11],
|
418
418
|
[:eof]
|
419
419
|
]
|
@@ -427,7 +427,7 @@ Given I am a step
|
|
427
427
|
[:feature, "Feature", "Logging in\nSo that I can be myself", 1],
|
428
428
|
[:comment, "# Comment", 3],
|
429
429
|
[:scenario, "Scenario", "Anonymous user can get a login form.\nScenery here", 4],
|
430
|
-
[:tag, "tag", 7],
|
430
|
+
[:tag, "@tag", 7],
|
431
431
|
[:scenario, "Scenario", "Another one", 8],
|
432
432
|
[:eof]
|
433
433
|
]
|
@@ -440,20 +440,20 @@ Given I am a step
|
|
440
440
|
@listener.to_sexp.should == [
|
441
441
|
[:comment, "#Comment on line 1", 1],
|
442
442
|
[:comment, "#Comment on line 2", 2],
|
443
|
-
[:tag, "tag1", 3],
|
444
|
-
[:tag, "tag2", 3],
|
443
|
+
[:tag, "@tag1", 3],
|
444
|
+
[:tag, "@tag2", 3],
|
445
445
|
[:feature, "Feature", "Feature Text\nIn order to test multiline forms\nAs a ragel writer\nI need to check for complex combinations", 4],
|
446
446
|
[:comment, "#Comment on line 9", 9],
|
447
447
|
[:comment, "#Comment on line 11", 11],
|
448
448
|
[:background, "Background", "", 13],
|
449
449
|
[:step, "Given ", "this is a background step", 14],
|
450
450
|
[:step, "And ", "this is another one", 15],
|
451
|
-
[:tag, "tag3", 17],
|
452
|
-
[:tag, "tag4", 17],
|
451
|
+
[:tag, "@tag3", 17],
|
452
|
+
[:tag, "@tag4", 17],
|
453
453
|
[:scenario, "Scenario", "Reading a Scenario", 18],
|
454
454
|
[:step, "Given ", "there is a step", 19],
|
455
455
|
[:step, "But ", "not another step", 20],
|
456
|
-
[:tag, "tag3", 22],
|
456
|
+
[:tag, "@tag3", 22],
|
457
457
|
[:scenario, "Scenario", "Reading a second scenario\nWith two lines of text", 23],
|
458
458
|
[:comment, "#Comment on line 24", 25],
|
459
459
|
[:step, "Given ", "a third step with a table", 26],
|
@@ -484,20 +484,20 @@ Given I am a step
|
|
484
484
|
@listener.to_sexp.should == [
|
485
485
|
[:comment, "#Comment on line 1", 1],
|
486
486
|
[:comment, "#Comment on line 2", 2],
|
487
|
-
[:tag, "tag1", 3],
|
488
|
-
[:tag, "tag2", 3],
|
487
|
+
[:tag, "@tag1", 3],
|
488
|
+
[:tag, "@tag2", 3],
|
489
489
|
[:feature, "Feature", "Feature Text\r\nIn order to test multiline forms\r\nAs a ragel writer\r\nI need to check for complex combinations", 4],
|
490
490
|
[:comment, "#Comment on line 9", 9],
|
491
491
|
[:comment, "#Comment on line 11", 11],
|
492
492
|
[:background, "Background", "", 13],
|
493
493
|
[:step, "Given ", "this is a background step", 14],
|
494
494
|
[:step, "And ", "this is another one", 15],
|
495
|
-
[:tag, "tag3", 17],
|
496
|
-
[:tag, "tag4", 17],
|
495
|
+
[:tag, "@tag3", 17],
|
496
|
+
[:tag, "@tag4", 17],
|
497
497
|
[:scenario, "Scenario", "Reading a Scenario", 18],
|
498
498
|
[:step, "Given ", "there is a step", 19],
|
499
499
|
[:step, "But ", "not another step", 20],
|
500
|
-
[:tag, "tag3", 22],
|
500
|
+
[:tag, "@tag3", 22],
|
501
501
|
[:scenario, "Scenario", "Reading a second scenario\r\nWith two lines of text", 23],
|
502
502
|
[:comment, "#Comment on line 24", 25],
|
503
503
|
[:step, "Given ", "a third step with a table", 26],
|
@@ -5,7 +5,7 @@ module Gherkin
|
|
5
5
|
module Lexer
|
6
6
|
shared_examples_for "a Gherkin lexer lexing tags" do
|
7
7
|
it "should lex a single tag" do
|
8
|
-
@listener.should_receive(:tag).with("dog", 1)
|
8
|
+
@listener.should_receive(:tag).with("@dog", 1)
|
9
9
|
@lexer.scan("@dog\n")
|
10
10
|
end
|
11
11
|
|
@@ -15,13 +15,13 @@ module Gherkin
|
|
15
15
|
end
|
16
16
|
|
17
17
|
it "should lex UTF-8 tags" do
|
18
|
-
@listener.should_receive(:tag).with("
|
18
|
+
@listener.should_receive(:tag).with("@シナリオテンプレート", 1)
|
19
19
|
@lexer.scan("@シナリオテンプレート\n")
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should lex mixed tags" do
|
23
|
-
@listener.should_receive(:tag).with("wip", 1).ordered
|
24
|
-
@listener.should_receive(:tag).with("
|
23
|
+
@listener.should_receive(:tag).with("@wip", 1).ordered
|
24
|
+
@listener.should_receive(:tag).with("@Значения", 1).ordered
|
25
25
|
@lexer.scan("@wip @Значения\n")
|
26
26
|
end
|
27
27
|
|
data/tasks/bench.rake
CHANGED
@@ -106,11 +106,11 @@ class Benchmarker
|
|
106
106
|
|
107
107
|
def run_rb_gherkin
|
108
108
|
require 'gherkin'
|
109
|
-
require 'gherkin/rb_lexer'
|
109
|
+
require 'gherkin/rb_lexer/en'
|
110
110
|
require 'null_listener'
|
111
111
|
@features.each do |feature|
|
112
112
|
parser = Gherkin::Parser.new(NullListener.new, true, "root")
|
113
|
-
lexer = Gherkin::RbLexer
|
113
|
+
lexer = Gherkin::RbLexer::En.new(parser)
|
114
114
|
lexer.scan(File.read(feature))
|
115
115
|
end
|
116
116
|
end
|
data/tasks/compile.rake
CHANGED
data/tasks/ragel_task.rb
CHANGED
@@ -28,7 +28,7 @@ class RagelTask
|
|
28
28
|
def target
|
29
29
|
{
|
30
30
|
'c' => "ext/gherkin_lexer_#{@i18n.sanitized_key}/gherkin_lexer_#{@i18n.sanitized_key}.c",
|
31
|
-
'java' => "java/src/gherkin/lexer/#{@i18n.sanitized_key.capitalize}.java",
|
31
|
+
'java' => "java/src/main/java/gherkin/lexer/#{@i18n.sanitized_key.capitalize}.java",
|
32
32
|
'rb' => "lib/gherkin/rb_lexer/#{@i18n.sanitized_key}.rb",
|
33
33
|
'csharp' => "tmp/#{@i18n.sanitized_key}.cs"
|
34
34
|
}[@lang]
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
8
|
+
- 4
|
9
|
+
version: 1.0.4
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mike Sassak
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2010-
|
19
|
+
date: 2010-04-07 00:00:00 +02:00
|
20
20
|
default_executable: gherkin
|
21
21
|
dependencies:
|
22
22
|
- !ruby/object:Gem::Dependency
|
@@ -195,45 +195,33 @@ files:
|
|
195
195
|
- features/parser_with_native_lexer.feature
|
196
196
|
- features/pretty_printer.feature
|
197
197
|
- features/step_definitions/gherkin_steps.rb
|
198
|
-
- features/step_definitions/
|
198
|
+
- features/step_definitions/pretty_listener_step.rb
|
199
199
|
- features/steps_parser.feature
|
200
200
|
- features/support/env.rb
|
201
201
|
- gherkin.gemspec
|
202
202
|
- java/.gitignore
|
203
203
|
- java/Gherkin.iml
|
204
|
-
- java/
|
205
|
-
- java/src/gherkin/FixJava.java
|
206
|
-
- java/src/gherkin/I18nLexer.java
|
207
|
-
- java/src/gherkin/Lexer.java
|
208
|
-
- java/src/gherkin/LexingError.java
|
209
|
-
- java/src/gherkin/Listener.java
|
210
|
-
- java/src/gherkin/Main.java
|
211
|
-
- java/src/gherkin/ParseError.java
|
212
|
-
- java/src/gherkin/Parser.java
|
213
|
-
- java/src/gherkin/formatter/Argument.java
|
214
|
-
- java/src/gherkin/formatter/ArgumentFormat.java
|
215
|
-
- java/src/gherkin/formatter/Colors.java
|
216
|
-
- java/src/gherkin/formatter/Formatter.java
|
217
|
-
- java/src/gherkin/formatter/PrettyFormatter.java
|
218
|
-
- java/src/gherkin/lexer/.gitignore
|
219
|
-
- java/src/gherkin/parser/StateMachineReader.java
|
220
|
-
- java/test/gherkin/formatter/ArgumentTest.java
|
204
|
+
- java/src/main/java/gherkin/lexer/.gitignore
|
221
205
|
- lib/.gitignore
|
222
206
|
- lib/gherkin.rb
|
223
207
|
- lib/gherkin/c_lexer.rb
|
224
208
|
- lib/gherkin/cli/main.rb
|
225
209
|
- lib/gherkin/core_ext/array.rb
|
226
210
|
- lib/gherkin/csharp_lexer.rb
|
227
|
-
- lib/gherkin/
|
228
|
-
- lib/gherkin/
|
211
|
+
- lib/gherkin/formatter/argument.rb
|
212
|
+
- lib/gherkin/formatter/colors.rb
|
213
|
+
- lib/gherkin/formatter/monochrome_format.rb
|
214
|
+
- lib/gherkin/formatter/pretty_listener.rb
|
229
215
|
- lib/gherkin/i18n.rb
|
230
216
|
- lib/gherkin/i18n.yml
|
231
217
|
- lib/gherkin/i18n_lexer.rb
|
232
|
-
- lib/gherkin/
|
233
|
-
- lib/gherkin/parser.rb
|
218
|
+
- lib/gherkin/parser/filter_listener.rb
|
234
219
|
- lib/gherkin/parser/meta.txt
|
220
|
+
- lib/gherkin/parser/parser.rb
|
235
221
|
- lib/gherkin/parser/root.txt
|
222
|
+
- lib/gherkin/parser/sexp.rb
|
236
223
|
- lib/gherkin/parser/steps.txt
|
224
|
+
- lib/gherkin/parser/tag_expression.rb
|
237
225
|
- lib/gherkin/rb_lexer.rb
|
238
226
|
- lib/gherkin/rb_lexer/.gitignore
|
239
227
|
- lib/gherkin/rb_lexer/README.rdoc
|
@@ -278,11 +266,8 @@ files:
|
|
278
266
|
- lib/gherkin/rb_lexer/vi.rb
|
279
267
|
- lib/gherkin/rb_lexer/zhCN.rb
|
280
268
|
- lib/gherkin/rb_lexer/zhTW.rb
|
281
|
-
- lib/gherkin/rb_parser.rb
|
282
269
|
- lib/gherkin/tools.rb
|
283
|
-
- lib/gherkin/tools/colors.rb
|
284
270
|
- lib/gherkin/tools/files.rb
|
285
|
-
- lib/gherkin/tools/pretty_listener.rb
|
286
271
|
- lib/gherkin/tools/reformat.rb
|
287
272
|
- lib/gherkin/tools/stats.rb
|
288
273
|
- lib/gherkin/tools/stats_listener.rb
|
@@ -305,19 +290,21 @@ files:
|
|
305
290
|
- spec/gherkin/fixtures/simple.feature
|
306
291
|
- spec/gherkin/fixtures/simple_with_comments.feature
|
307
292
|
- spec/gherkin/fixtures/simple_with_tags.feature
|
308
|
-
- spec/gherkin/
|
293
|
+
- spec/gherkin/formatter/argument_spec.rb
|
294
|
+
- spec/gherkin/formatter/colors_spec.rb
|
295
|
+
- spec/gherkin/formatter/pretty_listener_spec.rb
|
309
296
|
- spec/gherkin/i18n_lexer_spec.rb
|
310
297
|
- spec/gherkin/i18n_spec.rb
|
311
298
|
- spec/gherkin/java_lexer_spec.rb
|
312
|
-
- spec/gherkin/
|
299
|
+
- spec/gherkin/parser/filter_listener_spec.rb
|
300
|
+
- spec/gherkin/parser/parser_spec.rb
|
301
|
+
- spec/gherkin/parser/tag_expression_spec.rb
|
313
302
|
- spec/gherkin/rb_lexer_spec.rb
|
314
303
|
- spec/gherkin/sexp_recorder.rb
|
315
304
|
- spec/gherkin/shared/lexer_spec.rb
|
316
305
|
- spec/gherkin/shared/py_string_spec.rb
|
317
306
|
- spec/gherkin/shared/row_spec.rb
|
318
307
|
- spec/gherkin/shared/tags_spec.rb
|
319
|
-
- spec/gherkin/tools/colors_spec.rb
|
320
|
-
- spec/gherkin/tools/pretty_listener_spec.rb
|
321
308
|
- spec/spec_helper.rb
|
322
309
|
- tasks/bench.rake
|
323
310
|
- tasks/bench/feature_builder.rb
|
@@ -361,17 +348,19 @@ summary: Fast Gherkin lexer/parser
|
|
361
348
|
test_files:
|
362
349
|
- spec/gherkin/c_lexer_spec.rb
|
363
350
|
- spec/gherkin/csharp_lexer_spec.rb
|
364
|
-
- spec/gherkin/
|
351
|
+
- spec/gherkin/formatter/argument_spec.rb
|
352
|
+
- spec/gherkin/formatter/colors_spec.rb
|
353
|
+
- spec/gherkin/formatter/pretty_listener_spec.rb
|
365
354
|
- spec/gherkin/i18n_lexer_spec.rb
|
366
355
|
- spec/gherkin/i18n_spec.rb
|
367
356
|
- spec/gherkin/java_lexer_spec.rb
|
368
|
-
- spec/gherkin/
|
357
|
+
- spec/gherkin/parser/filter_listener_spec.rb
|
358
|
+
- spec/gherkin/parser/parser_spec.rb
|
359
|
+
- spec/gherkin/parser/tag_expression_spec.rb
|
369
360
|
- spec/gherkin/rb_lexer_spec.rb
|
370
361
|
- spec/gherkin/sexp_recorder.rb
|
371
362
|
- spec/gherkin/shared/lexer_spec.rb
|
372
363
|
- spec/gherkin/shared/py_string_spec.rb
|
373
364
|
- spec/gherkin/shared/row_spec.rb
|
374
365
|
- spec/gherkin/shared/tags_spec.rb
|
375
|
-
- spec/gherkin/tools/colors_spec.rb
|
376
|
-
- spec/gherkin/tools/pretty_listener_spec.rb
|
377
366
|
- spec/spec_helper.rb
|
data/java/build.xml
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
<project name="Gherkin" default="jar" basedir=".">
|
2
|
-
<target name="compile" description="Compile">
|
3
|
-
<mkdir dir="${basedir}/target/classes"/>
|
4
|
-
<javac srcdir="src" destdir="target/classes" debug="on"/>
|
5
|
-
</target>
|
6
|
-
|
7
|
-
<target name="jar" description="Jar" depends="compile">
|
8
|
-
<jar destfile="${basedir}/../lib/gherkin.jar">
|
9
|
-
<fileset dir="${basedir}/target/classes" />
|
10
|
-
<fileset dir="${basedir}/../lib" includes="gherkin/parser/*.txt" />
|
11
|
-
<manifest>
|
12
|
-
<attribute name="Main-Class" value="gherkin.Main" />
|
13
|
-
</manifest>
|
14
|
-
</jar>
|
15
|
-
</target>
|
16
|
-
</project>
|
@@ -1,37 +0,0 @@
|
|
1
|
-
package gherkin;
|
2
|
-
|
3
|
-
import java.io.IOException;
|
4
|
-
import java.io.InputStreamReader;
|
5
|
-
import java.io.Reader;
|
6
|
-
import java.util.List;
|
7
|
-
|
8
|
-
public class FixJava {
|
9
|
-
public static String join(List<String> strings, String separator) {
|
10
|
-
StringBuilder sb = new StringBuilder();
|
11
|
-
int i = 0;
|
12
|
-
for (String s : strings) {
|
13
|
-
if (i != 0) sb.append(separator);
|
14
|
-
sb.append(s);
|
15
|
-
i++;
|
16
|
-
}
|
17
|
-
return sb.toString();
|
18
|
-
}
|
19
|
-
|
20
|
-
public static String readResource(String filePath) throws IOException {
|
21
|
-
Reader reader = new InputStreamReader(FixJava.class.getResourceAsStream(filePath));
|
22
|
-
return readReader(reader);
|
23
|
-
}
|
24
|
-
|
25
|
-
public static String readReader(Reader reader) throws IOException {
|
26
|
-
final char[] buffer = new char[0x10000];
|
27
|
-
StringBuilder sb = new StringBuilder();
|
28
|
-
int read;
|
29
|
-
do {
|
30
|
-
read = reader.read(buffer, 0, buffer.length);
|
31
|
-
if (read > 0) {
|
32
|
-
sb.append(buffer, 0, read);
|
33
|
-
}
|
34
|
-
} while (read >= 0);
|
35
|
-
return sb.toString();
|
36
|
-
}
|
37
|
-
}
|