bryanl-gherkin 2.11.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. data/.gitattributes +2 -0
  2. data/.mailmap +2 -0
  3. data/.rbenv-gemsets +1 -0
  4. data/.rspec +1 -0
  5. data/.rvmrc +1 -0
  6. data/.travis.yml +16 -0
  7. data/.yardopts +5 -0
  8. data/Gemfile +5 -0
  9. data/History.md +788 -0
  10. data/LICENSE +20 -0
  11. data/README.md +272 -0
  12. data/Rakefile +26 -0
  13. data/build_native_gems.sh +7 -0
  14. data/cucumber.yml +4 -0
  15. data/examples/parse_and_output_json.rb +19 -0
  16. data/features/.cucumber/stepdefs.json +244 -0
  17. data/features/escaped_pipes.feature +8 -0
  18. data/features/feature_parser.feature +237 -0
  19. data/features/json_formatter.feature +498 -0
  20. data/features/json_parser.feature +331 -0
  21. data/features/native_lexer.feature +19 -0
  22. data/features/parser_with_native_lexer.feature +205 -0
  23. data/features/pretty_formatter.feature +16 -0
  24. data/features/step_definitions/eyeball_steps.rb +3 -0
  25. data/features/step_definitions/gherkin_steps.rb +29 -0
  26. data/features/step_definitions/json_formatter_steps.rb +30 -0
  27. data/features/step_definitions/json_parser_steps.rb +20 -0
  28. data/features/step_definitions/pretty_formatter_steps.rb +85 -0
  29. data/features/steps_parser.feature +46 -0
  30. data/features/support/env.rb +42 -0
  31. data/gherkin.gemspec +77 -0
  32. data/install_mingw_os_x.sh +7 -0
  33. data/js/.npmignore +1 -0
  34. data/js/lib/gherkin/lexer/.npmignore +0 -0
  35. data/lib/gherkin.rb +2 -0
  36. data/lib/gherkin/c_lexer.rb +17 -0
  37. data/lib/gherkin/formatter/ansi_escapes.rb +97 -0
  38. data/lib/gherkin/formatter/argument.rb +16 -0
  39. data/lib/gherkin/formatter/escaping.rb +15 -0
  40. data/lib/gherkin/formatter/filter_formatter.rb +146 -0
  41. data/lib/gherkin/formatter/hashable.rb +19 -0
  42. data/lib/gherkin/formatter/json_formatter.rb +122 -0
  43. data/lib/gherkin/formatter/line_filter.rb +26 -0
  44. data/lib/gherkin/formatter/model.rb +281 -0
  45. data/lib/gherkin/formatter/pretty_formatter.rb +244 -0
  46. data/lib/gherkin/formatter/regexp_filter.rb +21 -0
  47. data/lib/gherkin/formatter/step_printer.rb +21 -0
  48. data/lib/gherkin/formatter/tag_count_formatter.rb +47 -0
  49. data/lib/gherkin/formatter/tag_filter.rb +19 -0
  50. data/lib/gherkin/i18n.rb +180 -0
  51. data/lib/gherkin/i18n.yml +613 -0
  52. data/lib/gherkin/js_lexer.rb +20 -0
  53. data/lib/gherkin/json_parser.rb +177 -0
  54. data/lib/gherkin/lexer/i18n_lexer.rb +46 -0
  55. data/lib/gherkin/listener/event.rb +45 -0
  56. data/lib/gherkin/listener/formatter_listener.rb +143 -0
  57. data/lib/gherkin/native.rb +7 -0
  58. data/lib/gherkin/native/java.rb +72 -0
  59. data/lib/gherkin/native/null.rb +5 -0
  60. data/lib/gherkin/native/therubyracer.rb +39 -0
  61. data/lib/gherkin/parser/meta.txt +5 -0
  62. data/lib/gherkin/parser/parser.rb +164 -0
  63. data/lib/gherkin/parser/root.txt +11 -0
  64. data/lib/gherkin/parser/steps.txt +4 -0
  65. data/lib/gherkin/rb_lexer.rb +8 -0
  66. data/lib/gherkin/rb_lexer/README.rdoc +8 -0
  67. data/lib/gherkin/rb_lexer/ar.rb +1165 -0
  68. data/lib/gherkin/rb_lexer/bg.rb +1377 -0
  69. data/lib/gherkin/rb_lexer/bm.rb +1081 -0
  70. data/lib/gherkin/rb_lexer/ca.rb +1305 -0
  71. data/lib/gherkin/rb_lexer/cs.rb +1157 -0
  72. data/lib/gherkin/rb_lexer/cy_gb.rb +1027 -0
  73. data/lib/gherkin/rb_lexer/da.rb +1043 -0
  74. data/lib/gherkin/rb_lexer/de.rb +1151 -0
  75. data/lib/gherkin/rb_lexer/en.rb +1151 -0
  76. data/lib/gherkin/rb_lexer/en_au.rb +971 -0
  77. data/lib/gherkin/rb_lexer/en_lol.rb +929 -0
  78. data/lib/gherkin/rb_lexer/en_pirate.rb +1205 -0
  79. data/lib/gherkin/rb_lexer/en_scouse.rb +1357 -0
  80. data/lib/gherkin/rb_lexer/en_tx.rb +1011 -0
  81. data/lib/gherkin/rb_lexer/eo.rb +990 -0
  82. data/lib/gherkin/rb_lexer/es.rb +1135 -0
  83. data/lib/gherkin/rb_lexer/et.rb +985 -0
  84. data/lib/gherkin/rb_lexer/fi.rb +964 -0
  85. data/lib/gherkin/rb_lexer/fr.rb +1223 -0
  86. data/lib/gherkin/rb_lexer/he.rb +1113 -0
  87. data/lib/gherkin/rb_lexer/hr.rb +1061 -0
  88. data/lib/gherkin/rb_lexer/hu.rb +1113 -0
  89. data/lib/gherkin/rb_lexer/id.rb +958 -0
  90. data/lib/gherkin/rb_lexer/is.rb +1115 -0
  91. data/lib/gherkin/rb_lexer/it.rb +1081 -0
  92. data/lib/gherkin/rb_lexer/ja.rb +1413 -0
  93. data/lib/gherkin/rb_lexer/ko.rb +1097 -0
  94. data/lib/gherkin/rb_lexer/lt.rb +1040 -0
  95. data/lib/gherkin/rb_lexer/lu.rb +1127 -0
  96. data/lib/gherkin/rb_lexer/lv.rb +1161 -0
  97. data/lib/gherkin/rb_lexer/nl.rb +1110 -0
  98. data/lib/gherkin/rb_lexer/no.rb +1055 -0
  99. data/lib/gherkin/rb_lexer/pl.rb +1452 -0
  100. data/lib/gherkin/rb_lexer/pt.rb +1425 -0
  101. data/lib/gherkin/rb_lexer/ro.rb +1159 -0
  102. data/lib/gherkin/rb_lexer/ru.rb +1749 -0
  103. data/lib/gherkin/rb_lexer/sk.rb +1041 -0
  104. data/lib/gherkin/rb_lexer/sr_cyrl.rb +1798 -0
  105. data/lib/gherkin/rb_lexer/sr_latn.rb +1289 -0
  106. data/lib/gherkin/rb_lexer/sv.rb +1065 -0
  107. data/lib/gherkin/rb_lexer/tr.rb +1087 -0
  108. data/lib/gherkin/rb_lexer/uk.rb +1641 -0
  109. data/lib/gherkin/rb_lexer/uz.rb +1371 -0
  110. data/lib/gherkin/rb_lexer/vi.rb +1193 -0
  111. data/lib/gherkin/rb_lexer/zh_cn.rb +1053 -0
  112. data/lib/gherkin/rb_lexer/zh_tw.rb +1047 -0
  113. data/lib/gherkin/rubify.rb +24 -0
  114. data/lib/gherkin/tag_expression.rb +62 -0
  115. data/ragel/lexer.c.rl.erb +454 -0
  116. data/ragel/lexer.java.rl.erb +219 -0
  117. data/ragel/lexer.js.rl.erb +227 -0
  118. data/ragel/lexer.rb.rl.erb +174 -0
  119. data/ragel/lexer_common.rl.erb +50 -0
  120. data/spec/gherkin/c_lexer_spec.rb +22 -0
  121. data/spec/gherkin/fixtures/1.feature +8 -0
  122. data/spec/gherkin/fixtures/comments_in_table.feature +9 -0
  123. data/spec/gherkin/fixtures/complex.feature +45 -0
  124. data/spec/gherkin/fixtures/complex.json +139 -0
  125. data/spec/gherkin/fixtures/complex_for_filtering.feature +60 -0
  126. data/spec/gherkin/fixtures/complex_with_tags.feature +61 -0
  127. data/spec/gherkin/fixtures/dos_line_endings.feature +45 -0
  128. data/spec/gherkin/fixtures/examples_with_only_header.feature +14 -0
  129. data/spec/gherkin/fixtures/hantu_pisang.feature +35 -0
  130. data/spec/gherkin/fixtures/i18n_fr.feature +14 -0
  131. data/spec/gherkin/fixtures/i18n_fr2.feature +8 -0
  132. data/spec/gherkin/fixtures/i18n_no.feature +7 -0
  133. data/spec/gherkin/fixtures/i18n_pt1.feature +44 -0
  134. data/spec/gherkin/fixtures/i18n_pt2.feature +4 -0
  135. data/spec/gherkin/fixtures/i18n_pt3.feature +4 -0
  136. data/spec/gherkin/fixtures/i18n_pt4.feature +4 -0
  137. data/spec/gherkin/fixtures/i18n_zh-CN.feature +9 -0
  138. data/spec/gherkin/fixtures/issue_145.feature +22 -0
  139. data/spec/gherkin/fixtures/scenario_outline_with_tags.feature +13 -0
  140. data/spec/gherkin/fixtures/scenario_without_steps.feature +5 -0
  141. data/spec/gherkin/fixtures/simple_with_comments.feature +7 -0
  142. data/spec/gherkin/fixtures/simple_with_tags.feature +11 -0
  143. data/spec/gherkin/fixtures/with_bom.feature +3 -0
  144. data/spec/gherkin/formatter/ansi_escapes_spec.rb +32 -0
  145. data/spec/gherkin/formatter/filter_formatter_spec.rb +204 -0
  146. data/spec/gherkin/formatter/json_formatter_spec.rb +92 -0
  147. data/spec/gherkin/formatter/model_spec.rb +28 -0
  148. data/spec/gherkin/formatter/pretty_formatter_spec.rb +177 -0
  149. data/spec/gherkin/formatter/spaces.feature +9 -0
  150. data/spec/gherkin/formatter/step_printer_spec.rb +55 -0
  151. data/spec/gherkin/formatter/tabs.feature +9 -0
  152. data/spec/gherkin/formatter/tag_count_formatter_spec.rb +30 -0
  153. data/spec/gherkin/i18n_spec.rb +241 -0
  154. data/spec/gherkin/java_lexer_spec.rb +20 -0
  155. data/spec/gherkin/js_lexer_spec.rb +23 -0
  156. data/spec/gherkin/json_parser_spec.rb +176 -0
  157. data/spec/gherkin/lexer/i18n_lexer_spec.rb +43 -0
  158. data/spec/gherkin/output_stream_string_io.rb +20 -0
  159. data/spec/gherkin/parser/parser_spec.rb +16 -0
  160. data/spec/gherkin/rb_lexer_spec.rb +20 -0
  161. data/spec/gherkin/sexp_recorder.rb +59 -0
  162. data/spec/gherkin/shared/bom_group.rb +20 -0
  163. data/spec/gherkin/shared/doc_string_group.rb +163 -0
  164. data/spec/gherkin/shared/lexer_group.rb +591 -0
  165. data/spec/gherkin/shared/row_group.rb +125 -0
  166. data/spec/gherkin/shared/tags_group.rb +54 -0
  167. data/spec/gherkin/tag_expression_spec.rb +142 -0
  168. data/spec/spec_helper.rb +75 -0
  169. data/tasks/bench.rake +184 -0
  170. data/tasks/bench/feature_builder.rb +49 -0
  171. data/tasks/bench/null_listener.rb +4 -0
  172. data/tasks/compile.rake +120 -0
  173. data/tasks/cucumber.rake +22 -0
  174. data/tasks/gems.rake +31 -0
  175. data/tasks/ikvm.rake +124 -0
  176. data/tasks/ragel_task.rb +100 -0
  177. data/tasks/release.rake +49 -0
  178. data/tasks/rspec.rake +8 -0
  179. data/tasks/yard.rake +7 -0
  180. data/tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  181. data/tasks/yard/default/layout/html/bubble_48x48.png +0 -0
  182. data/tasks/yard/default/layout/html/footer.erb +5 -0
  183. data/tasks/yard/default/layout/html/index.erb +1 -0
  184. data/tasks/yard/default/layout/html/layout.erb +25 -0
  185. data/tasks/yard/default/layout/html/logo.erb +1 -0
  186. data/tasks/yard/default/layout/html/setup.rb +4 -0
  187. metadata +473 -0
@@ -0,0 +1,2 @@
1
+ spec/gherkin/fixtures/dos_line_endings.feature -crlf
2
+ spec/gherkin/fixtures/with_bom.feature -crlf
@@ -0,0 +1,2 @@
1
+ Gregory Hnatiuk <ghnatiuk@gmail.com>
2
+ Mike Sassak <msassak@gmail.com>
@@ -0,0 +1 @@
1
+ cucumber
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm gemset use cucumber
@@ -0,0 +1,16 @@
1
+ rvm:
2
+ - 1.9.3
3
+ - 1.9.2
4
+ - 1.8.7
5
+ - jruby
6
+ # whitelist
7
+ branches:
8
+ only:
9
+ - master
10
+
11
+ notifications:
12
+ email:
13
+ - cukes-devs@googlegroups.com
14
+ irc:
15
+ - "irc.freenode.org#cucumber"
16
+
@@ -0,0 +1,5 @@
1
+ --no-private
2
+ --title Gherkin
3
+ --exclude lib/gherkin/rb_lexer
4
+ lib/**/*.rb -
5
+ README.md History.md LICENSE
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+ gemspec
3
+
4
+ # gem 'cucumber', :path => '../cucumber'
5
+
@@ -0,0 +1,788 @@
1
+ ## [2.11.1](https://github.com/cucumber/gherkin/compare/v2.11.0...v2.11.1)
2
+
3
+ * [JavaScript] Native implementation of JSONFormatter (Aslak Hellesøy)
4
+ * [Core] Add more accurate polish translations. ([#181](https://github.com/cucumber/gherkin/pull/181) Adam Stankiewicz)
5
+
6
+ ## [2.11.0](https://github.com/cucumber/gherkin/compare/v2.10.0...v2.11.0)
7
+
8
+ * [Core] Alias Feature with Business Need and Ability. ([#167](https://github.com/cucumber/gherkin/issues/167) Aslak Hellesøy)
9
+ * [Java] Better exception on bad filter mix. ([#179](https://github.com/cucumber/gherkin/issues/179) Aslak Hellesøy)
10
+ * [Java, Ruby] Formatters don't deal well with things not associated with a step ([#172](https://github.com/cucumber/gherkin/issues/172) David Kowis, Aslak Hellesøy)
11
+ * [Java] Make model classes implement `java.io.Serializable` ([#180](https://github.com/cucumber/gherkin/issues/180) Aslak Hellesøy)
12
+
13
+ ## [2.10.0](https://github.com/cucumber/gherkin/compare/v2.9.3...v2.10.0)
14
+
15
+ * [Core] Added Malay language support. ([#176](https://github.com/cucumber/gherkin/pull/176) Choon Siong)
16
+ * [JRuby] Fixed `I18n.language_table` so that `cucumber --i18n help` works again on JRuby. ([cucumber #272](https://github.com/cucumber/cucumber/issues/272) Aslak Hellesøy)
17
+ * [Java] Line numbers are Integer instead of int or Long (Aslak Hellesøy)
18
+ * [Java, Ruby] Fix for exception when an argument is missing. ([#171](https://github.com/cucumber/gherkin/pull/171) Matt Nathan, Aslak Hellesøy)
19
+
20
+ ## [2.9.3](https://github.com/cucumber/gherkin/compare/v2.9.2...v2.9.3)
21
+
22
+ * [Java] Fixed a bug in PrettyFormatter.setMonochrome(false) (Aslak Hellesøy)
23
+
24
+ ## [2.9.2](https://github.com/cucumber/gherkin/compare/v2.9.1...v2.9.2)
25
+
26
+ * [Java] Ability to PrettyFormatter.setMonochrome(false) post construction (Aslak Hellesøy)
27
+
28
+ ## [2.9.1](https://github.com/cucumber/gherkin/compare/v2.9.0...v2.9.1)
29
+
30
+ * [Java] Package gherkin.jar as OSGi bundle ([#166](https://github.com/cucumber/gherkin/pull/166) Jan Stamer)
31
+ * The build system and instruction has been updated to work on OS X Lion. (Aslak Hellesøy)
32
+
33
+ ## [2.9.0](https://github.com/cucumber/gherkin/compare/v2.8.0...v2.9.0)
34
+
35
+ * Added output to Reporter API (Aslak Hellesøy)
36
+ * Reporter.embedding takes InputStream instead of byte[], which breaks API hence the minor bump. (Aslak Hellesøy)
37
+
38
+ ## [2.8.0](https://github.com/cucumber/gherkin/compare/v2.7.7...v2.8.0)
39
+
40
+ * [Ruby/Java] TagExpression.eval() now takes a list of Tag instead of a list of String. This slightly breaks the API (minor bump), but helps fix some bugs in Cucumber-JVM. (Aslak Hellesøy)
41
+
42
+ ## [2.7.7](https://github.com/cucumber/gherkin/compare/v2.7.6...v2.7.7)
43
+
44
+ * [C] Allow compilation with clang (datanoise)
45
+ * [Ruby] Expose AnsiEscapes methods on the class level as well, for easy calling without inclusion ([#161](https://github.com/cucumber/gherkin/pull/161) Ben Woosley)
46
+ * [Ruby] Lexer load failure fix ([#159](https://github.com/cucumber/gherkin/pull/159) Ben Woosley)
47
+
48
+ ## [2.7.6](https://github.com/cucumber/gherkin/compare/v2.7.5...v2.7.6)
49
+
50
+ * [Java] Previous release accidentally had pretty formatting for both JSONFormatter and JSONPrettyFormatter (Aslak Hellesøy)
51
+
52
+ ## [2.7.5](https://github.com/cucumber/gherkin/compare/v2.7.4...v2.7.5)
53
+
54
+ * [Java] Added Formatter.close() so we can close underlying streams after a call to Formatter.done() (Aslak Hellesøy)
55
+ * [Java] Switched from JSON simple to GSON (Aslak Hellesøy)
56
+ * [Java] Added a JSONPrettyFormatter (Aslak Hellesøy)
57
+
58
+ ## [2.7.4](https://github.com/cucumber/gherkin/compare/v2.7.3...v2.7.4)
59
+
60
+ * Declared json and base64 dependencies as provided so they don't get included in dependant projects (Aslak Hellesøy)
61
+ * Improved Chinese translations ([#155](https://github.com/cucumber/gherkin/pull/155) Riceball LEE)
62
+ * Improved Czech translations ([#154](https://github.com/cucumber/gherkin/pull/154) Konstantin Kudryashov)
63
+
64
+ ## [2.7.3](https://github.com/cucumber/gherkin/compare/v2.7.2...v2.7.3)
65
+
66
+ * [Java] Make sure Result constructed with a Throwable always has a JSON error_message (Aslak Hellesøy)
67
+
68
+ ## [2.7.2](https://github.com/cucumber/gherkin/compare/v2.7.1...v2.7.2)
69
+
70
+ * [Java] Added gherkin.I18n.getAll() (Aslak Hellesøy)
71
+
72
+ ## [2.7.1](https://github.com/cucumber/gherkin/compare/v2.7.0...v2.7.1)
73
+
74
+ 2.7.0 release got hosed
75
+
76
+ ## [2.7.0](https://github.com/cucumber/gherkin/compare/v2.6.9...v2.7.0)
77
+
78
+ ### Changed Features
79
+
80
+ * Formatter.close no longer closes streams. (Alan Parkinson)
81
+ * Formatter.close renamed to Formatter.done. (Aslak Hellesøy)
82
+
83
+ ## [2.6.9](https://github.com/cucumber/gherkin/compare/v2.6.8...v2.6.9)
84
+
85
+ ### Changed Features
86
+
87
+ * Pretty formatter always uses \n for newlines, instead of using platform-specific newline. This makes cross-platform testing less fiddly. (Aslak Hellesøy)
88
+
89
+ ## [2.6.8](https://github.com/cucumber/gherkin/compare/v2.6.7...v2.6.8)
90
+
91
+ ### Changed Features
92
+
93
+ * Steps can be empty. The main reason for this is to allow Cukepatch to show an autocomplete right after a keyword. ([#149](https://github.com/cucumber/gherkin/issues/149) Aslak Hellesøy)
94
+
95
+ ## [2.6.7](https://github.com/cucumber/gherkin/compare/v2.6.6...v2.6.7)
96
+
97
+ ### Bugfixes
98
+
99
+ * Fix bad packaging of NuSpec package. ([#148](https://github.com/cucumber/gherkin/issues/148) Aslak Hellesøy)
100
+
101
+ ## [2.6.6](https://github.com/cucumber/gherkin/compare/v2.6.5...v2.6.6)
102
+
103
+ ### New Features
104
+
105
+ * .NET dll is released as a NuGet package instead of being uploaded to https://github.com/cucumber/gherkin/downloads ([#144](https://github.com/cucumber/gherkin/issues/144), [#147](https://github.com/cucumber/gherkin/pull/147) Jeffrey Cameron, Aslak Hellesøy)
106
+
107
+ ### Changed Features
108
+
109
+ * The lib/gherkin.jar that goes into the JRuby gem contains json-simple and base64 classes instead of separate jars (Aslak Hellesøy)
110
+ * .NET dll, which is based on lib/gherkin.jar also contains json-simple and base64 (Aslak Hellesøy)
111
+ * gherkin jars published to Maven repo do *not* bundle the json-simple and base64 jars. (Aslak Hellesøy)
112
+
113
+ ### Removed Features
114
+
115
+ * IronRuby gems are no longer published. Nobody seems to be using it, and it's too much pain to test. (Aslak Hellesøy)
116
+
117
+ ## [2.6.5](https://github.com/cucumber/gherkin/compare/v2.6.4...v2.6.5)
118
+
119
+ ### Bugfixes
120
+
121
+ * Bad filtering when Scenario Outline+Examples followed by Scenario ([https://github.com/cucumber/gherkin/issues/145](#145) Aslak Hellesøy)
122
+
123
+ ## [2.6.4](https://github.com/cucumber/gherkin/compare/v2.6.3...v2.6.4)
124
+
125
+ ### Changed Features
126
+
127
+ * [Node.js] No more restrictions about what Node.js version this runs on. (Aslak Hellesøy)
128
+
129
+ ## [2.6.3](https://github.com/cucumber/gherkin/compare/v2.6.2...v2.6.3)
130
+
131
+ ### Changed Features
132
+
133
+ * Windows gems are compiled against 1.9.3 instead of 1.9.2. Should still work on 1.9.3. (Aslak Hellesøy)
134
+ * NPM package contains UglifyJS-minified scripts (Aslak Hellesøy)
135
+ * NPM package no longer contains Ace ([#109](https://github.com/cucumber/gherkin/issues/109) Aslak Hellesøy)
136
+ * JavaScript exports for require.js works in non-AMD mode (needed for Ace) (Aslak Hellesøy)
137
+
138
+ ## [2.6.2](https://github.com/cucumber/gherkin/compare/v2.6.1...v2.6.2)
139
+
140
+ ### Changed Features
141
+
142
+ * [Java] Minor internal API changes needed for better arity mismatch reporting in Cucumber-JVM (Aslak Hellesøy)
143
+
144
+ ## [2.6.1](https://github.com/cucumber/gherkin/compare/v2.6.0...v2.6.1)
145
+
146
+ ### Bugfixes
147
+
148
+ * Fixed a regression on 1.8.7 (Aslak Hellesøy)
149
+
150
+ ## [2.6.0](https://github.com/cucumber/gherkin/compare/v2.5.4...v2.6.0)
151
+
152
+ ### Changed Features
153
+
154
+ * JSON formatter must handle multiple features ([#140](https://github.com/cucumber/gherkin/issues/140) Aslak Hellesøy)
155
+
156
+ ### New Features
157
+
158
+ * Identifiers for Gherkin elements ([#131](https://github.com/cucumber/gherkin/issues/131) Matt Wynne, Aslak Hellesøy)
159
+
160
+ ## [2.5.4](https://github.com/cucumber/gherkin/compare/v2.5.3...v2.5.4)
161
+
162
+ ### New Features
163
+ * [Java] Rename/add constants in Match and Result. (Aslak Hellesøy)
164
+
165
+ ## [2.5.3](https://github.com/cucumber/gherkin/compare/v2.5.2...v2.5.3)
166
+
167
+ ### New Features
168
+ * [Java] AnsiEscapes can append to a NiceAppendable. (Aslak Hellesøy)
169
+
170
+ ## [2.5.2](https://github.com/cucumber/gherkin/compare/v2.5.1...v2.5.2)
171
+
172
+ ### New Features
173
+
174
+ * Added synonyms for Portuguese. (Rodrigo Dumont)
175
+ * Added synonyms for Italian. (Alessandro Mencarini)
176
+ * Added synonyms for Spanish. (Nahuel Garbezza)
177
+ * Added synonyms for French. (Julien Biezemans)
178
+
179
+ ## [2.5.1](https://github.com/cucumber/gherkin/compare/v2.5.0...v2.5.1)
180
+
181
+ ### New Features
182
+ * [Java] Omit transient fields in toMap so we have more control over what goes into JSON. (Aslak Hellesøy)
183
+
184
+ ## [2.5.0](https://github.com/cucumber/gherkin/compare/v2.4.21...v2.5.0)
185
+
186
+ ### Changed Features
187
+
188
+ The JSON representation of features has changed. The difference lies in how Doc Strings and Data Tables are represented. Consider the following steps:
189
+
190
+ Given a Data Table:
191
+ | Hipster | Ipsum |
192
+ | Freegan | Vinyl |
193
+ Given a Doc String:
194
+ """
195
+ Hipster
196
+ Ipsum
197
+ """
198
+
199
+ This is now represented in JSON as:
200
+
201
+ "steps": [
202
+ {
203
+ "keyword": "Given ",
204
+ "name": "a Data Table"
205
+ "line": 5,
206
+ "rows": [
207
+ { "cells": ["Hipster", "Ipsum"], "line": 6 },
208
+ { "cells": ["Freegan", "Vinyl"], "line": 7 }
209
+ ]
210
+ },
211
+ {
212
+ "keyword": "Given ",
213
+ "name": "a Doc String"
214
+ "line": 8,
215
+ "doc_string": {
216
+ "value": "Hipster\nIpsum"
217
+ "line": 9,
218
+ "content_type": "plaintext",
219
+ }
220
+ }
221
+ ]
222
+
223
+ Previously it would be represented in JSON as:
224
+
225
+ "steps": [
226
+ {
227
+ "keyword": "Given ",
228
+ "name": "a Data Table"
229
+ "line": 5,
230
+ "multiline_arg": {
231
+ "type": "table"
232
+ "value": [
233
+ { "cells": ["Hipster", "Ipsum"], "line": 6 },
234
+ { "cells": ["Freegan", "Vinyl"], "line": 7 }
235
+ ]
236
+ }
237
+ },
238
+ {
239
+ "keyword": "Given ",
240
+ "name": "a Doc String"
241
+ "line": 8,
242
+ "multiline_arg": {
243
+ "type": "doc_string"
244
+ "value": "Hipster\nIpsum"
245
+ "line": 9,
246
+ "content_type": "plaintext",
247
+ }
248
+ }
249
+ ]
250
+
251
+ ### Bugfixes
252
+ * Java JSONFormatter produces invalid JSON ([#128](https://github.com/cucumber/gherkin/issues/128) Aslak Hellesøy)
253
+ * Missing matches and results in JSONFormatter output ([#129](https://github.com/cucumber/gherkin/issues/129) Aslak Hellesøy)
254
+
255
+ ## [2.4.21](https://github.com/cucumber/gherkin/compare/v2.4.20...v2.4.21)
256
+
257
+ ### Bugfixes
258
+ * Revert json dependency back to >= 1.4.6 since many apps still use old json. (Aslak Hellesøy)
259
+
260
+ ## [2.4.20](https://github.com/cucumber/gherkin/compare/v2.4.18...v2.4.20)
261
+
262
+ (The 2.4.19 release got messed up).
263
+
264
+ ### Bugfixes
265
+
266
+ * Filtering on Examples with 0 or 1 row now works ([from mailing list](http://groups.google.com/group/cukes/browse_thread/thread/3e55777ee29c445c) Aslak Hellesøy)
267
+ * Exclude .gitignore files from packaged gem ([#125](https://github.com/cucumber/gherkin/pull/125) John Hume)
268
+
269
+ ## [2.4.18](https://github.com/cucumber/gherkin/compare/v2.4.17...v2.4.18)
270
+
271
+ ### New Features
272
+
273
+ * Fenced Code Blocks for DocStrings ([#123](https://github.com/cucumber/gherkin/issues/123) Gregory Hnatiuk, Aslak Hellesøy)
274
+
275
+ ## [2.4.17](https://github.com/cucumber/gherkin/compare/v2.4.16...v2.4.17)
276
+
277
+ ### New Features
278
+
279
+ * Jar file is now deployed to Maven central, making installation a little easier (Aslak Hellesøy)
280
+ * Both Ruby and Java API docs are on cukes.info. See README for details. (Aslak Hellesøy)
281
+
282
+ ## [2.4.16](https://github.com/cucumber/gherkin/compare/v2.4.15...v2.4.16)
283
+
284
+ ### New Features
285
+
286
+ * [Java] TagExpression.eval() takes a Collection instead of List. That lets us pass a Set. (Aslak Hellesøy)
287
+
288
+ ## [2.4.15](https://github.com/cucumber/gherkin/compare/v2.4.14...v2.4.15)
289
+
290
+ ### New Features
291
+
292
+ * [Java] Pretty formatter knows how to print deleted (-) or inserted (+) table rows. (Aslak Hellesøy)
293
+
294
+ ## [2.4.14](https://github.com/cucumber/gherkin/compare/v2.4.13...v2.4.14)
295
+
296
+ ### New Features
297
+
298
+ * [Java] Publish source jars to Maven repo (Aslak Hellesøy)
299
+ * [Java] Made NiceAppendable public - it's handy for Cucumber-JVM too (Aslak Hellesøy)
300
+
301
+ ## [2.4.13](https://github.com/cucumber/gherkin/compare/v2.4.12...v2.4.13)
302
+
303
+ No changes, but previous release failed while pushing gems (rubygems.org bug?)
304
+
305
+ ## [2.4.12](https://github.com/cucumber/gherkin/compare/v2.4.11...v2.4.12)
306
+
307
+ ### Bugfixes
308
+
309
+ * [Java] Fixed Maven warnings. (Aslak Hellesøy)
310
+
311
+ ### New Features
312
+
313
+ * [Java] Fixed bug in Result.getErrorMessage() when it was created with a Throwable. (Aslak Hellesøy)
314
+ * [Java] PrettyFormatter and JSONFormatter take Appendable instead of OutputStream/Writer. (Aslak Hellesøy)
315
+
316
+ ### Changed Features
317
+
318
+ * [Java] PrettyFormatter and JSONFormatter no longer flush. Make sure you pass an OutputStream/Writer that autoflushes. (Aslak Hellesøy)
319
+
320
+ ## [2.4.11](https://github.com/cucumber/gherkin/compare/v2.4.10...v2.4.11)
321
+
322
+ ### Bugfixes
323
+
324
+ * Changed rake-compiler version from '~> 1.7.9' to '>= 1.7.9' since the fix in 2.4.10 seemed to have no effect. I hate the Ruby ecosystem today. (Aslak Hellesøy)
325
+
326
+ ## [2.4.10](https://github.com/cucumber/gherkin/compare/v2.4.9...v2.4.10)
327
+
328
+ ### Bugfixes
329
+
330
+ * Changed rake-compiler version from '1.7.9' to '~> 1.7.9' since the fix in 2.4.9 seemed to have no effect. (Aslak Hellesøy)
331
+
332
+ ## [2.4.9](https://github.com/cucumber/gherkin/compare/v2.4.8...v2.4.9)
333
+
334
+ ### Bugfixes
335
+
336
+ * Changed rake-compiler version from '= 1.7.9' to '1.7.9' to work around install problems caused by https://github.com/rubygems/rubygems/pull/121 (Aslak Hellesøy)
337
+
338
+ ## [2.4.8](https://github.com/cucumber/gherkin/compare/v2.4.7...v2.4.8)
339
+
340
+ ### Bugfixes
341
+
342
+ * Remove another awesome_print which was left over from 2.4.7. (Aslak Hellesøy)
343
+ * Make specs/features pass when LANG=C (or LC_CTYPE=C). (#118 Antonio Terceiro, Aslak Hellesøy)
344
+
345
+ ## [2.4.7](https://github.com/cucumber/gherkin/compare/v2.4.6...v2.4.7)
346
+
347
+ ### Bugfixes
348
+
349
+ * Remove awesome_print (which was used for debuging). (Antonio Terceiro)
350
+
351
+ ### New Features
352
+
353
+ * Added I18n.getLocale() to Java impl. (Aslak Hellesøy)
354
+
355
+ ## [2.4.6](https://github.com/cucumber/gherkin/compare/v2.4.5...v2.4.6)
356
+
357
+ ### Bugfixes
358
+ * Added Icelandic translation (Ægir Örn Símonarson)
359
+ * JavaScript: String prototype has no "trimRight" function. Fixes failure in Opera. (Julien Biezemans)
360
+
361
+ ## [2.4.5](https://github.com/cucumber/gherkin/compare/v2.4.4...v2.4.5)
362
+
363
+ No changes, releasing again since the 2.4.4 release failed halfway through.
364
+
365
+ ## [2.4.4](https://github.com/cucumber/gherkin/compare/v2.4.3...v2.4.4)
366
+
367
+ ### Bugfixes
368
+ * JRuby fixes. Symbols and streams are now properly converted before passing from ruby to java. (Aslak Hellesøy)
369
+ * json-simple and base64 jar files (used by some of the java classes) are now embedded in the jruby gem (Aslak Hellesøy)
370
+
371
+ ## [2.4.3](https://github.com/cucumber/gherkin/compare/v2.4.2...v2.4.3)
372
+
373
+ ### Changed Features
374
+ * Added a small hack to the java Result class to work around [Cucumber bug #97](https://github.com/cucumber/cucumber/issues/97) (Aslak Hellesøy)
375
+
376
+ ## [2.4.2](https://github.com/cucumber/gherkin/compare/v2.4.1...v2.4.2)
377
+
378
+ ### Changed Features
379
+ * Formatter and Reporter are now two distinct interfaces. JSONParser takes one of each in ctor. (Aslak Hellesøy)
380
+
381
+ ## [2.4.1](https://github.com/cucumber/gherkin/compare/v2.4.0...v2.4.1)
382
+
383
+ ### New Features
384
+ * None - just updated build system to the latest Cucumber (Aslak Hellesøy)
385
+
386
+ ## [2.4.0](https://github.com/cucumber/gherkin/compare/v2.3.10...v2.4.0)
387
+
388
+ ### Bugfixes
389
+ * Don't use -Werror in production code ([#106](https://github.com/cucumber/gherkin/pull/106) Hans de Graaff)
390
+
391
+ ### New Features
392
+ * YARD based API docs at http://cukes.info/gherkin/api/ruby/latest/ (Aslak Hellesøy)
393
+
394
+ ### Changed Features
395
+ * py_string/PyString changed to doc_string/DocString, ref https://github.com/cucumber/cucumber/issues/74 (Aslak Hellesøy)
396
+
397
+ ## [2.3.10](https://github.com/cucumber/gherkin/compare/v2.3.9...v2.3.10)
398
+
399
+ ### Bugfixes
400
+ * Relax development dependency version on builder. (#105 Aslak Hellesøy).
401
+
402
+ ## [2.3.9](https://github.com/cucumber/gherkin/compare/v2.3.8...v2.3.9)
403
+
404
+ ### New features
405
+ * Javascript lexers support http://requirejs.org/ modules as well as node.js (Aslak Hellesøy).
406
+
407
+ ## [2.3.8](https://github.com/cucumber/gherkin/compare/v2.3.7...v2.3.8)
408
+
409
+ ### Insignificant changes
410
+ * Improve build system so we don't need to add generated js lexers to git.
411
+
412
+ ## [2.3.7](https://github.com/cucumber/gherkin/compare/v2.3.6...v2.3.7)
413
+
414
+ * Removed incorrect (and unneeded) case statement that could blow up if V8 is installed. (Aslak Hellesøy, Niklas H)
415
+ * Added connect support for gherkin.js (Aslak Hellesøy)
416
+
417
+ ## [2.3.6](https://github.com/cucumber/gherkin/compare/v2.3.5...v2.3.6)
418
+
419
+ ### New Features
420
+ * Javascript implementation (#38 Aslak Hellesøy)
421
+
422
+ ### Bugfixes
423
+ * Fix compilation error on Arch Linux (#98,#99 Ben Hamill)
424
+ * Corrected Russian translation (#97 Vagif Abilov)
425
+
426
+ ## [2.3.5](https://github.com/cucumber/gherkin/compare/v2.3.4...v2.3.5)
427
+
428
+ ### Changes
429
+ * Relaxed gem dependencies to use >=. (Rob Slifka, Aslak Hellesøy)
430
+
431
+ ## [2.3.4](https://github.com/cucumber/gherkin/compare/v2.3.3...v2.3.4)
432
+
433
+ ### Changes
434
+ * Fixing C90 errors on Ubuntu Natty (#92 Colin Dean)
435
+ * Romanian (ro) language update, extracted from a real-world project. (Iulian Dogariu)
436
+
437
+ ## [2.3.3](https://github.com/cucumber/gherkin/compare/v2.3.2...v2.3.3)
438
+
439
+ ### Changes
440
+ * No more dependencies on external ANSI escape libraries (Ruby:term-ansicolor, Java:Jansi). DIY is better! (Aslak Hellesøy)
441
+ * Added duration (in millseconds) to Result. (Aslak Hellesøy)
442
+ * Additional Polish aliases (Mike Połtyn)
443
+
444
+ ## [2.3.2](https://github.com/cucumber/gherkin/compare/v2.3.0...v2.3.2)
445
+
446
+ (Somehow 2.3.1 was released improperly shortly after 2.3.0 - not sure what fixes went into that!)
447
+
448
+ ### Bugfixes
449
+ * Preserve whitespace in descriptions. Leading whitespace in descriptions are stripped upto preceding keyword + 2 spaces (#87 Matt Wynne, Gregory Hnatiuk, Aslak Hellesøy)
450
+ * Fix incorrect indentation of Examples descriptions (Gregory Hnatiuk)
451
+ * Can't define new line characters in Example Table Cell's Content. (#85 George Montana Harkin, Aslak Hellesøy)
452
+
453
+ ## [2.3.0](https://github.com/cucumber/gherkin/compare/v2.2.9...v2.3.0)
454
+
455
+ ### New Features
456
+ * New aliases for Scenario Outline in Swedish, Norwegian and English. (Peter Krantz, Aslak Hellesøy)
457
+ * Improved build documentation for people who want to contribute. (Aslak Hellesøy)
458
+ * Results can now be outputted/parsed in JSON. (Aslak Hellesøy)
459
+ * JSON output now contains optional "match", "result" and "embeddings" elements underneath each step. (Aslak Hellesøy)
460
+ * Added support for Base64 encoded embeddings in JSON representation. Useful for screenshots etc. (Aslak Hellesøy)
461
+
462
+ ## [2.2.9](https://github.com/cucumber/gherkin/compare/v2.2.8...v2.2.9)
463
+
464
+ ### New Features
465
+ * PrettyFormatter can format features both with and without ANSI Colors. Using Jansi on Java. (Aslak Hellesøy)
466
+ * Extended Java Formatter API with a steps(List<Step>) method for better reporting in Java (Aslak Hellesøy)
467
+
468
+ ## [2.2.8](https://github.com/cucumber/gherkin/compare/v2.2.7...v2.2.8)
469
+
470
+ ### Removed Features
471
+ * Trollop based CLI - didn't find a good use for it yet. (Aslak Hellesøy)
472
+
473
+ ## [2.2.7](https://github.com/cucumber/gherkin/compare/v2.2.6...v2.2.7)
474
+
475
+ ### Bugfixes
476
+ * I18n.getCodeKeywords() on Java didn't strip '!'. Not anymore. (Aslak Hellesøy)
477
+
478
+ ## [2.2.6](https://github.com/cucumber/gherkin/compare/v2.2.5...v2.2.6)
479
+
480
+ ### Bugfixes
481
+ * I18n.getCodeKeywords() on Java included '*'. Not anymore. (Aslak Hellesøy)
482
+
483
+ ## [2.2.5](https://github.com/cucumber/gherkin/compare/v2.2.4...v2.2.5)
484
+
485
+ ### New Features
486
+ * Gherkin will scan all top comments for the language comment. (Aslak Hellesøy)
487
+
488
+ ## [2.2.4](https://github.com/cucumber/gherkin/compare/v2.2.3...v2.2.4)
489
+
490
+ ### Bugfixes
491
+ * C99 features used by gherkin code (#75 Graham Agnew)
492
+
493
+ ## [2.2.3](https://github.com/cucumber/gherkin/compare/v2.2.2...v2.2.3)
494
+
495
+ ### Bugfixes
496
+ * Add back missing development dependency on cucumber (Aslak Hellesøy)
497
+
498
+ ## [2.2.2](https://github.com/cucumber/gherkin/compare/v2.2.1...v2.2.2)
499
+
500
+ ### New Features
501
+ * Use json instead of json_pure (Aslak Hellesøy)
502
+ * JSON formatter and parser can now omit JSON serialization (for speed) and work directly on objects (Aslak Hellesøy)
503
+
504
+ ## [2.2.1](https://github.com/cucumber/gherkin/compare/v2.2.0...v2.2.1)
505
+
506
+ ### New Features
507
+ * 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)
508
+
509
+ ### Changed features
510
+ * Build system no longer uses Jeweler - only Rake, Bundler and Rubygems (Aslak Hellesøy)
511
+
512
+ ## [2.2.0](https://github.com/cucumber/gherkin/compare/v2.1.5...v2.2.0)
513
+
514
+ This release breaks some APIs since the previous 2.1.5 release. If you install gherkin 2.2.0 you must also upgrade to
515
+ Cucumber 0.9.0.
516
+
517
+ ### Bugfixes
518
+ * I18nLexer doesn't recognise language header with \r\n on OS X. (#70 Aslak Hellesøy)
519
+
520
+ ### New Features
521
+ * Pure Java FilterFormatter. (Aslak Hellesøy)
522
+ * Pure Java JSONFormatter. (Aslak Hellesøy)
523
+
524
+ ### Changed Features
525
+ * All formatter events take exactly one argument. Each argument is a single object with all data. (Aslak Hellesøy)
526
+ * Several java classes have moved to a different package in order to improve separation of concerns. (Aslak Hellesøy)
527
+
528
+ ## [2.1.5](https://github.com/cucumber/gherkin/compare/v2.1.4...v2.1.5)
529
+
530
+ ### Bugfixes
531
+ * Line filter works on JRuby with Scenarios without steps. (Aslak Hellesøy)
532
+
533
+ ### Changed Features
534
+ * The JSON schema now puts background inside the "elements" Array. Makes parsing simpler. (Aslak Hellesøy)
535
+
536
+ ## [2.1.4](https://github.com/cucumber/gherkin/compare/v2.1.3...v2.1.4)
537
+
538
+ ### Bugfixes
539
+ * #steps fails on JRuby with 2.1.3 (#68 Aslak Hellesøy)
540
+
541
+ ## [2.1.3](https://github.com/cucumber/gherkin/compare/v2.1.2...v2.1.3)
542
+
543
+ ### Bugfixes
544
+ * Examples are not cleared when an ignored Scenario Outline/Examples is followed by a Scenario. (#67 Aslak Hellesøy)
545
+
546
+ ## [2.1.2](https://github.com/cucumber/gherkin/compare/v2.1.1...v2.1.2)
547
+
548
+ ### Bugfixes
549
+ * Fix some missing require statements that surfaced when gherkin was used outside Cucumber. (Aslak Hellesøy)
550
+
551
+ ## [2.1.1](https://github.com/cucumber/gherkin/compare/v2.1.0...v2.1.1)
552
+
553
+ The previous release had a missing gherkin.jar in the jruby gem. This release fixes that. For good this time!
554
+
555
+ ## [2.1.0](https://github.com/cucumber/gherkin/compare/v2.0.2...v2.1.0)
556
+
557
+ ### New Features
558
+ * Pirate! (anteaya)
559
+ * Tag limits for negative tags (Aslak Hellesøy)
560
+
561
+ ### Changed Features
562
+ * The formatter API has changed and the listener API is now only used internally. (Aslak Hellesøy)
563
+
564
+ ### Removed Features
565
+ * FilterListener has been replaced with FilterFormatter. Currently only in Ruby (no Java impl yet). (Aslak Hellesøy)
566
+
567
+ ## [2.0.2](https://github.com/cucumber/gherkin/compare/v2.0.1...v2.0.2)
568
+
569
+ ### New Features
570
+ * New JSON Lexer. (Gregory Hnatiuk)
571
+
572
+ ### Bugfixes
573
+ * Fixed incorrect indentation for descriptions in Java. (Aslak Hellesøy)
574
+ * Fixed support for xx-yy languages and Hebrew and Indonesian (JDK bugs). (Aslak Hellesøy)
575
+
576
+ ### Changed Features
577
+ * Examples are now nested inside the Scenario Outline in the JSON format. (Gregory Hnatiuk)
578
+
579
+ ## [2.0.1](https://github.com/cucumber/gherkin/compare/v2.0.0...v2.0.1)
580
+
581
+ The previous release had a missing gherkin.jar in the jruby gem. This release fixes that.
582
+
583
+ ## [2.0.0](https://github.com/cucumber/gherkin/compare/v1.0.30...v2.0.0)
584
+
585
+ We're breaking the old listener API in this release, and added a new JSON formatter,
586
+ which calls for a new major version.
587
+
588
+ ### New Features
589
+ * New JSON formatter. (Aslak Hellesøy, Joseph Wilk)
590
+ * New synonyms for Hungarian (Bence Golda)
591
+ * Upgraded to use RSpec 2.0.0 (Aslak Hellesøy)
592
+
593
+ ### Bugfixes
594
+ * undefined method `<=>' on JRuby (#52 Aslak Hellesøy)
595
+ * Include link to explanation of LexingError (Mike Sassak)
596
+
597
+ ### Changed Features
598
+ * The formatter API has completely changed. There is a Gherkin Listener API and a Formatter API.
599
+ The FormatterListener acts as an adapter between them. (Aslak Hellesøy)
600
+ * The listener API now has an additional argument for description (text following the first line of Feature:, Scenario: etc.) (Gregroy Hnatiuk, Matt Wynne)
601
+
602
+ ## [1.0.30](https://github.com/cucumber/gherkin/compare/v1.0.29...v1.0.30)
603
+
604
+ ### New Features
605
+ * Native gems for IronRuby. Bundles IKVM OpenJDK dlls as well as ikvmc-compiled gherkin.dll. Experimental! (Aslak Hellesøy)
606
+
607
+ ## [1.0.29](https://github.com/cucumber/gherkin/compare/v1.0.28...v1.0.29)
608
+
609
+ ### Bugfixes
610
+ * Use I18n.class' class loader instead of context class loader to load Java lexers. Hoping this fixes loading bug for good. (Aslak Hellesøy)
611
+
612
+ ## [1.0.28](https://github.com/cucumber/gherkin/compare/v1.0.27...v1.0.28)
613
+
614
+ ### Bugfixes
615
+ * Use context class loader instead of boot class loader to load Java lexers. (Aslak Hellesøy)
616
+ * Only add gcc flags when the compiler is gcc. (#60 Aslak Hellesøy, Christian Höltje)
617
+
618
+ ## [1.0.27](https://github.com/cucumber/gherkin/compare/v1.0.26...v1.0.27)
619
+
620
+ ### New Features
621
+ * Table cells can now contain escaped bars - \| and escaped backslashes - \\. (#48. Gregory Hnatiuk, Aslak Hellesøy)
622
+ * Luxemburgish (lu) added. (Christoph König)
623
+
624
+ ## [1.0.26](https://github.com/cucumber/gherkin/compare/v1.0.25...v1.0.26)
625
+
626
+ ### New Features
627
+ * Ignore the BOM that many retarded Windows editors insist on sticking in the beginning of a file. (Aslak Hellesøy)
628
+
629
+ ## [1.0.25](https://github.com/cucumber/gherkin/compare/v1.0.24...v1.0.25)
630
+
631
+ ### Bugfixes
632
+ * Allow fallback to a slower ruby lexer if the C lexer can't be loaded for some reason.
633
+ * Can't run specs in gherkin 1.0.24 (#59 Aslak Hellesøy)
634
+
635
+ ## [1.0.24](https://github.com/cucumber/gherkin/compare/v1.0.23...v1.0.24)
636
+
637
+ ### Bugfixes
638
+ * hard tabs crazy indentation for pystrings in formatter (#55 Aslak Hellesøy)
639
+
640
+ ## [1.0.23](https://github.com/cucumber/gherkin/compare/v1.0.22...v1.0.23)
641
+
642
+ ### Changed Features
643
+ * Java API now uses camelCased method names instead of underscored (more Java-like) (Aslak Hellesøy)
644
+
645
+ ## [1.0.22](https://github.com/cucumber/gherkin/compare/v1.0.21...v1.0.22)
646
+
647
+ ### Bugfixes
648
+ * Make prebuilt binaries work on both Ruby 1.8.x and 1.9.x on Windows (#54 Luis Lavena, Aslak Hellesøy)
649
+
650
+ ## [1.0.21](https://github.com/cucumber/gherkin/compare/v1.0.20...v1.0.21)
651
+
652
+ ### Bugfixes
653
+ * Fix compile warning on ruby 1.9.2dev (2009-07-18 trunk 24186) (#53 Aslak Hellesøy)
654
+
655
+ ## [1.0.20](https://github.com/cucumber/gherkin/compare/v1.0.19...v1.0.20)
656
+
657
+ ### Bugfixes
658
+ * The gherkin CLI is working again (Gregory Hnatiuk)
659
+
660
+ ## [1.0.19](https://github.com/cucumber/gherkin/compare/v1.0.18...v1.0.19)
661
+
662
+ ### New Features
663
+ * Works with JRuby 1.5.0.RC1 (Aslak Hellesøy)
664
+
665
+ ### Changed Features
666
+ * I18n.code_keywords now return And and But as well, making Cucumber StepDefs a little more flexible (Aslak Hellesøy)
667
+
668
+ ## [1.0.18](https://github.com/cucumber/gherkin/compare/v1.0.17...v1.0.18)
669
+
670
+ ### Bugfixes
671
+ * Explicitly use UTF-8 encoding when scanning source with Java lexer. (Aslak Hellesøy)
672
+
673
+ ## [1.0.17](https://github.com/cucumber/gherkin/compare/v1.0.16...v1.0.17)
674
+
675
+ ### Bugfixes
676
+ * Gherkin::I18n.keyword_regexp was broken (used for 3rd party code generation). (#51 Aslak Hellesøy)
677
+
678
+ ## [1.0.16](https://github.com/cucumber/gherkin/compare/v1.0.15...v1.0.16)
679
+ (Something went wrong when releasing 1.0.15)
680
+
681
+ ### Bugfixes
682
+ * Reduced risk of halfway botched releases. (Aslak Hellesøy)
683
+
684
+ ## [1.0.15](https://github.com/cucumber/gherkin/compare/v1.0.14...v1.0.15)
685
+
686
+ ### New Features
687
+ * Implemented more functionality in I18n.java. (Aslak Hellesøy)
688
+
689
+ ### Changed Features
690
+ * Java methods are no longer throwing Exception (but RuntimeException). (Aslak Hellesøy)
691
+
692
+ ## [1.0.14](https://github.com/cucumber/gherkin/compare/v1.0.13...v1.0.14)
693
+ (Something went wrong when releasing 1.0.13)
694
+
695
+ ## [1.0.13](https://github.com/cucumber/gherkin/compare/v1.0.12...v1.0.13)
696
+
697
+ ### New Features
698
+ * Filter on Background name. (Aslak Hellesøy)
699
+
700
+ ## [1.0.12](https://github.com/cucumber/gherkin/compare/v1.0.11...v1.0.12)
701
+
702
+ ### Bugfixes
703
+ * Fixed incorrect filtering of pystring in Background. (Mike Sassak)
704
+
705
+ ## [1.0.11](https://github.com/cucumber/gherkin/compare/v1.0.10...v1.0.11)
706
+
707
+ ### Bugfixes
708
+ * Fixed bad packaging (C files were not packaged in POSIX gem)
709
+
710
+ ## [1.0.10](https://github.com/cucumber/gherkin/compare/v1.0.09...v1.0.10)
711
+
712
+ ### New Features
713
+ * Added Esperanto and added a Russian synonym for Feature. (Antono Vasiljev)
714
+ * Pure Java implementation of FilterListener and TagExpression (Mike Gaffney, Aslak Hellesøy)
715
+
716
+ ### Changed Features
717
+ * TagExpression takes array args instead of varargs. (Aslak Hellesøy)
718
+
719
+ ## [1.0.9](https://github.com/cucumber/gherkin/compare/v1.0.8...v1.0.9)
720
+
721
+ ### Bugfixes
722
+ * Triple escaped quotes (\"\"\") in PyStrings are unescaped to """. (Aslak Hellesøy)
723
+
724
+ ## [1.0.8](https://github.com/cucumber/gherkin/compare/v1.0.7...v1.0.8)
725
+
726
+ ### Bugfixes
727
+ * Removed illegal comma from Ukrainian synonym. (Aslak Hellesøy)
728
+
729
+ ## [1.0.7](https://github.com/cucumber/gherkin/compare/v1.0.6...v1.0.7)
730
+
731
+ ### Bugfixes
732
+ * Fixed problems with packaging of 1.0.6 release. (Aslak Hellesøy)
733
+
734
+ ## [1.0.6](https://github.com/cucumber/gherkin/compare/v1.0.5...v1.0.6)
735
+
736
+ ### New Features
737
+ * Fully automated release process. (Aslak Hellesøy)
738
+
739
+ ### Changed Features
740
+ * Made generated classes use a more uniform naming convention. (Aslak Hellesøy)
741
+
742
+ ### Removed Features
743
+ * Removed C# port, obsoleted by IKVM build from 1.0.5. (Aslak Hellesøy)
744
+
745
+ ## [1.0.5](https://github.com/cucumber/gherkin/compare/v1.0.4...v1.0.5)
746
+
747
+ ### New Features
748
+ * New .NET build of gherkin - an ikvmc build of gherkin.jar to gherkin.dll. (Aslak Hellesøy)
749
+
750
+ ### Bugfixes
751
+ * Made parsers reusable so that the same instance can parse several features. (Aslak Hellesøy)
752
+
753
+ ## [1.0.4](https://github.com/cucumber/gherkin/compare/v1.0.3...v1.0.4)
754
+
755
+ ### New features
756
+ * Pure java releases of Gherkin at http://cukes.info/maven
757
+ * A FilterListener in Ruby that is the last missing piece to plug Gherkin into Cucumber. (Gregory Hnatiuk, Aslak Hellesøy, Matt Wynne, Mike Sassak)
758
+
759
+ ### Changed features
760
+ * The Lexer now emits the '@' for tags. (Aslak Hellesøy)
761
+
762
+ ## [1.0.3](https://github.com/cucumber/gherkin/compare/v1.0.2...v1.0.3)
763
+
764
+ ### Bugfixes
765
+ * The C lexer correctly instantiates a new array for each table, instead of reusing the old one. (Aslak Hellesøy)
766
+ * Emit keywords with space instead of stripping (< keywords are emmitted without space) (Aslak Hellesøy)
767
+ * gherkin reformat now prints comments, and does it with proper indentation (Aslak Hellesøy)
768
+ * .NET resource files are now automatically copied into the .dll (#46 Aslak Hellesøy)
769
+
770
+ ### New features
771
+ * The Pure Java implementation now has a simple main method that pretty prints a feature. (#39 Aslak Hellesøy)
772
+ * Writing code generated i18n syntax highlighters for Gherkin is a lot easier thanks to several convenience methods in Gherkin::I18n. (Aslak Hellesøy)
773
+ * .NET (C#) port (#36, #37 Attila Sztupak)
774
+ * Tables parsed and sent by row rather than by table. (Mike Sassak)
775
+
776
+ ### Changed features
777
+ * Switced to ISO 639-1 (language) and ISO 3166 alpha-2 (region - if applicable). Applies to Catalan,
778
+ Swedish, Welsh, Romanian and Serbian. (Aslak Hellesøy)
779
+
780
+ ## [1.0.2](https://github.com/cucumber/gherkin/compare/v1.0.1...v1.0.2)
781
+
782
+ ### Bugfixes
783
+ * Build passes on Ruby 1.9.2 (Aslak Hellesøy)
784
+
785
+ ### New features
786
+ * New command line based on trollop. Commands: reformat, stats. (Aslak Hellesøy)
787
+ * I18nLexer#scan sets #language to the I18n for the language scanned (Mike Sassak)
788
+ * I18n#adverbs, brings I18n to parity with Cucumber::Parser::NaturalLanguage (Mike Sassak)