benhamill-gherkin 2.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. data/.gitattributes +2 -0
  2. data/.gitignore +11 -0
  3. data/.mailmap +2 -0
  4. data/.rspec +1 -0
  5. data/.rvmrc +1 -0
  6. data/Gemfile +7 -0
  7. data/History.txt +363 -0
  8. data/LICENSE +20 -0
  9. data/README.rdoc +149 -0
  10. data/Rakefile +19 -0
  11. data/VERSION +1 -0
  12. data/build_native_gems.sh +8 -0
  13. data/cucumber.yml +3 -0
  14. data/features/escaped_pipes.feature +8 -0
  15. data/features/feature_parser.feature +237 -0
  16. data/features/json_formatter.feature +377 -0
  17. data/features/json_parser.feature +318 -0
  18. data/features/native_lexer.feature +19 -0
  19. data/features/parser_with_native_lexer.feature +205 -0
  20. data/features/pretty_formatter.feature +15 -0
  21. data/features/step_definitions/eyeball_steps.rb +3 -0
  22. data/features/step_definitions/gherkin_steps.rb +29 -0
  23. data/features/step_definitions/json_formatter_steps.rb +28 -0
  24. data/features/step_definitions/json_parser_steps.rb +20 -0
  25. data/features/step_definitions/pretty_formatter_steps.rb +84 -0
  26. data/features/steps_parser.feature +46 -0
  27. data/features/support/env.rb +38 -0
  28. data/gherkin.gemspec +61 -0
  29. data/ikvm/.gitignore +3 -0
  30. data/java/.gitignore +5 -0
  31. data/java/src/main/java/gherkin/lexer/i18n/.gitignore +1 -0
  32. data/java/src/main/resources/gherkin/.gitignore +1 -0
  33. data/js/lib/gherkin/lexer/i18n/ar.js +1094 -0
  34. data/js/lib/gherkin/lexer/i18n/bg.js +1308 -0
  35. data/js/lib/gherkin/lexer/i18n/ca.js +1236 -0
  36. data/js/lib/gherkin/lexer/i18n/cs.js +1090 -0
  37. data/js/lib/gherkin/lexer/i18n/cy_gb.js +958 -0
  38. data/js/lib/gherkin/lexer/i18n/da.js +974 -0
  39. data/js/lib/gherkin/lexer/i18n/de.js +1082 -0
  40. data/js/lib/gherkin/lexer/i18n/en.js +965 -0
  41. data/js/lib/gherkin/lexer/i18n/en_au.js +902 -0
  42. data/js/lib/gherkin/lexer/i18n/en_lol.js +859 -0
  43. data/js/lib/gherkin/lexer/i18n/en_pirate.js +1136 -0
  44. data/js/lib/gherkin/lexer/i18n/en_scouse.js +1289 -0
  45. data/js/lib/gherkin/lexer/i18n/en_tx.js +942 -0
  46. data/js/lib/gherkin/lexer/i18n/eo.js +916 -0
  47. data/js/lib/gherkin/lexer/i18n/es.js +1049 -0
  48. data/js/lib/gherkin/lexer/i18n/et.js +915 -0
  49. data/js/lib/gherkin/lexer/i18n/fi.js +894 -0
  50. data/js/lib/gherkin/lexer/i18n/fr.js +1116 -0
  51. data/js/lib/gherkin/lexer/i18n/he.js +1044 -0
  52. data/js/lib/gherkin/lexer/i18n/hr.js +994 -0
  53. data/js/lib/gherkin/lexer/i18n/hu.js +1043 -0
  54. data/js/lib/gherkin/lexer/i18n/id.js +884 -0
  55. data/js/lib/gherkin/lexer/i18n/it.js +1007 -0
  56. data/js/lib/gherkin/lexer/i18n/ja.js +1344 -0
  57. data/js/lib/gherkin/lexer/i18n/ko.js +1028 -0
  58. data/js/lib/gherkin/lexer/i18n/lt.js +972 -0
  59. data/js/lib/gherkin/lexer/i18n/lu.js +1057 -0
  60. data/js/lib/gherkin/lexer/i18n/lv.js +1092 -0
  61. data/js/lib/gherkin/lexer/i18n/nl.js +1036 -0
  62. data/js/lib/gherkin/lexer/i18n/no.js +986 -0
  63. data/js/lib/gherkin/lexer/i18n/pl.js +1140 -0
  64. data/js/lib/gherkin/lexer/i18n/pt.js +1000 -0
  65. data/js/lib/gherkin/lexer/i18n/ro.js +1089 -0
  66. data/js/lib/gherkin/lexer/i18n/ru.js +1560 -0
  67. data/js/lib/gherkin/lexer/i18n/sk.js +972 -0
  68. data/js/lib/gherkin/lexer/i18n/sr_cyrl.js +1728 -0
  69. data/js/lib/gherkin/lexer/i18n/sr_latn.js +1220 -0
  70. data/js/lib/gherkin/lexer/i18n/sv.js +997 -0
  71. data/js/lib/gherkin/lexer/i18n/tr.js +1014 -0
  72. data/js/lib/gherkin/lexer/i18n/uk.js +1572 -0
  73. data/js/lib/gherkin/lexer/i18n/uz.js +1302 -0
  74. data/js/lib/gherkin/lexer/i18n/vi.js +1124 -0
  75. data/js/lib/gherkin/lexer/i18n/zh_cn.js +902 -0
  76. data/js/lib/gherkin/lexer/i18n/zh_tw.js +940 -0
  77. data/lib/.gitignore +4 -0
  78. data/lib/gherkin.rb +2 -0
  79. data/lib/gherkin/c_lexer.rb +17 -0
  80. data/lib/gherkin/formatter/ansi_escapes.rb +95 -0
  81. data/lib/gherkin/formatter/argument.rb +16 -0
  82. data/lib/gherkin/formatter/escaping.rb +15 -0
  83. data/lib/gherkin/formatter/filter_formatter.rb +136 -0
  84. data/lib/gherkin/formatter/hashable.rb +19 -0
  85. data/lib/gherkin/formatter/json_formatter.rb +102 -0
  86. data/lib/gherkin/formatter/line_filter.rb +26 -0
  87. data/lib/gherkin/formatter/model.rb +236 -0
  88. data/lib/gherkin/formatter/pretty_formatter.rb +243 -0
  89. data/lib/gherkin/formatter/regexp_filter.rb +21 -0
  90. data/lib/gherkin/formatter/step_printer.rb +17 -0
  91. data/lib/gherkin/formatter/tag_count_formatter.rb +47 -0
  92. data/lib/gherkin/formatter/tag_filter.rb +19 -0
  93. data/lib/gherkin/i18n.rb +175 -0
  94. data/lib/gherkin/i18n.yml +588 -0
  95. data/lib/gherkin/json_parser.rb +137 -0
  96. data/lib/gherkin/lexer/i18n_lexer.rb +47 -0
  97. data/lib/gherkin/listener/event.rb +45 -0
  98. data/lib/gherkin/listener/formatter_listener.rb +113 -0
  99. data/lib/gherkin/native.rb +7 -0
  100. data/lib/gherkin/native/ikvm.rb +55 -0
  101. data/lib/gherkin/native/java.rb +55 -0
  102. data/lib/gherkin/native/null.rb +9 -0
  103. data/lib/gherkin/parser/meta.txt +5 -0
  104. data/lib/gherkin/parser/parser.rb +164 -0
  105. data/lib/gherkin/parser/root.txt +11 -0
  106. data/lib/gherkin/parser/steps.txt +4 -0
  107. data/lib/gherkin/rb_lexer.rb +8 -0
  108. data/lib/gherkin/rb_lexer/.gitignore +1 -0
  109. data/lib/gherkin/rb_lexer/README.rdoc +8 -0
  110. data/lib/gherkin/rubify.rb +24 -0
  111. data/lib/gherkin/tag_expression.rb +62 -0
  112. data/lib/gherkin/version.rb +3 -0
  113. data/ragel/i18n/.gitignore +1 -0
  114. data/ragel/lexer.c.rl.erb +439 -0
  115. data/ragel/lexer.java.rl.erb +208 -0
  116. data/ragel/lexer.rb.rl.erb +167 -0
  117. data/ragel/lexer_common.rl.erb +50 -0
  118. data/spec/gherkin/c_lexer_spec.rb +21 -0
  119. data/spec/gherkin/fixtures/1.feature +8 -0
  120. data/spec/gherkin/fixtures/comments_in_table.feature +9 -0
  121. data/spec/gherkin/fixtures/complex.feature +45 -0
  122. data/spec/gherkin/fixtures/complex.json +143 -0
  123. data/spec/gherkin/fixtures/complex_for_filtering.feature +60 -0
  124. data/spec/gherkin/fixtures/complex_with_tags.feature +61 -0
  125. data/spec/gherkin/fixtures/dos_line_endings.feature +45 -0
  126. data/spec/gherkin/fixtures/hantu_pisang.feature +35 -0
  127. data/spec/gherkin/fixtures/i18n_fr.feature +14 -0
  128. data/spec/gherkin/fixtures/i18n_no.feature +7 -0
  129. data/spec/gherkin/fixtures/i18n_zh-CN.feature +9 -0
  130. data/spec/gherkin/fixtures/scenario_outline_with_tags.feature +13 -0
  131. data/spec/gherkin/fixtures/scenario_without_steps.feature +5 -0
  132. data/spec/gherkin/fixtures/simple_with_comments.feature +7 -0
  133. data/spec/gherkin/fixtures/simple_with_tags.feature +11 -0
  134. data/spec/gherkin/fixtures/with_bom.feature +3 -0
  135. data/spec/gherkin/formatter/ansi_escapes_spec.rb +19 -0
  136. data/spec/gherkin/formatter/filter_formatter_spec.rb +165 -0
  137. data/spec/gherkin/formatter/model_spec.rb +28 -0
  138. data/spec/gherkin/formatter/pretty_formatter_spec.rb +158 -0
  139. data/spec/gherkin/formatter/spaces.feature +9 -0
  140. data/spec/gherkin/formatter/step_printer_spec.rb +55 -0
  141. data/spec/gherkin/formatter/tabs.feature +9 -0
  142. data/spec/gherkin/formatter/tag_count_formatter_spec.rb +30 -0
  143. data/spec/gherkin/i18n_spec.rb +152 -0
  144. data/spec/gherkin/java_lexer_spec.rb +20 -0
  145. data/spec/gherkin/java_libs.rb +20 -0
  146. data/spec/gherkin/json_parser_spec.rb +113 -0
  147. data/spec/gherkin/lexer/i18n_lexer_spec.rb +43 -0
  148. data/spec/gherkin/output_stream_string_io.rb +20 -0
  149. data/spec/gherkin/parser/parser_spec.rb +16 -0
  150. data/spec/gherkin/rb_lexer_spec.rb +19 -0
  151. data/spec/gherkin/sexp_recorder.rb +56 -0
  152. data/spec/gherkin/shared/lexer_group.rb +593 -0
  153. data/spec/gherkin/shared/py_string_group.rb +153 -0
  154. data/spec/gherkin/shared/row_group.rb +125 -0
  155. data/spec/gherkin/shared/tags_group.rb +54 -0
  156. data/spec/gherkin/tag_expression_spec.rb +137 -0
  157. data/spec/spec_helper.rb +69 -0
  158. data/tasks/bench.rake +184 -0
  159. data/tasks/bench/feature_builder.rb +49 -0
  160. data/tasks/bench/generated/.gitignore +1 -0
  161. data/tasks/bench/null_listener.rb +4 -0
  162. data/tasks/compile.rake +102 -0
  163. data/tasks/cucumber.rake +20 -0
  164. data/tasks/gems.rake +35 -0
  165. data/tasks/ikvm.rake +79 -0
  166. data/tasks/ragel_task.rb +70 -0
  167. data/tasks/rdoc.rake +9 -0
  168. data/tasks/release.rake +30 -0
  169. data/tasks/rspec.rake +8 -0
  170. metadata +609 -0
data/.gitattributes ADDED
@@ -0,0 +1,2 @@
1
+ spec/gherkin/fixtures/dos_line_endings.feature -crlf
2
+ spec/gherkin/fixtures/with_bom.feature -crlf
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ *.sw?
2
+ *.rbc
3
+ .DS_Store
4
+ coverage
5
+ rdoc
6
+ pkg
7
+ ext
8
+ tmp
9
+ release
10
+ .bundle
11
+ Gemfile.lock
data/.mailmap ADDED
@@ -0,0 +1,2 @@
1
+ Gregory Hnatiuk <ghnatiuk@gmail.com>
2
+ Mike Sassak <msassak@gmail.com>
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm @cucumber --create
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source "http://rubygems.org"
2
+ gemspec
3
+
4
+ unless ENV['TM_RUBY']
5
+ @dependencies.reject!{|dep| dep.name == 'cucumber'}
6
+ gem 'cucumber', :path => '../cucumber'
7
+ end
data/History.txt ADDED
@@ -0,0 +1,363 @@
1
+ == 2.3.5 (2011-03-20)
2
+
3
+ === Changes
4
+ * Relaxed gem dependencies to use >=. (Rob Slifka, Aslak Hellesøy)
5
+
6
+ == 2.3.4 (2011-03-10)
7
+
8
+ === Changes
9
+ * Fixing C90 errors on Ubuntu Natty (#92 Colin Dean)
10
+ * Romanian (ro) language update, extracted from a real-world project. (Iulian Dogariu)
11
+
12
+ == 2.3.3 (2010-12-26)
13
+
14
+ === Changes
15
+ * No more dependencies on external ANSI escape libraries (Ruby:term-ansicolor, Java:Jansi). DIY is better! (Aslak Hellesøy)
16
+ * Added duration (in millseconds) to Result. (Aslak Hellesøy)
17
+ * Additional Polish aliases (Mike Połtyn)
18
+
19
+ == 2.3.2 (2010-12-05)
20
+
21
+ (Somehow 2.3.1 was released improperly shortly after 2.3.0 - not sure what fixes went into that!)
22
+
23
+ === Bugfixes
24
+ * Preserve whitespace in descriptions. Leading whitespace in descriptions are stripped upto preceding keyword + 2 spaces (#87 Matt Wynne, Gregory Hnatiuk, Aslak Hellesøy)
25
+ * Fix incorrect indentation of Examples descriptions (Gregory Hnatiuk)
26
+ * Can't define new line characters in Example Table Cell's Content. (#85 George Montana Harkin, Aslak Hellesøy)
27
+
28
+ == 2.3.0 (2010-11-12)
29
+
30
+ === New Features
31
+ * New aliases for Scenario Outline in Swedish, Norwegian and English. (Peter Krantz, Aslak Hellesøy)
32
+ * Improved build documentation for people who want to contribute. (Aslak Hellesøy)
33
+ * Results can now be outputted/parsed in JSON. (Aslak Hellesøy)
34
+ * JSON output now contains optional "match", "result" and "embeddings" elements underneath each step. (Aslak Hellesøy)
35
+ * Added support for Base64 encoded embeddings in JSON representation. Useful for screenshots etc. (Aslak Hellesøy)
36
+
37
+ == 2.2.9 (2010-10-15)
38
+
39
+ === New Features
40
+ * PrettyFormatter can format features both with and without ANSI Colors. Using Jansi on Java. (Aslak Hellesøy)
41
+ * Extended Java Formatter API with a steps(List<Step>) method for better reporting in Java (Aslak Hellesøy)
42
+
43
+ == 2.2.8 (2010-10-04)
44
+
45
+ === Removed Features
46
+ * Trollop based CLI - didn't find a good use for it yet. (Aslak Hellesøy)
47
+
48
+ == 2.2.7 (2010-10-01)
49
+
50
+ === Bugfixes
51
+ * I18n.getCodeKeywords() on Java didn't strip '!'. Not anymore. (Aslak Hellesøy)
52
+
53
+ == 2.2.6 (2010-10-01)
54
+
55
+ === Bugfixes
56
+ * I18n.getCodeKeywords() on Java included '*'. Not anymore. (Aslak Hellesøy)
57
+
58
+ == 2.2.5 (2010-10-01)
59
+
60
+ === New Features
61
+ * Gherkin will scan all top comments for the language comment. (Aslak Hellesøy)
62
+
63
+ == 2.2.4 (2010-09-22)
64
+
65
+ === Bugfixes
66
+ * C99 features used by gherkin code (#75 Graham Agnew)
67
+
68
+ == 2.2.3 (2010-09-21)
69
+
70
+ === Bugfixes
71
+ * Add back missing development dependency on cucumber (Aslak Hellesøy)
72
+
73
+ == 2.2.2 (2010-09-21)
74
+
75
+ === New Features
76
+ * Use json instead of json_pure (Aslak Hellesøy)
77
+ * JSON formatter and parser can now omit JSON serialization (for speed) and work directly on objects (Aslak Hellesøy)
78
+
79
+ == 2.2.1 (2010-09-12)
80
+
81
+ === New Features
82
+ * Windows gems are now built against 1.8.6-p287 and 1.9.1-p243, on both mswin32 and mingw32, and should work on 1.8.6, 1.8.7, 1.9.1 and 1.9.2 versions of rubyinstaller.org as well as older windows rubies. (Aslak Hellesøy)
83
+
84
+ === Changed features
85
+ * Build system no longer uses Jeweler - only Rake, Bundler and Rubygems (Aslak Hellesøy)
86
+
87
+ == 2.2.0 (2010-07-26)
88
+
89
+ This release breaks some APIs since the previous 2.1.5 release. If you install gherkin 2.2.0 you must also upgrade to
90
+ Cucumber 0.9.0.
91
+
92
+ === Bugfixes
93
+ * I18nLexer doesn't recognise language header with \r\n on OS X. (#70 Aslak Hellesøy)
94
+
95
+ === New Features
96
+ * Pure Java FilterFormatter. (Aslak Hellesøy)
97
+ * Pure Java JSONFormatter. (Aslak Hellesøy)
98
+
99
+ === Changed Features
100
+ * All formatter events take exactly one argument. Each argument is a single object with all data. (Aslak Hellesøy)
101
+ * Several java classes have moved to a different package in order to improve separation of concerns. (Aslak Hellesøy)
102
+
103
+ == 2.1.5 (2010-07-17)
104
+
105
+ === Bugfixes
106
+ * Line filter works on JRuby with Scenarios without steps. (Aslak Hellesøy)
107
+
108
+ === Changed Features
109
+ * The JSON schema now puts background inside the "elements" Array. Makes parsing simpler. (Aslak Hellesøy)
110
+
111
+ == 2.1.4 (2010-07-14)
112
+
113
+ === Bugfixes
114
+ * #steps fails on JRuby with 2.1.3 (#68 Aslak Hellesøy)
115
+
116
+ == 2.1.3 (2010-07-14)
117
+
118
+ === Bugfixes
119
+ * Examples are not cleared when an ignored Scenario Outline/Examples is followed by a Scenario. (#67 Aslak Hellesøy)
120
+
121
+ == 2.1.2 (2010-07-13)
122
+
123
+ === Bugfixes
124
+ * Fix some missing require statements that surfaced when gherkin was used outside Cucumber. (Aslak Hellesøy)
125
+
126
+ == 2.1.1 (2010-07-12)
127
+
128
+ The previous release had a missing gherkin.jar in the jruby gem. This release fixes that. For good this time!
129
+
130
+ == 2.1.0 (2010-07-12)
131
+
132
+ === New Features
133
+ * Pirate! (anteaya)
134
+ * Tag limits for negative tags (Aslak Hellesøy)
135
+
136
+ === Changed Features
137
+ * The formatter API has changed and the listener API is now only used internally. (Aslak Hellesøy)
138
+
139
+ === Removed Features
140
+ * FilterListener has been replaced with FilterFormatter. Currently only in Ruby (no Java impl yet). (Aslak Hellesøy)
141
+
142
+ == 2.0.2 (2010-06-16)
143
+
144
+ === New Features
145
+ * New JSON Lexer. (Gregory Hnatiuk)
146
+
147
+ === Bugfixes
148
+ * Fixed incorrect indentation for descriptions in Java. (Aslak Hellesøy)
149
+ * Fixed support for xx-yy languages and Hebrew and Indonesian (JDK bugs). (Aslak Hellesøy)
150
+
151
+ === Changed Features
152
+ * Examples are now nested inside the Scenario Outline in the JSON format. (Gregory Hnatiuk)
153
+
154
+ == 2.0.1 (2010-06-15)
155
+
156
+ The previous release had a missing gherkin.jar in the jruby gem. This release fixes that.
157
+
158
+ == 2.0.0 (2010-06-15)
159
+
160
+ We're breaking the old listener API in this release, and added a new JSON formatter,
161
+ which calls for a new major version.
162
+
163
+ === New Features
164
+ * New JSON formatter. (Aslak Hellesøy, Joseph Wilk)
165
+ * New synonyms for Hungarian (Bence Golda)
166
+ * Upgraded to use RSpec 2.0.0 (Aslak Hellesøy)
167
+
168
+ === Bugfixes
169
+ * undefined method `<=>' on JRuby (#52 Aslak Hellesøy)
170
+ * Include link to explanation of LexingError (Mike Sassak)
171
+
172
+ === Changed Features
173
+ * The formatter API has completely changed. There is a Gherkin Listener API and a Formatter API.
174
+ The FormatterListener acts as an adapter between them. (Aslak Hellesøy)
175
+ * The listener API now has an additional argument for description (text following the first line of Feature:, Scenario: etc.) (Gregroy Hnatiuk, Matt Wynne)
176
+
177
+ == 1.0.30 (2010-05-18)
178
+
179
+ === New Features
180
+ * Native gems for IronRuby. Bundles IKVM OpenJDK dlls as well as ikvmc-compiled gherkin.dll. Experimental! (Aslak Hellesøy)
181
+
182
+ == 1.0.29 (2010-05-18)
183
+
184
+ === Bugfixes
185
+ * Use I18n.class' class loader instead of context class loader to load Java lexers. Hoping this fixes loading bug for good. (Aslak Hellesøy)
186
+
187
+ == 1.0.28 (2010-05-18)
188
+
189
+ === Bugfixes
190
+ * Use context class loader instead of boot class loader to load Java lexers. (Aslak Hellesøy)
191
+ * Only add gcc flags when the compiler is gcc. (#60 Aslak Hellesøy, Christian Höltje)
192
+
193
+ == 1.0.27 (2010-05-17)
194
+
195
+ === New Features
196
+ * Table cells can now contain escaped bars - \| and escaped backslashes - \\. (#48. Gregory Hnatiuk, Aslak Hellesøy)
197
+ * Luxemburgish (lu) added. (Christoph König)
198
+
199
+ == 1.0.26 (2010-05-09)
200
+
201
+ === New Features
202
+ * Ignore the BOM that many retarded Windows editors insist on sticking in the beginning of a file. (Aslak Hellesøy)
203
+
204
+ == 1.0.25 (2010-05-02)
205
+
206
+ === Bugfixes
207
+ * Allow fallback to a slower ruby lexer if the C lexer can't be loaded for some reason.
208
+ * Can't run specs in gherkin 1.0.24 (#59 Aslak Hellesøy)
209
+
210
+ == 1.0.24 (2010-05-02)
211
+
212
+ === Bugfixes
213
+ * hard tabs crazy indentation for pystrings in formatter (#55 Aslak Hellesøy)
214
+
215
+ == 1.0.23 (2010-05-02)
216
+
217
+ === Changed Features
218
+ * Java API now uses camelCased method names instead of underscored (more Java-like) (Aslak Hellesøy)
219
+
220
+ == 1.0.22 (2010-04-28)
221
+
222
+ === Bugfixes
223
+ * Make prebuilt binaries work on both Ruby 1.8.x and 1.9.x on Windows (#54 Luis Lavena, Aslak Hellesøy)
224
+
225
+ == 1.0.21 (2010-04-27)
226
+
227
+ === Bugfixes
228
+ * Fix compile warning on ruby 1.9.2dev (2009-07-18 trunk 24186) (#53 Aslak Hellesøy)
229
+
230
+ == 1.0.20 (2010-04-20)
231
+
232
+ === Bugfixes
233
+ * The gherkin CLI is working again (Gregory Hnatiuk)
234
+
235
+ == 1.0.19 (2010-04-20)
236
+
237
+ === New Features
238
+ * Works with JRuby 1.5.0.RC1 (Aslak Hellesøy)
239
+
240
+ === Changed Features
241
+ * I18n.code_keywords now return And and But as well, making Cucumber StepDefs a little more flexible (Aslak Hellesøy)
242
+
243
+ == 1.0.18 (2010-04-20)
244
+
245
+ === Bugfixes
246
+ * Explicitly use UTF-8 encoding when scanning source with Java lexer. (Aslak Hellesøy)
247
+
248
+ == 1.0.17 (2010-04-19)
249
+
250
+ === Bugfixes
251
+ * Gherkin::I18n.keyword_regexp was broken (used for 3rd party code generation). (#51 Aslak Hellesøy)
252
+
253
+ == 1.0.16 (2010-04-19)
254
+ (Something went wrong when releasing 1.0.15)
255
+
256
+ === Bugfixes
257
+ * Reduced risk of halfway botched releases. (Aslak Hellesøy)
258
+
259
+ == 1.0.15 (2010-04-19)
260
+
261
+ === New Features
262
+ * Implemented more functionality in I18n.java. (Aslak Hellesøy)
263
+
264
+ === Changed Features
265
+ * Java methods are no longer throwing Exception (but RuntimeException). (Aslak Hellesøy)
266
+
267
+ == 1.0.14 (2010-04-18)
268
+ (Something went wrong when releasing 1.0.13)
269
+
270
+ == 1.0.13 (2010-04-18)
271
+
272
+ === New Features
273
+ * Filter on Background name. (Aslak Hellesøy)
274
+
275
+ == 1.0.12 (2010-04-18)
276
+
277
+ === Bugfixes
278
+ * Fixed incorrect filtering of pystring in Background. (Mike Sassak)
279
+
280
+ == 1.0.11 (2010-04-16)
281
+
282
+ === Bugfixes
283
+ * Fixed bad packaging (C files were not packaged in POSIX gem)
284
+
285
+ == 1.0.10 (2010-04-16)
286
+
287
+ === New Features
288
+ * Added Esperanto and added a Russian synonym for Feature. (Antono Vasiljev)
289
+ * Pure Java implementation of FilterListener and TagExpression (Mike Gaffney, Aslak Hellesøy)
290
+
291
+ === Changed Features
292
+ * TagExpression takes array args instead of varargs. (Aslak Hellesøy)
293
+
294
+ == 1.0.9 (2010-04-12)
295
+
296
+ === Bugfixes
297
+ * Triple escaped quotes (\"\"\") in PyStrings are unescaped to """. (Aslak Hellesøy)
298
+
299
+ == 1.0.8 (2010-04-10)
300
+
301
+ === Bugfixes
302
+ * Removed illegal comma from Ukrainian synonym. (Aslak Hellesøy)
303
+
304
+ == 1.0.7 (2010-04-10)
305
+
306
+ === Bugfixes
307
+ * Fixed problems with packaging of 1.0.6 release. (Aslak Hellesøy)
308
+
309
+ == 1.0.6 (2010-04-10)
310
+
311
+ === New Features
312
+ * Fully automated release process. (Aslak Hellesøy)
313
+
314
+ === Changed Features
315
+ * Made generated classes use a more uniform naming convention. (Aslak Hellesøy)
316
+
317
+ === Removed Features
318
+ * Removed C# port, obsoleted by IKVM build from 1.0.5. (Aslak Hellesøy)
319
+
320
+ == 1.0.5 (2010-04-08)
321
+
322
+ === New Features
323
+ * New .NET build of gherkin - an ikvmc build of gherkin.jar to gherkin.dll. (Aslak Hellesøy)
324
+
325
+ === Bugfixes
326
+ * Made parsers reusable so that the same instance can parse several features. (Aslak Hellesøy)
327
+
328
+ == 1.0.4 (2010-04-07)
329
+
330
+ === New features
331
+ * Pure java releases of Gherkin at http://cukes.info/maven
332
+ * A FilterListener in Ruby that is the last missing piece to plug Gherkin into Cucumber. (Gregory Hnatiuk, Aslak Hellesøy, Matt Wynne, Mike Sassak)
333
+
334
+ === Changed features
335
+ * The Lexer now emits the '@' for tags. (Aslak Hellesøy)
336
+
337
+ == 1.0.3 (2010-03-31)
338
+
339
+ === Bugfixes
340
+ * The C lexer correctly instantiates a new array for each table, instead of reusing the old one. (Aslak Hellesøy)
341
+ * Emit keywords with space instead of stripping (< keywords are emmitted without space) (Aslak Hellesøy)
342
+ * gherkin reformat now prints comments, and does it with proper indentation (Aslak Hellesøy)
343
+ * .NET resource files are now automatically copied into the .dll (#46 Aslak Hellesøy)
344
+
345
+ === New features
346
+ * The Pure Java implementation now has a simple main method that pretty prints a feature. (#39 Aslak Hellesøy)
347
+ * Writing code generated i18n syntax highlighters for Gherkin is a lot easier thanks to several convenience methods in Gherkin::I18n. (Aslak Hellesøy)
348
+ * .NET (C#) port (#36, #37 Attila Sztupak)
349
+ * Tables parsed and sent by row rather than by table. (Mike Sassak)
350
+
351
+ === Changed features
352
+ * Switced to ISO 639-1 (language) and ISO 3166 alpha-2 (region - if applicable). Applies to Catalan,
353
+ Swedish, Welsh, Romanian and Serbian. (Aslak Hellesøy)
354
+
355
+ == 1.0.2 (2009-12-30)
356
+
357
+ === Bugfixes
358
+ * Build passes on Ruby 1.9.2 (Aslak Hellesøy)
359
+
360
+ === New features
361
+ * New command line based on trollop. Commands: reformat, stats. (Aslak Hellesøy)
362
+ * I18nLexer#scan sets #language to the I18n for the language scanned (Mike Sassak)
363
+ * I18n#adverbs, brings I18n to parity with Cucumber::Parser::NaturalLanguage (Mike Sassak)
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009-2010 Mike Sassak, Gregory Hnatiuk, Aslak Hellesøy
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,149 @@
1
+ = Gherkin
2
+
3
+ Fast Gherkin lexer and parser based on Ragel. Gherkin is two things:
4
+
5
+ * The language that has evolved out of the Cucumber project.
6
+ * This library
7
+
8
+ Supported platforms:
9
+
10
+ * Ruby 1.8.6-1.9.2 (MRI, JRuby, REE, Rubinius)
11
+ * Pure Java
12
+ * .NET
13
+ * IronRuby (experimental)
14
+ * Javascript (coming soon)
15
+
16
+ == Installing the toolchain
17
+
18
+ Due to the cross-platform nature of this library, you have to install a lot of tools to build gherkin yourself.
19
+ In order to make it easier for occasional contributors to get the development environment up and running, you don't
20
+ have to install everything up front. The build scripts should tell you if you are missing something. For example,
21
+ you shouldn't have to install MinGW to build windows binaries if you are a Linux user and just want to fix a bug in
22
+ the C code.
23
+
24
+ === Common dependencies
25
+
26
+ These are the minimal tools you need to install:
27
+
28
+ * Ragel (brew install ragel or apt-get install ragel)
29
+ * Ruby (any version should do).
30
+ * A clone of the cucumber git repo to a "cucumber" sibling folder of your gherkin folder. (Only needed to run cucumber tests)
31
+ * RVM (you may not need this if you are only building for a single platform)
32
+
33
+ With this minimal toolchain installed, install Ruby gems needed by the build:
34
+
35
+ gem install bundler
36
+ bundle install
37
+
38
+ Running RSpec and Cucumber tests
39
+
40
+ rake clean spec cucumber
41
+
42
+ If the RL_LANGS environment variable is set, only the parsers for the languages specified there will be built.
43
+ E.g. in Bash, export RL_LANGS="en,fr,no". This can be quite helpful when modifying the Ragel grammar.
44
+
45
+ See subsections for building for a specific platform.
46
+
47
+ === MRI, REE or Rubinius
48
+
49
+ You'll need GCC installed.
50
+
51
+ Build the gem with:
52
+
53
+ rake build
54
+
55
+ === Pure Java and JRuby
56
+
57
+ You must install JRuby to build the pure Java jar or the JRuby gem:
58
+
59
+ rvm install jruby
60
+ rvm use jruby
61
+ rvm gemset create cucumber
62
+ rvm use @cucumber
63
+ gem install bundler
64
+ bundle install
65
+
66
+ Now you can build the jar with:
67
+
68
+ rake clean jar
69
+
70
+ === .NET and IronRuby
71
+
72
+ You must install Mono and IKVM to build the pure .NET dll and the IronRuby gem:
73
+
74
+ * Install Mono from http://www.mono-project.com/ and make sure it's on your $PATH
75
+ * Download IKVM from http://www.ikvm.net/ and extract it to /usr/local/ikvm so that you have a /usr/local/ikvm/bin/ikvmc.exe
76
+
77
+ Now you can build the .NET dll with:
78
+
79
+ rake ikvm
80
+
81
+ === MinGW Rubies (for Windows gems)
82
+
83
+ In order to build Windows binaries (so we can release Windows gems from OS X/Linux) we need to set up rake-compiler.
84
+
85
+ http://github.com/luislavena/rake-compiler/
86
+
87
+ Now, let's install MinGW...
88
+
89
+ I didn't want to install macports (I'm on homebrew) and I couldn't figure out how to build MinGW myself. I got prebuilt binaries (version 4.3.0):
90
+ http://crossgcc.rts-software.org/doku.php - just add the bin folder to your PATH
91
+
92
+ You must install MinGW rubies to build gems fow Windows.
93
+ First you need to download and install MinGW:
94
+
95
+ OS X users can get it from http://crossgcc.rts-software.org/doku.php
96
+ Once you have installed it, add this to your .bashrc:
97
+
98
+ export PATH=$PATH:/usr/local/i386-mingw32-4.3.0/bin
99
+
100
+ Now, let's install some rubies.
101
+ Make sure you have openssl installed first.
102
+
103
+ brew install openssl
104
+
105
+ # 1.8.6
106
+ # Don't worry about inconsistent patchlevels here. It works.
107
+ rvm install 1.8.6-p399
108
+ rvm use 1.8.6-p399
109
+ rvm gemset create cucumber
110
+ rvm use @cucumber
111
+ gem install bundler
112
+ bundle install
113
+ rake-compiler cross-ruby VERSION=1.8.6-p287
114
+
115
+ # 1.9.1
116
+ # Later 1.9.1 patch levels or 1.9.2 don't compile on mingw.
117
+ # The compiled binaries should still work on 1.9.2
118
+ rvm install 1.9.1-p243
119
+ rvm use 1.9.1-p243
120
+ rvm gemset create cucumber
121
+ rvm use @cucumber
122
+ gem install bundler
123
+ bundle install
124
+ rake-compiler cross-ruby VERSION=1.9.1-p243
125
+
126
+ == Release process
127
+
128
+ * Bump version in the VERSION file and:
129
+ ** java/pom.xml
130
+ ** ikvm/Gherkin/Gherkin.csproj
131
+ * Commit changes.
132
+ * rake gems:prepare && ./build_native_gems.sh && rake release:ALL
133
+ * Announce on Cucumber list, IRC and Twitter.
134
+
135
+ == Note on Patches/Pull Requests
136
+
137
+ * Fork the project.
138
+ * Run rake ragel:rb to generate all the I18n lexers
139
+ * Make your feature addition or bug fix.
140
+ * Add tests for it. This is important so I don't break it in a
141
+ future version unintentionally.
142
+ * Commit, do not mess with Rakefile, VERSION, or History.txt.
143
+ (if you want to have your own version, that is fine but
144
+ bump version in a commit by itself I can ignore when I pull)
145
+ * Send me a pull request. Bonus points for topic branches.
146
+
147
+ == Copyright
148
+
149
+ Copyright (c) 2009-2010 Mike Sassak, Gregory Hnatiuk, Aslak Hellesøy. See LICENSE for details.