gherkin 1.0.1-i386-mingw32 → 1.0.2-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.
@@ -0,0 +1,2 @@
1
+ Gregory Hnatiuk <ghnatiuk@gmail.com>
2
+ Mike Sassak <msassak@gmail.com>
@@ -0,0 +1,9 @@
1
+ == 1.0.2 (2009-12-30)
2
+
3
+ == Bugfixes
4
+ * Build passes on Ruby 1.9.2 (Aslak Hellesøy)
5
+
6
+ == New features
7
+ * New command line based on trollop. Commands: reformat, stats. (Aslak Hellesøy)
8
+ * I18nLexer#scan sets #language to the I18n for the language scanned (Mike Sassak)
9
+ * I18n#adverbs, brings I18n to parity with Cucumber::Parser::NaturalLanguage (Mike Sassak)
@@ -1,54 +1,25 @@
1
1
  = Gherkin
2
2
 
3
- Fast Gherkin lexer based on Ragel.
3
+ Fast Gherkin lexer and parser based on Ragel. Gherkin is two things:
4
4
 
5
- Gherkin is the language that has evolved out of the Cucumber project. Cucumber currently uses
6
- Treetop, which is too slow for larger projects.
5
+ * The language that has evolved out of the Cucumber project.
6
+ * This library
7
7
 
8
- This project will *not* include code to build an AST. Instead, this lexer will have an API
9
- that makes it possible to plug in a builder that can build an AST.
10
-
11
- == Testing
8
+ == Running RSpec and Cucumber tests
12
9
 
13
10
  rake clean spec cucumber
14
11
 
15
- == Cleaning generated code
16
-
17
- rake clobber
18
-
19
12
  == Release process
20
13
 
21
- Run just "rake clean spec cucumber" for each platform (1.8.6, 1.8.7, 1.9, jruby) to make sure all is green.
22
-
23
- 1) rvm 1.8.7
24
- 2) Bump version in the VERSION file
25
- 3) rake clean jar compile
26
- 2) rake gemspec
27
- 3) git commit -a -m "Release vX.Y.Z"
28
- 4) rake release
29
- 5) ./nativegems.sh
30
- 6) gem push pkg/... (for each native gem)
31
-
32
- TODO: Also build windows gem with dll using rake-compiler. MinGW gem can be done on OS X/Linux, but
33
- the one for the old Ruby one-click installers must be built with Visual Studio/nmake.
34
-
35
- == Build windows gems on OS X
36
-
37
- * http://www.copiousfreetime.org/articles/2008/10/12/building-gems-for-windows.html
38
- * rake-compiler docs
39
-
40
- == Notes
41
-
42
- Ragel supports Ruby, but it's much slower than C. The ruby target will be used for development.
43
- The final version will use C for MRI and Java for JRuby.
44
-
45
- == Ragel links
46
-
47
- * http://www.complang.org/ragel/
48
- * http://dev.sipdoc.net/attachments/2/ragel_talk.pdf
49
- * http://lambda-the-ultimate.org/node/1125
50
- * http://www.zedshaw.com/essays/ragel_state_charts.html
51
- * http://www.devchix.com/2008/01/13/a-hello-world-for-ruby-on-ragel-60/
14
+ * Run "rake clean spec cucumber" for each platform (1.8.6, 1.8.7, 1.9, jruby) to make sure all is green.
15
+ * rvm 1.8.7
16
+ * Bump version in the VERSION file
17
+ * rake clean jar compile
18
+ * rake gemspec
19
+ * git commit -a -m "Release vX.Y.Z"
20
+ * rake release
21
+ * ./nativegems.sh
22
+ * gem push pkg/... (for each native gem)
52
23
 
53
24
  == Note on Patches/Pull Requests
54
25
 
@@ -57,7 +28,7 @@ The final version will use C for MRI and Java for JRuby.
57
28
  * Make your feature addition or bug fix.
58
29
  * Add tests for it. This is important so I don't break it in a
59
30
  future version unintentionally.
60
- * Commit, do not mess with rakefile, version, or history.
31
+ * Commit, do not mess with Rakefile, VERSION, or History.txt.
61
32
  (if you want to have your own version, that is fine but
62
33
  bump version in a commit by itself I can ignore when I pull)
63
34
  * Send me a pull request. Bonus points for topic branches.
data/Rakefile CHANGED
@@ -8,28 +8,24 @@ begin
8
8
  require 'jeweler'
9
9
  Jeweler::Tasks.new do |gem|
10
10
  gem.name = "gherkin"
11
- gem.summary = %Q{Fast Gherkin lexer}
12
- gem.description = %Q{A fast Gherkin lexer in Ragel}
11
+ gem.summary = %Q{Fast Gherkin lexer/parser}
12
+ gem.description = %Q{A fast Gherkin lexer/parser based on the Ragel State Machine Compiler.}
13
13
  gem.email = "cukes@googlegroups.com"
14
14
  gem.homepage = "http://github.com/aslakhellesoy/gherkin"
15
15
  gem.authors = ["Mike Sassak", "Gregory Hnatiuk", "Aslak Hellesøy"]
16
- gem.default_executable = "gherkin"
17
- gem.executables = ["gherkin", "gherkin-purdy"]
18
- gem.add_development_dependency "rspec", "1.2.9"
19
- gem.add_development_dependency "cucumber", "0.4.4"
20
- gem.add_development_dependency "rake-compiler", "0.6.0" unless defined?(JRUBY_VERSION)
16
+ gem.executables = ["gherkin"]
17
+ gem.add_dependency "trollop", ">= 1.15"
18
+ gem.add_development_dependency "rspec", ">= 1.2.9"
19
+ gem.add_development_dependency "cucumber", ">= 0.5.1"
20
+ gem.add_development_dependency "rake-compiler", ">= 0.7.0" unless defined?(JRUBY_VERSION)
21
21
 
22
22
  case ENV['PLATFORM']
23
- when 'universal-java-1.5'
24
- gem.platform = 'universal-java-1.5'
23
+ when 'java'
24
+ gem.platform = 'java'
25
25
  gem.files += FileList['lib/gherkin.jar']
26
26
  gem.extensions = []
27
- when 'i386-mswin32'
28
- gem.platform = 'i386-mswin32'
29
- gem.files += FileList['lib/*.so']
30
- gem.extensions = []
31
- when 'i386-mingw32'
32
- gem.platform = 'i386-mingw32'
27
+ when 'i386-mswin32', 'i386-mingw32'
28
+ gem.platform = ENV['PLATFORM']
33
29
  gem.files += FileList['lib/*.so']
34
30
  gem.extensions = []
35
31
  else
@@ -42,10 +38,10 @@ begin
42
38
  end
43
39
  Jeweler::GemcutterTasks.new
44
40
  rescue LoadError
45
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
41
+ warn "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
46
42
  end
47
43
 
48
- Dir['tasks/**/*.rake'].each { |rake| load rake }
44
+ Dir['tasks/**/*.rake'].each { |rake| load File.expand_path(rake) }
49
45
 
50
46
  task :default => [:spec, :cucumber]
51
47
  task :spec => defined?(JRUBY_VERSION) ? :jar : :compile
@@ -1,4 +1,4 @@
1
1
  ---
2
2
  :minor: 0
3
- :patch: 1
3
+ :patch: 2
4
4
  :major: 1
@@ -1,10 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.dirname(__FILE__) + '/../lib') unless $:.include?(File.dirname(__FILE__) + '/../lib')
3
3
 
4
- require 'gherkin'
5
- require 'gherkin/tools/pretty_printer'
6
-
7
- listener = Gherkin::Tools::PrettyPrinter.new(STDOUT)
8
- parser = Gherkin::Parser.new(listener, true) # We could skip the parser here, if we don't want to verify well-formedness
9
- lexer = Gherkin::I18nLexer.new(parser)
10
- lexer.scan(IO.read(ARGV[0]))
4
+ require 'gherkin/cli/main'
5
+ Gherkin::Cli::Main.run(ARGV)
@@ -3,9 +3,9 @@ Feature: Gherkin Feature lexer
3
3
  In order to make it easy to control the Gherkin syntax
4
4
  As a Gherkin developer bent on Gherkin world-domination
5
5
  I want a feature lexer that uses a feature parser to
6
- make all the syntax decisions for me
6
+ make all the syntax decisions for me
7
7
 
8
- Background:
8
+ Background:
9
9
  Given a "en", "ruby" "root" parser
10
10
 
11
11
  Scenario: Correctly formed feature
@@ -22,13 +22,13 @@ Feature: Gherkin Feature lexer
22
22
  Background:
23
23
  Given I have a transmogrifier
24
24
  And I am a member of G.R.O.S.S
25
-
25
+
26
26
  Scenario: Whoozit to whatzit transmogrification
27
27
  Given I have a whoozit
28
28
  When I put it in the transmogrifier
29
29
  And I press the "transmogrify" button
30
30
  Then I should have a whatzit
31
-
31
+
32
32
  Scenario Outline: Imaginary Beings
33
33
  Given I have a <boring being>
34
34
  When I transmogrify it with the incantation:
@@ -36,7 +36,7 @@ Feature: Gherkin Feature lexer
36
36
  ALAKAZAM!
37
37
  \"\"\"
38
38
  Then I should have an <exciting being>
39
-
39
+
40
40
  Examples:
41
41
  | boring being | exciting being |
42
42
  | Sparrow | Alicanto |
@@ -60,8 +60,8 @@ Feature: Gherkin Feature lexer
60
60
  When I read it
61
61
  Then I should be amused
62
62
  """
63
- Then there should be no parse errors
64
-
63
+ Then there should be no parse errors
64
+
65
65
  Scenario: Keyword before feature
66
66
  Given the following text is parsed:
67
67
  """
@@ -91,7 +91,7 @@ Feature: Gherkin Feature lexer
91
91
  Then it shouldn't work
92
92
  """
93
93
  Then there should be parse errors on lines 5, 10 and 12
94
-
94
+
95
95
  Scenario: Tables
96
96
  Given the following text is parsed:
97
97
  """
@@ -124,48 +124,48 @@ Feature: Gherkin Feature lexer
124
124
  \"\"\" # Not interpreted as a pystring, just plain text
125
125
  Oh hai
126
126
  \"\"\"
127
-
127
+
128
128
  La la la
129
-
129
+
130
130
  Examples:
131
131
  | one | two |
132
132
  | foo | bar |
133
-
133
+
134
134
  \"\"\"
135
135
  Oh Hello
136
136
  \"\"\"
137
-
137
+
138
138
  # Body of the scenario outline starts below
139
139
  Given <something>
140
140
  And something <else>
141
-
141
+
142
142
  # The real examples table
143
143
  Examples:
144
144
  | something | else |
145
145
  | orange | apple |
146
146
  """
147
- Then there should be no parse errors
147
+ Then there should be no parse errors
148
148
 
149
149
  Scenario: Scenario Outline with multiple Example groups
150
150
  Given the following text is parsed:
151
151
  """
152
152
  Feature: Outline Sample
153
-
153
+
154
154
  Scenario: I have no steps
155
-
155
+
156
156
  Scenario Outline: Test state
157
157
  Given <state> without a table
158
158
  Given <other_state> without a table
159
-
159
+
160
160
  Examples: Rainbow colours
161
- | state | other_state |
162
- | missing | passing|
163
- | passing| passing |
164
- | failing | passing |
161
+ | state | other_state |
162
+ | missing | passing |
163
+ | passing | passing |
164
+ | failing | passing |
165
165
 
166
166
  Examples: Only passing
167
- | state | other_state |
168
- | passing | passing |
167
+ | state | other_state |
168
+ | passing | passing |
169
169
  """
170
170
  Then there should be no parse errors
171
171
 
@@ -175,20 +175,20 @@ Feature: Gherkin Feature lexer
175
175
  Feature: Test
176
176
  Scenario Outline: with step tables
177
177
  Given I have the following fruits in my pantry
178
- | name | quantity |
179
- | cucumbers | 10 |
180
- | strawberrys | 5 |
181
- | apricots | 7 |
182
-
178
+ | name | quantity |
179
+ | cucumbers | 10 |
180
+ | strawberrys | 5 |
181
+ | apricots | 7 |
182
+
183
183
  When I eat <number> <fruits> from the pantry
184
184
  Then I should have <left> <fruits> in the pantry
185
-
185
+
186
186
  Examples:
187
- | number | fruits | left |
188
- | 2 | cucumbers | 8 |
189
- | 4 | strawberrys| 1 |
190
- | 2 | apricots | 5 |
191
-
187
+ | number | fruits | left |
188
+ | 2 | cucumbers | 8 |
189
+ | 4 | strawberrys | 1 |
190
+ | 2 | apricots | 5 |
191
+
192
192
  Scenario Outline: placeholder in a multiline string
193
193
  Given my shopping list
194
194
  \"\"\"
@@ -198,9 +198,9 @@ Feature: Gherkin Feature lexer
198
198
  \"\"\"
199
199
  Must buy some cucumbers
200
200
  \"\"\"
201
-
201
+
202
202
  Examples:
203
- | fruits |
203
+ | fruits |
204
204
  | cucumbers |
205
205
  """
206
206
  Then there should be no parse errors
@@ -1,6 +1,6 @@
1
1
  Feature: Native (C/Java) Lexer
2
2
 
3
- Background:
3
+ Background:
4
4
  Given a "en", "native" "root" parser
5
5
 
6
6
  Scenario: Parsing an empty feature
@@ -9,7 +9,7 @@ Feature: Native (C/Java) Lexer
9
9
  Feature: blah
10
10
  """
11
11
  Then there should be no parse errors
12
-
12
+
13
13
  Scenario: Parsing a comment
14
14
  Given the following text is parsed:
15
15
  """
@@ -4,7 +4,7 @@ Feature: Gherkin Feature lexer/parser
4
4
  I want a feature lexer that uses a feature parser to
5
5
  make all the syntax decisions for me
6
6
 
7
- Background:
7
+ Background:
8
8
  Given a "en", "native" "root" parser
9
9
 
10
10
  Scenario: Correctly formed feature
@@ -27,7 +27,7 @@ Feature: Gherkin Feature lexer/parser
27
27
  When I put it in the transmogrifier
28
28
  And I press the "transmogrify" button
29
29
  Then I should have a whatzit
30
-
30
+
31
31
  Scenario Outline: Imaginary Beings
32
32
  Given I have a <boring being>
33
33
  When I transmogrify it with the incantation:
@@ -35,7 +35,7 @@ Feature: Gherkin Feature lexer/parser
35
35
  ALAKAZAM!
36
36
  \"\"\"
37
37
  Then I should have an <exciting being>
38
-
38
+
39
39
  Examples:
40
40
  | boring being | exciting being |
41
41
  | Sparrow | Alicanto |
@@ -59,8 +59,8 @@ Feature: Gherkin Feature lexer/parser
59
59
  When I read it
60
60
  Then I should be amused
61
61
  """
62
- Then there should be no parse errors
63
-
62
+ Then there should be no parse errors
63
+
64
64
  Scenario: Keyword before feature
65
65
  When the following text is parsed:
66
66
  """
@@ -90,7 +90,7 @@ Feature: Gherkin Feature lexer/parser
90
90
  Then it shouldn't work
91
91
  """
92
92
  Then there should be parse errors on lines 5, 10 and 12
93
-
93
+
94
94
  Scenario: Tables
95
95
  When the following text is parsed:
96
96
  """
@@ -123,44 +123,44 @@ Feature: Gherkin Feature lexer/parser
123
123
  \"\"\" # Not interpreted as a pystring, just plain text
124
124
  Oh hai
125
125
  \"\"\"
126
-
126
+
127
127
  La la la
128
-
128
+
129
129
  Examples:
130
130
  | one | two |
131
131
  | foo | bar |
132
-
132
+
133
133
  \"\"\"
134
134
  Oh Hello
135
135
  \"\"\"
136
-
136
+
137
137
  # Body of the scenario outline starts below
138
138
  Given <something>
139
139
  And something <else>
140
-
140
+
141
141
  # The real examples table
142
142
  Examples:
143
143
  | something | else |
144
144
  | orange | apple |
145
145
  """
146
- Then there should be no parse errors
146
+ Then there should be no parse errors
147
147
 
148
148
  Scenario: Scenario Outline with multiple Example groups
149
149
  When the following text is parsed:
150
150
  """
151
151
  Feature: Outline Sample
152
-
152
+
153
153
  Scenario: I have no steps
154
-
154
+
155
155
  Scenario Outline: Test state
156
156
  Given <state> without a table
157
157
  Given <other_state> without a table
158
-
158
+
159
159
  Examples: Rainbow colours
160
- | state | other_state |
161
- | missing | passing|
162
- | passing| passing |
163
- | failing | passing |
160
+ | state | other_state |
161
+ | missing | passing |
162
+ | passing | passing |
163
+ | failing | passing |
164
164
 
165
165
  Examples: Only passing
166
166
  | state | other_state |
@@ -174,20 +174,20 @@ Feature: Gherkin Feature lexer/parser
174
174
  Feature: Test
175
175
  Scenario Outline: with step tables
176
176
  Given I have the following fruits in my pantry
177
- | name | quantity |
178
- | cucumbers | 10 |
179
- | strawberrys | 5 |
180
- | apricots | 7 |
181
-
177
+ | name | quantity |
178
+ | cucumbers | 10 |
179
+ | strawberrys | 5 |
180
+ | apricots | 7 |
181
+
182
182
  When I eat <number> <fruits> from the pantry
183
183
  Then I should have <left> <fruits> in the pantry
184
-
184
+
185
185
  Examples:
186
- | number | fruits | left |
187
- | 2 | cucumbers | 8 |
188
- | 4 | strawberrys| 1 |
189
- | 2 | apricots | 5 |
190
-
186
+ | number | fruits | left |
187
+ | 2 | cucumbers | 8 |
188
+ | 4 | strawberrys | 1 |
189
+ | 2 | apricots | 5 |
190
+
191
191
  Scenario Outline: placeholder in a multiline string
192
192
  Given my shopping list
193
193
  \"\"\"
@@ -197,9 +197,9 @@ Feature: Gherkin Feature lexer/parser
197
197
  \"\"\"
198
198
  Must buy some cucumbers
199
199
  \"\"\"
200
-
200
+
201
201
  Examples:
202
- | fruits |
202
+ | fruits |
203
203
  | cucumbers |
204
204
  """
205
205
  Then there should be no parse errors