gherkin 1.0.2-i386-mingw32 → 1.0.3-i386-mingw32

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.
Files changed (76) hide show
  1. data/.gitattributes +1 -0
  2. data/History.txt +18 -0
  3. data/README.rdoc +12 -1
  4. data/Rakefile +4 -2
  5. data/VERSION.yml +1 -1
  6. data/bin/gherkin +1 -1
  7. data/dotnet/.gitignore +13 -0
  8. data/features/feature_parser.feature +22 -2
  9. data/features/native_lexer.feature +1 -1
  10. data/features/parser_with_native_lexer.feature +1 -1
  11. data/features/step_definitions/gherkin_steps.rb +2 -6
  12. data/features/step_definitions/pretty_printer_steps.rb +2 -3
  13. data/features/steps_parser.feature +1 -1
  14. data/gherkin.gemspec +46 -18
  15. data/java/Gherkin.iml +2 -4
  16. data/java/build.xml +3 -0
  17. data/java/src/gherkin/FixJava.java +6 -3
  18. data/java/src/gherkin/I18nLexer.java +48 -0
  19. data/java/src/gherkin/Listener.java +3 -1
  20. data/java/src/gherkin/Main.java +17 -0
  21. data/java/src/gherkin/Parser.java +9 -3
  22. data/java/src/gherkin/formatter/Argument.java +39 -0
  23. data/java/src/gherkin/formatter/ArgumentFormat.java +17 -0
  24. data/java/src/gherkin/formatter/Colors.java +7 -0
  25. data/java/src/gherkin/formatter/Formatter.java +15 -0
  26. data/java/src/gherkin/formatter/PrettyFormatter.java +219 -0
  27. data/java/src/gherkin/parser/StateMachineReader.java +8 -3
  28. data/java/test/gherkin/formatter/ArgumentTest.java +17 -0
  29. data/lib/gherkin/csharp_lexer.rb +15 -0
  30. data/lib/gherkin/format/argument.rb +35 -0
  31. data/lib/gherkin/format/monochrome_format.rb +9 -0
  32. data/lib/gherkin/i18n.rb +22 -0
  33. data/lib/gherkin/i18n.yml +34 -20
  34. data/lib/gherkin/i18n_lexer.rb +57 -13
  35. data/lib/gherkin/lexer.rb +9 -18
  36. data/lib/gherkin/parser.rb +3 -3
  37. data/lib/gherkin/parser/meta.txt +5 -4
  38. data/lib/gherkin/parser/root.txt +11 -9
  39. data/lib/gherkin/parser/steps.txt +4 -3
  40. data/lib/gherkin/rb_parser.rb +13 -5
  41. data/lib/gherkin/tools/colors.rb +119 -0
  42. data/lib/gherkin/tools/files.rb +6 -1
  43. data/lib/gherkin/tools/pretty_listener.rb +115 -23
  44. data/ragel/lexer.c.rl.erb +67 -51
  45. data/ragel/lexer.csharp.rl.erb +240 -0
  46. data/ragel/lexer.java.rl.erb +27 -18
  47. data/ragel/lexer.rb.rl.erb +17 -17
  48. data/ragel/lexer_common.rl.erb +8 -8
  49. data/spec/gherkin/c_lexer_spec.rb +4 -4
  50. data/spec/gherkin/csharp_lexer_spec.rb +20 -0
  51. data/spec/gherkin/fixtures/comments_in_table.feature +9 -0
  52. data/spec/gherkin/fixtures/complex.feature +2 -0
  53. data/spec/gherkin/fixtures/dos_line_endings.feature +45 -0
  54. data/spec/gherkin/fixtures/i18n_fr.feature +1 -0
  55. data/spec/gherkin/fixtures/i18n_no.feature +1 -0
  56. data/spec/gherkin/fixtures/i18n_zh-CN.feature +1 -0
  57. data/spec/gherkin/format/argument_spec.rb +28 -0
  58. data/spec/gherkin/i18n_lexer_spec.rb +4 -4
  59. data/spec/gherkin/i18n_spec.rb +31 -23
  60. data/spec/gherkin/java_lexer_spec.rb +4 -3
  61. data/spec/gherkin/parser_spec.rb +5 -0
  62. data/spec/gherkin/rb_lexer_spec.rb +4 -2
  63. data/spec/gherkin/sexp_recorder.rb +1 -1
  64. data/spec/gherkin/shared/lexer_spec.rb +169 -60
  65. data/spec/gherkin/shared/py_string_spec.rb +6 -0
  66. data/spec/gherkin/shared/row_spec.rb +107 -0
  67. data/spec/gherkin/shared/tags_spec.rb +1 -1
  68. data/spec/gherkin/tools/colors_spec.rb +19 -0
  69. data/spec/gherkin/tools/pretty_listener_spec.rb +147 -0
  70. data/spec/spec_helper.rb +31 -7
  71. data/tasks/compile.rake +81 -7
  72. data/tasks/ragel_task.rb +6 -4
  73. data/tasks/rspec.rake +2 -2
  74. metadata +92 -31
  75. data/lib/gherkin/java_lexer.rb +0 -10
  76. data/spec/gherkin/shared/table_spec.rb +0 -97
@@ -29,7 +29,8 @@ class RagelTask
29
29
  {
30
30
  'c' => "ext/gherkin_lexer_#{@i18n.sanitized_key}/gherkin_lexer_#{@i18n.sanitized_key}.c",
31
31
  'java' => "java/src/gherkin/lexer/#{@i18n.sanitized_key.capitalize}.java",
32
- 'rb' => "lib/gherkin/rb_lexer/#{@i18n.sanitized_key}.rb"
32
+ 'rb' => "lib/gherkin/rb_lexer/#{@i18n.sanitized_key}.rb",
33
+ 'csharp' => "tmp/#{@i18n.sanitized_key}.cs"
33
34
  }[@lang]
34
35
  end
35
36
 
@@ -51,9 +52,10 @@ class RagelTask
51
52
 
52
53
  def flags
53
54
  {
54
- 'c' => '-C',
55
- 'java' => '-J',
56
- 'rb' => '-R'
55
+ 'c' => '-C',
56
+ 'java' => '-J',
57
+ 'rb' => '-R',
58
+ 'csharp' => '-A -L -T0'
57
59
  }[@lang]
58
60
  end
59
61
 
@@ -2,13 +2,13 @@ require 'spec/rake/spectask'
2
2
 
3
3
  Spec::Rake::SpecTask.new(:spec) do |spec|
4
4
  spec.libs << 'lib' << 'spec'
5
- spec.spec_opts << '--color'
5
+ spec.spec_opts << '--color --diff'
6
6
  end
7
7
  task :spec => [:check_dependencies]
8
8
 
9
9
  Spec::Rake::SpecTask.new(:rcov) do |spec|
10
10
  spec.libs << 'lib' << 'spec'
11
- spec.spec_opts << '--color'
11
+ spec.spec_opts << '--color --diff'
12
12
  spec.pattern = 'spec/**/*_spec.rb'
13
13
  spec.rcov = true
14
14
  spec.rcov_opts = %w{--exclude spec\/}
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ - 3
9
+ version: 1.0.3
5
10
  platform: i386-mingw32
6
11
  authors:
7
12
  - Mike Sassak
@@ -11,49 +16,78 @@ autorequire:
11
16
  bindir: bin
12
17
  cert_chain: []
13
18
 
14
- date: 2009-12-30 00:00:00 +01:00
19
+ date: 2010-03-30 00:00:00 +02:00
15
20
  default_executable: gherkin
16
21
  dependencies:
17
22
  - !ruby/object:Gem::Dependency
18
23
  name: trollop
19
- type: :runtime
20
- version_requirement:
21
- version_requirements: !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
22
26
  requirements:
23
27
  - - ">="
24
28
  - !ruby/object:Gem::Version
29
+ segments:
30
+ - 1
31
+ - 15
25
32
  version: "1.15"
26
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
27
35
  - !ruby/object:Gem::Dependency
28
36
  name: rspec
29
- type: :development
30
- version_requirement:
31
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
32
39
  requirements:
33
40
  - - ">="
34
41
  - !ruby/object:Gem::Version
35
- version: 1.2.9
36
- version:
42
+ segments:
43
+ - 1
44
+ - 3
45
+ - 0
46
+ version: 1.3.0
47
+ type: :development
48
+ version_requirements: *id002
37
49
  - !ruby/object:Gem::Dependency
38
50
  name: cucumber
39
- type: :development
40
- version_requirement:
41
- version_requirements: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
42
53
  requirements:
43
54
  - - ">="
44
55
  - !ruby/object:Gem::Version
45
- version: 0.5.1
46
- version:
56
+ segments:
57
+ - 0
58
+ - 6
59
+ - 2
60
+ version: 0.6.2
61
+ type: :development
62
+ version_requirements: *id003
47
63
  - !ruby/object:Gem::Dependency
48
64
  name: rake-compiler
49
- type: :development
50
- version_requirement:
51
- version_requirements: !ruby/object:Gem::Requirement
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
52
67
  requirements:
53
68
  - - ">="
54
69
  - !ruby/object:Gem::Version
70
+ segments:
71
+ - 0
72
+ - 7
73
+ - 0
55
74
  version: 0.7.0
56
- version:
75
+ type: :development
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: albacore
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ segments:
85
+ - 0
86
+ - 1
87
+ - 0
88
+ version: 0.1.0
89
+ type: :development
90
+ version_requirements: *id005
57
91
  description: A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.
58
92
  email: cukes@googlegroups.com
59
93
  executables:
@@ -64,6 +98,7 @@ extra_rdoc_files:
64
98
  - LICENSE
65
99
  - README.rdoc
66
100
  files:
101
+ - .gitattributes
67
102
  - .gitignore
68
103
  - .mailmap
69
104
  - History.txt
@@ -73,6 +108,7 @@ files:
73
108
  - VERSION.yml
74
109
  - bin/gherkin
75
110
  - cucumber.yml
111
+ - dotnet/.gitignore
76
112
  - features/feature_parser.feature
77
113
  - features/native_lexer.feature
78
114
  - features/parser_with_native_lexer.feature
@@ -86,22 +122,32 @@ files:
86
122
  - java/Gherkin.iml
87
123
  - java/build.xml
88
124
  - java/src/gherkin/FixJava.java
125
+ - java/src/gherkin/I18nLexer.java
89
126
  - java/src/gherkin/Lexer.java
90
127
  - java/src/gherkin/LexingError.java
91
128
  - java/src/gherkin/Listener.java
129
+ - java/src/gherkin/Main.java
92
130
  - java/src/gherkin/ParseError.java
93
131
  - java/src/gherkin/Parser.java
132
+ - java/src/gherkin/formatter/Argument.java
133
+ - java/src/gherkin/formatter/ArgumentFormat.java
134
+ - java/src/gherkin/formatter/Colors.java
135
+ - java/src/gherkin/formatter/Formatter.java
136
+ - java/src/gherkin/formatter/PrettyFormatter.java
94
137
  - java/src/gherkin/lexer/.gitignore
95
138
  - java/src/gherkin/parser/StateMachineReader.java
139
+ - java/test/gherkin/formatter/ArgumentTest.java
96
140
  - lib/.gitignore
97
141
  - lib/gherkin.rb
98
142
  - lib/gherkin/c_lexer.rb
99
143
  - lib/gherkin/cli/main.rb
100
144
  - lib/gherkin/core_ext/array.rb
145
+ - lib/gherkin/csharp_lexer.rb
146
+ - lib/gherkin/format/argument.rb
147
+ - lib/gherkin/format/monochrome_format.rb
101
148
  - lib/gherkin/i18n.rb
102
149
  - lib/gherkin/i18n.yml
103
150
  - lib/gherkin/i18n_lexer.rb
104
- - lib/gherkin/java_lexer.rb
105
151
  - lib/gherkin/lexer.rb
106
152
  - lib/gherkin/parser.rb
107
153
  - lib/gherkin/parser/meta.txt
@@ -112,6 +158,7 @@ files:
112
158
  - lib/gherkin/rb_lexer/README.rdoc
113
159
  - lib/gherkin/rb_parser.rb
114
160
  - lib/gherkin/tools.rb
161
+ - lib/gherkin/tools/colors.rb
115
162
  - lib/gherkin/tools/files.rb
116
163
  - lib/gherkin/tools/pretty_listener.rb
117
164
  - lib/gherkin/tools/reformat.rb
@@ -119,12 +166,13 @@ files:
119
166
  - lib/gherkin/tools/stats_listener.rb
120
167
  - lib/gherkin_lexer_ar.so
121
168
  - lib/gherkin_lexer_bg.so
122
- - lib/gherkin_lexer_cat.so
169
+ - lib/gherkin_lexer_ca.so
123
170
  - lib/gherkin_lexer_cs.so
124
- - lib/gherkin_lexer_cy.so
171
+ - lib/gherkin_lexer_cyGB.so
125
172
  - lib/gherkin_lexer_da.so
126
173
  - lib/gherkin_lexer_de.so
127
174
  - lib/gherkin_lexer_en.so
175
+ - lib/gherkin_lexer_enScouse.so
128
176
  - lib/gherkin_lexer_enau.so
129
177
  - lib/gherkin_lexer_enlol.so
130
178
  - lib/gherkin_lexer_entx.so
@@ -146,12 +194,12 @@ files:
146
194
  - lib/gherkin_lexer_pl.so
147
195
  - lib/gherkin_lexer_pt.so
148
196
  - lib/gherkin_lexer_ro.so
149
- - lib/gherkin_lexer_ro2.so
197
+ - lib/gherkin_lexer_roRO.so
150
198
  - lib/gherkin_lexer_ru.so
151
- - lib/gherkin_lexer_se.so
152
199
  - lib/gherkin_lexer_sk.so
153
- - lib/gherkin_lexer_sr.so
200
+ - lib/gherkin_lexer_srCyrl.so
154
201
  - lib/gherkin_lexer_srLatn.so
202
+ - lib/gherkin_lexer_sv.so
155
203
  - lib/gherkin_lexer_tr.so
156
204
  - lib/gherkin_lexer_uz.so
157
205
  - lib/gherkin_lexer_vi.so
@@ -160,18 +208,23 @@ files:
160
208
  - nativegems.sh
161
209
  - ragel/i18n/.gitignore
162
210
  - ragel/lexer.c.rl.erb
211
+ - ragel/lexer.csharp.rl.erb
163
212
  - ragel/lexer.java.rl.erb
164
213
  - ragel/lexer.rb.rl.erb
165
214
  - ragel/lexer_common.rl.erb
166
215
  - spec/gherkin/c_lexer_spec.rb
216
+ - spec/gherkin/csharp_lexer_spec.rb
167
217
  - spec/gherkin/fixtures/1.feature
218
+ - spec/gherkin/fixtures/comments_in_table.feature
168
219
  - spec/gherkin/fixtures/complex.feature
220
+ - spec/gherkin/fixtures/dos_line_endings.feature
169
221
  - spec/gherkin/fixtures/i18n_fr.feature
170
222
  - spec/gherkin/fixtures/i18n_no.feature
171
223
  - spec/gherkin/fixtures/i18n_zh-CN.feature
172
224
  - spec/gherkin/fixtures/simple.feature
173
225
  - spec/gherkin/fixtures/simple_with_comments.feature
174
226
  - spec/gherkin/fixtures/simple_with_tags.feature
227
+ - spec/gherkin/format/argument_spec.rb
175
228
  - spec/gherkin/i18n_lexer_spec.rb
176
229
  - spec/gherkin/i18n_spec.rb
177
230
  - spec/gherkin/java_lexer_spec.rb
@@ -180,8 +233,10 @@ files:
180
233
  - spec/gherkin/sexp_recorder.rb
181
234
  - spec/gherkin/shared/lexer_spec.rb
182
235
  - spec/gherkin/shared/py_string_spec.rb
183
- - spec/gherkin/shared/table_spec.rb
236
+ - spec/gherkin/shared/row_spec.rb
184
237
  - spec/gherkin/shared/tags_spec.rb
238
+ - spec/gherkin/tools/colors_spec.rb
239
+ - spec/gherkin/tools/pretty_listener_spec.rb
185
240
  - spec/spec_helper.rb
186
241
  - tasks/bench.rake
187
242
  - tasks/bench/feature_builder.rb
@@ -205,23 +260,27 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
260
  requirements:
206
261
  - - ">="
207
262
  - !ruby/object:Gem::Version
263
+ segments:
264
+ - 0
208
265
  version: "0"
209
- version:
210
266
  required_rubygems_version: !ruby/object:Gem::Requirement
211
267
  requirements:
212
268
  - - ">="
213
269
  - !ruby/object:Gem::Version
270
+ segments:
271
+ - 0
214
272
  version: "0"
215
- version:
216
273
  requirements: []
217
274
 
218
275
  rubyforge_project:
219
- rubygems_version: 1.3.5
276
+ rubygems_version: 1.3.6
220
277
  signing_key:
221
278
  specification_version: 3
222
279
  summary: Fast Gherkin lexer/parser
223
280
  test_files:
224
281
  - spec/gherkin/c_lexer_spec.rb
282
+ - spec/gherkin/csharp_lexer_spec.rb
283
+ - spec/gherkin/format/argument_spec.rb
225
284
  - spec/gherkin/i18n_lexer_spec.rb
226
285
  - spec/gherkin/i18n_spec.rb
227
286
  - spec/gherkin/java_lexer_spec.rb
@@ -230,6 +289,8 @@ test_files:
230
289
  - spec/gherkin/sexp_recorder.rb
231
290
  - spec/gherkin/shared/lexer_spec.rb
232
291
  - spec/gherkin/shared/py_string_spec.rb
233
- - spec/gherkin/shared/table_spec.rb
292
+ - spec/gherkin/shared/row_spec.rb
234
293
  - spec/gherkin/shared/tags_spec.rb
294
+ - spec/gherkin/tools/colors_spec.rb
295
+ - spec/gherkin/tools/pretty_listener_spec.rb
235
296
  - spec/spec_helper.rb
@@ -1,10 +0,0 @@
1
- require 'gherkin.jar'
2
-
3
- module Gherkin
4
- module JavaLexer
5
- def self.[](i18n_language)
6
- i18n_lexer_class_name = i18n_language.gsub(/[\s-]/, '').capitalize
7
- Java::GherkinLexer.__send__(i18n_lexer_class_name)
8
- end
9
- end
10
- end
@@ -1,97 +0,0 @@
1
- #encoding: utf-8
2
- require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
3
-
4
- module Gherkin
5
- module Lexer
6
- shared_examples_for "a Gherkin lexer lexing tables" do
7
- tables = {
8
- "|a|b|\n" => [%w{a b}],
9
- "|a|b|c|\n" => [%w{a b c}],
10
- "|c|d|\n|e|f|\n" => [%w{c d}, %w{e f}]
11
- }
12
-
13
- tables.each do |text, expected|
14
- it "should parse #{text}" do
15
- @listener.should_receive(:table).with(t(expected), 1)
16
- @lexer.scan(text.dup)
17
- end
18
- end
19
-
20
- it "should parse a table with many columns" do
21
- @listener.should_receive(:table).with(t([%w{a b c d e f g h i j k l m n o p}]), 1)
22
- @lexer.scan("|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|\n")
23
- end
24
-
25
- it "should parse a multicharacter cell content" do
26
- @listener.should_receive(:table).with(t([%w{foo bar}]), 1)
27
- @lexer.scan("| foo | bar |\n")
28
- end
29
-
30
- it "should parse cells with spaces within the content" do
31
- @listener.should_receive(:table).with(t([["Dill pickle", "Valencia orange"], ["Ruby red grapefruit", "Tire iron"]]), 1)
32
- @lexer.scan("| Dill pickle | Valencia orange |\n| Ruby red grapefruit | Tire iron |\n")
33
- end
34
-
35
- it "should allow utf-8" do
36
- # Fails in 1.9.1!
37
- # 'Gherkin::Lexer::Table should allow utf-8 with using == to evaluate' FAILED
38
- # expected: [[:table, [["ůﻚ", "2"]], 1]],
39
- # got: [[:table, [["\xC5\xAF\xEF\xBB\x9A", "2"]], 1]] (using ==)
40
- # BUT, simply running:
41
- # [[:table, [["ůﻚ", "2"]], 1]].should == [[:table, [["\xC5\xAF\xEF\xBB\x9A", "2"]], 1]]
42
- # passes
43
- #
44
- @lexer.scan(" | ůﻚ | 2 | \n")
45
- @listener.to_sexp.should == [
46
- [:table, [["ůﻚ", "2"]], 1]
47
- ]
48
- end
49
-
50
- it "should allow utf-8 using should_receive" do
51
- @listener.should_receive(:table).with(t([['繁體中文 而且','並且','繁體中文 而且','並且']]), 1)
52
- @lexer.scan("| 繁體中文 而且|並且| 繁體中文 而且|並且|\n")
53
- end
54
-
55
- it "should parse a 2x2 table" do
56
- @listener.should_receive(:table).with(t([%w{1 2}, %w{3 4}]), 1)
57
- @lexer.scan("| 1 | 2 |\n| 3 | 4 |\n")
58
- end
59
-
60
- it "should parse a 2x2 table with several newlines" do
61
- @listener.should_receive(:table).with(t([%w{1 2}, %w{3 4}]), 1)
62
- @lexer.scan("| 1 | 2 |\n| 3 | 4 |\n\n\n")
63
- end
64
-
65
- it "should parse a 2x2 table with empty cells" do
66
- @listener.should_receive(:table).with(t([['1', ''], ['', '4']]), 1)
67
- @lexer.scan("| 1 | |\n|| 4 |\n")
68
- end
69
-
70
- it "should parse a 1x2 table that does not end in a newline" do
71
- @listener.should_receive(:table).with(t([%w{1 2}]), 1)
72
- @lexer.scan("| 1 | 2 |")
73
- end
74
-
75
- it "should parse a 1x2 table without spaces and newline" do
76
- @listener.should_receive(:table).with(t([%w{1 2}]), 1)
77
- @lexer.scan("|1|2|\n")
78
- end
79
-
80
- it "should parse a row with whitespace after the rows" do
81
- @listener.should_receive(:table).with(t([%w{1 2}, %w{a b}]), 1)
82
- @lexer.scan("| 1 | 2 | \n | a | b | \n")
83
- end
84
-
85
- it "should parse a table with lots of whitespace" do
86
- @listener.should_receive(:table).with(t([["abc", "123"]]), 1)
87
- @lexer.scan(" \t| \t abc\t| \t123\t \t\t| \t\t \t \t\n ")
88
- end
89
-
90
- it "should raise LexingError for rows that aren't closed" do
91
- lambda {
92
- @lexer.scan("|| oh hello \n")
93
- }.should raise_error(/Parsing error on line 1: '|| oh hello/)
94
- end
95
- end
96
- end
97
- end