cuke_modeler 3.26.0 → 3.28.0

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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +579 -563
  3. data/LICENSE.txt +22 -22
  4. data/README.md +135 -135
  5. data/cuke_modeler.gemspec +59 -58
  6. data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +13 -13
  7. data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +13 -13
  8. data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +13 -13
  9. data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +13 -13
  10. data/lib/cuke_modeler/adapters/gherkin_14_adapter.rb +13 -13
  11. data/lib/cuke_modeler/adapters/gherkin_15_adapter.rb +13 -13
  12. data/lib/cuke_modeler/adapters/gherkin_16_adapter.rb +13 -13
  13. data/lib/cuke_modeler/adapters/gherkin_17_adapter.rb +13 -13
  14. data/lib/cuke_modeler/adapters/gherkin_18_adapter.rb +27 -27
  15. data/lib/cuke_modeler/adapters/gherkin_19_adapter.rb +64 -64
  16. data/lib/cuke_modeler/adapters/gherkin_20_adapter.rb +359 -359
  17. data/lib/cuke_modeler/adapters/gherkin_21_adapter.rb +13 -13
  18. data/lib/cuke_modeler/adapters/gherkin_22_adapter.rb +13 -13
  19. data/lib/cuke_modeler/adapters/gherkin_23_adapter.rb +13 -13
  20. data/lib/cuke_modeler/adapters/gherkin_24_adapter.rb +13 -13
  21. data/lib/cuke_modeler/adapters/gherkin_25_adapter.rb +13 -13
  22. data/lib/cuke_modeler/adapters/gherkin_26_adapter.rb +13 -13
  23. data/lib/cuke_modeler/adapters/gherkin_27_adapter.rb +13 -13
  24. data/lib/cuke_modeler/adapters/gherkin_28_adapter.rb +13 -13
  25. data/lib/cuke_modeler/adapters/gherkin_29_adapter.rb +13 -13
  26. data/lib/cuke_modeler/adapters/gherkin_30_adapter.rb +13 -13
  27. data/lib/cuke_modeler/adapters/gherkin_31_adapter.rb +13 -13
  28. data/lib/cuke_modeler/adapters/gherkin_32_adapter.rb +13 -13
  29. data/lib/cuke_modeler/adapters/gherkin_33_adapter.rb +13 -13
  30. data/lib/cuke_modeler/adapters/gherkin_34_adapter.rb +13 -13
  31. data/lib/cuke_modeler/adapters/gherkin_35_adapter.rb +13 -13
  32. data/lib/cuke_modeler/adapters/gherkin_36_adapter.rb +13 -13
  33. data/lib/cuke_modeler/adapters/gherkin_37_adapter.rb +13 -0
  34. data/lib/cuke_modeler/adapters/gherkin_38_adapter.rb +13 -0
  35. data/lib/cuke_modeler/adapters/gherkin_9_adapter.rb +375 -375
  36. data/lib/cuke_modeler/adapters/gherkin_base_adapter.rb +17 -17
  37. data/lib/cuke_modeler/containing.rb +105 -105
  38. data/lib/cuke_modeler/described.rb +71 -71
  39. data/lib/cuke_modeler/models/background.rb +122 -122
  40. data/lib/cuke_modeler/models/cell.rb +88 -88
  41. data/lib/cuke_modeler/models/comment.rb +82 -82
  42. data/lib/cuke_modeler/models/directory.rb +143 -143
  43. data/lib/cuke_modeler/models/doc_string.rb +104 -104
  44. data/lib/cuke_modeler/models/example.rb +274 -274
  45. data/lib/cuke_modeler/models/feature.rb +200 -200
  46. data/lib/cuke_modeler/models/feature_file.rb +116 -116
  47. data/lib/cuke_modeler/models/model.rb +87 -87
  48. data/lib/cuke_modeler/models/outline.rb +145 -145
  49. data/lib/cuke_modeler/models/row.rb +104 -104
  50. data/lib/cuke_modeler/models/rule.rb +162 -162
  51. data/lib/cuke_modeler/models/scenario.rb +128 -128
  52. data/lib/cuke_modeler/models/step.rb +178 -178
  53. data/lib/cuke_modeler/models/table.rb +117 -117
  54. data/lib/cuke_modeler/models/tag.rb +75 -75
  55. data/lib/cuke_modeler/named.rb +26 -26
  56. data/lib/cuke_modeler/nested.rb +61 -61
  57. data/lib/cuke_modeler/parsed.rb +24 -24
  58. data/lib/cuke_modeler/parsing.rb +208 -208
  59. data/lib/cuke_modeler/sourceable.rb +29 -29
  60. data/lib/cuke_modeler/stepped.rb +34 -34
  61. data/lib/cuke_modeler/taggable.rb +57 -57
  62. data/lib/cuke_modeler/version.rb +4 -4
  63. data/lib/cuke_modeler.rb +32 -32
  64. data/testing/cucumber/features/analysis/step_comparison.feature +25 -25
  65. data/testing/cucumber/features/analysis/test_comparison.feature +35 -35
  66. data/testing/cucumber/features/modeling/background_modeling.feature +105 -105
  67. data/testing/cucumber/features/modeling/background_output.feature +60 -60
  68. data/testing/cucumber/features/modeling/cell_modeling.feature +68 -68
  69. data/testing/cucumber/features/modeling/cell_output.feature +36 -36
  70. data/testing/cucumber/features/modeling/comment_modeling.feature +62 -62
  71. data/testing/cucumber/features/modeling/comment_output.feature +40 -40
  72. data/testing/cucumber/features/modeling/directory_modeling.feature +62 -62
  73. data/testing/cucumber/features/modeling/directory_output.feature +33 -33
  74. data/testing/cucumber/features/modeling/doc_string_modeling.feature +85 -85
  75. data/testing/cucumber/features/modeling/doc_string_output.feature +50 -50
  76. data/testing/cucumber/features/modeling/example_modeling.feature +155 -155
  77. data/testing/cucumber/features/modeling/example_output.feature +57 -57
  78. data/testing/cucumber/features/modeling/feature_file_modeling.feature +49 -49
  79. data/testing/cucumber/features/modeling/feature_file_output.feature +33 -33
  80. data/testing/cucumber/features/modeling/feature_modeling.feature +149 -149
  81. data/testing/cucumber/features/modeling/feature_output.feature +144 -144
  82. data/testing/cucumber/features/modeling/model_output.feature +61 -61
  83. data/testing/cucumber/features/modeling/model_structure.feature +42 -42
  84. data/testing/cucumber/features/modeling/outline_modeling.feature +175 -175
  85. data/testing/cucumber/features/modeling/outline_output.feature +87 -87
  86. data/testing/cucumber/features/modeling/row_modeling.feature +70 -70
  87. data/testing/cucumber/features/modeling/row_output.feature +40 -40
  88. data/testing/cucumber/features/modeling/rule_modeling.feature +171 -171
  89. data/testing/cucumber/features/modeling/rule_output.feature +136 -136
  90. data/testing/cucumber/features/modeling/scenario_modeling.feature +146 -146
  91. data/testing/cucumber/features/modeling/scenario_output.feature +63 -63
  92. data/testing/cucumber/features/modeling/step_modeling.feature +105 -105
  93. data/testing/cucumber/features/modeling/step_output.feature +47 -47
  94. data/testing/cucumber/features/modeling/table_modeling.feature +73 -73
  95. data/testing/cucumber/features/modeling/table_output.feature +42 -42
  96. data/testing/cucumber/features/modeling/tag_modeling.feature +62 -62
  97. data/testing/cucumber/features/modeling/tag_output.feature +40 -40
  98. metadata +24 -11
data/CHANGELOG.md CHANGED
@@ -1,563 +1,579 @@
1
- # Changelog
2
- All notable changes to this project will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
-
7
- ## [Unreleased]
8
-
9
- Nothing yet...
10
-
11
-
12
- ## [3.26.0] - 2025-11-11
13
-
14
- ### Added
15
- - Support added for more versions of the `cucumber-gherkin` gem
16
- - 34.x
17
- - 35.x
18
- - 36.x
19
-
20
-
21
- ## [3.25.0] - 2025-07-15
22
-
23
- ### Added
24
- - Support added for more versions of the `cucumber-gherkin` gem
25
- - 33.x
26
-
27
-
28
- ## [3.24.0] - 2025-02-24
29
-
30
- ### Added
31
- - Support added for more versions of the `cucumber-gherkin` gem
32
- - 31.x
33
- - 32.x
34
-
35
-
36
- ## [3.23.0] - 2024-10-31
37
-
38
- ### Added
39
- - Support added for more versions of the `cucumber-gherkin` gem
40
- - 30.x
41
-
42
-
43
- ## [3.22.0] - 2024-10-01
44
-
45
- ### Added
46
- - Support added for more versions of the `cucumber-gherkin` gem
47
- - 29.x
48
-
49
-
50
- ## [3.21.0] - 2024-03-11
51
-
52
- ### Added
53
- - Support added for more versions of the `cucumber-gherkin` gem
54
- - 28.x
55
-
56
-
57
- ## [3.20.1] - 2023-10-16
58
-
59
- ### Changed
60
- - Finally made various parts of the codebase private in the Ruby sense of the word instead of only
61
- being marked as private by comments. Not a breaking change because the stuff was already declared to
62
- be not part of the public API.
63
-
64
- - Improved code documentation by making more use of YARD tags.
65
-
66
-
67
- ## [3.20.0] - 2023-9-21
68
-
69
- ### Added
70
- - Support added for more versions of the `cucumber-gherkin` gem
71
- - 27.x
72
-
73
- ### Changed
74
- - `#inspect` for models now returns a reasonably small set of details for the model instead of the potentially
75
- huge screen dump of information. Not considered a breaking change because the API never specified the behavior
76
- of `#inspect` (it was just using the default Ruby implementation). Default Ruby inspection can still be triggered,
77
- if desired (see documentation).
78
-
79
- ## [3.19.0] - 2023-1-22
80
-
81
- ### Added
82
- - Support added for more versions of the `cucumber-gherkin` gem
83
- - 26.x
84
-
85
- ## [3.18.0] - 2022-11-16
86
-
87
- ### Added
88
- - Support added for more versions of the `cucumber-gherkin` gem
89
- - 25.x
90
-
91
- ## [3.17.0] - 2022-06-14
92
-
93
- ### Added
94
- - Support added for more versions of the `cucumber-gherkin` gem
95
- - 24.x
96
-
97
- ## [3.16.0] - 2022-05-30
98
-
99
- ### Added
100
- - Support added for more versions of the `cucumber-gherkin` gem
101
- - 23.x
102
-
103
- ## [3.15.0] - 2021-11-27
104
-
105
- ### Added
106
- - The language of a feature (e.g. 'en', 'hi', 'zh-CN', etc.) is now a modeled attribute on `Feature` models.
107
-
108
- ## [3.14.0] - 2021-11-22
109
-
110
- ### Added
111
- - All models for Gherkin elements now track the column number from which they originate in a source file.
112
-
113
- ## [3.13.0] - 2021-09-25
114
-
115
- ### Added
116
- - Support added for more versions of the `cucumber-gherkin` gem
117
- - 22.x
118
-
119
- ## [3.12.0] - 2021-09-09
120
-
121
- ### Added
122
- - Support added for more versions of the `cucumber-gherkin` gem
123
- - 21.x
124
-
125
- ## [3.11.0] - 2021-07-31
126
-
127
- ### Added
128
- - Support added for more versions of the `cucumber-gherkin` gem
129
- - 20.x
130
-
131
- ### Fixed
132
- - `Rule` models are now returnable from `Model#get_ancestor()`. Updating that method was missed when `Rule` models
133
- were first added.
134
-
135
- ## [3.10.0] - 2021-05-28
136
-
137
- ### Added
138
- - Support added for more versions of the `cucumber-gherkin` gem
139
- - 19.x
140
-
141
- ### Fixed
142
- - `Rule` models now clear out parsing data for their tags. This data was an unintentional duplication of the
143
- parsing data that the `Tag` models already contained.
144
-
145
-
146
- ## [3.9.0] - 2021-04-23
147
-
148
- ### Added
149
- - `Rule` models are now taggable elements
150
-
151
-
152
- ## [3.8.0] - 2021-04-18
153
-
154
- ### Added
155
- - Support added for more versions of the `cucumber-gherkin` gem
156
- - 18.x
157
-
158
-
159
- ## [3.7.0] - 2021-02-18
160
-
161
- ### Added
162
- - Support added for more versions of the `cucumber-gherkin` gem
163
- - 17.x
164
-
165
-
166
- ## [3.6.0] - 2021-01-05
167
-
168
- ### Added
169
- - Ruby 3.x is now supported
170
- - All models are now `Enumerable`. However, some methods such as `Enumerable#max` and `Enumerable#sort` do not work
171
- because models do not meaningfully compare to each other.
172
-
173
- ### Deprecated
174
- - `Model#each_descendant` and `Model#each_model` will be removed on the next major release. `Model#each` and methods in
175
- the `Enumerable` module now provide this kind of functionality.
176
-
177
- ### Fixed
178
- - `Row#children` now returns the row's `Cell` models instead of returning an empty array
179
-
180
-
181
- ## [3.5.0] - 2020-12-19
182
-
183
- ### Added
184
- - Support added for more versions of the `cucumber-gherkin` gem
185
- - 16.x
186
-
187
- ## [3.4.0] - 2020-09-02
188
-
189
- ### Added
190
- - `Feature#has_background?` and `Rule#has_background?` now both have a more conventional name via the alias `#background?`
191
-
192
- ## [3.3.0] - 2020-08-15
193
-
194
- ### Added
195
- - Support added for more versions of the `cucumber-gherkin` gem
196
- - 15.x
197
-
198
- ## [3.2.0] - 2020-07-27
199
-
200
- ### Added
201
- - The `Rule` keyword is now a modeled element.
202
-
203
- ### Deprecated
204
- - `Feature#test_case_count` will be removed on the next major release. It's a random analysis method in what is
205
- otherwise a purely abstraction layer library. The [CQL](https://github.com/enkessler/cql) gem is better suited to such tasks.
206
-
207
- ## [3.1.0] - 2020-06-28
208
-
209
- ### Added
210
- - Support added for more versions of the `cucumber-gherkin` gem
211
- - 14.x
212
-
213
- ### Fixed
214
- - Text is converted to UTF-8 encoding before being passed to the underlying Gherkin gem. This is due to UTF-8 being
215
- the only encoding supported by Gherkin. The `gherkin` gem did the conversion automatically and so this conversion
216
- was not necessary previously but the `cucumber-gherkin` gem does not do any automatic conversion.
217
-
218
- ## [3.0.0] - 2020-06-08
219
-
220
- ### Changed
221
- - This gem now wraps the `cucumber-gherkin` gem instead of the `gherkin` gem, now that `cucumber-gherkin` has superseded `gherkin`.
222
- - Support for versions of Ruby earlier than 2.3 has been dropped due to that being the minimum required version of Ruby required by the `cucumber-gherkin` gem.
223
- - When using the parsing functionality provided by this gem, the standardized AST returned when parsing Gherkin text is now returned directly as a Hash instead of also being wrapped in an array. The array was an artifact of basing the AST on the earliest versions of `gherkin` that were supported.
224
- - No longer including every file in the Git repository as part of the gem. Only the files needed for using the gem (and the informative ones like the README) will be packaged into the released gem.
225
-
226
- ### Added
227
- - Support added for more versions of the `cucumber-gherkin` gem
228
- - 13.x
229
- - 12.x
230
- - 11.x
231
- - 10.x
232
- - 9.x
233
-
234
- ## [2.1.0] - 2020-05-27
235
-
236
- ### Added
237
- - Support added for more versions of the `gherkin` gem
238
- - 9.x
239
- - 8.x
240
- - 7.x
241
-
242
- ### Fixed
243
- - Parsing errors are now correctly bubbled up when using Gherkin 6.x
244
-
245
- ## [2.0.0] - 2020-02-11
246
-
247
- ### Changed
248
-
249
- - Step models now include doc strings and tables when determining their equality with other steps. Previously, only the base text of the step was included and the doc string/table was explicitly ignored.
250
-
251
-
252
- ## [1.5.1] - 2019-04-14
253
-
254
- ### Added
255
-
256
- - Add dependency version limits to Ruby which was previously unbound
257
- - Add dependency version limits to `bundler`, which was previously unbound
258
- - Added inline documentation to some methods that did not have any
259
-
260
- ## [1.5.0] - 2019-01-13
261
-
262
- ### Added
263
-
264
- - Added methods to easily run elements of an arbitrarily rooted model tree through a given block of code.
265
-
266
-
267
- ## [1.4.0] - 2018-11-14
268
-
269
- ### Added
270
-
271
- - Now compatible with Gherkin 6.x.
272
-
273
-
274
- ## [1.3.0] - 2017-10-19
275
-
276
- ### Added
277
-
278
- - Now compatible with Gherkin 5.x.
279
-
280
-
281
- ## [1.2.1] - 2017-04-25
282
-
283
- ### Added
284
-
285
- - Now officially compatible with Rake 12.x.
286
-
287
-
288
- ## [1.2.0] - 2016-11-23
289
-
290
- ### Added
291
-
292
- - The comments in a feature file are now a modeled element.
293
-
294
-
295
- ## [1.1.1] - 2016-10-28
296
-
297
- ### Fixed
298
-
299
- - Abstract instantiation of models when using a non-default dialect
300
- now works correctly.
301
-
302
-
303
- ## [1.1.0] - 2016-10-28
304
-
305
- ### Added
306
-
307
- - Support added for non-English dialects. This gem should now be able to model
308
- feature files using any dialect supported by the 'gherkin' gem.
309
-
310
- - Models for elements of Gherkin that have keywords (e.g. 'Feature', 'Scenario',
311
- 'Examples') now keep track of the keyword used by the element that they model.
312
-
313
- ### Fixed
314
-
315
- - Fixed a bug that was causing example models to output extra newline
316
- characters under certain circumstances.
317
-
318
-
319
- ## [1.0.4] - 2016-10-07
320
-
321
- ### Fixed
322
-
323
- - Fixed a bug that caused some models to include nil objects in their
324
- children collection if they did not have the relevant child object.
325
-
326
-
327
- ## [1.0.3] - 2016-09-12
328
-
329
- ### Fixed
330
-
331
- - Fixed a gem dependency that was accidentally declared with '<=' instead of '<'.
332
-
333
-
334
- ## [1.0.2] - 2016-09-12
335
-
336
- ### Added
337
-
338
- - A more detailed gem description and summary have been added to the gemspec.
339
-
340
- - The gem now declares version limits on its dependencies.
341
-
342
- - Badges for the current status of the project have been added to the Readme.
343
-
344
-
345
- ## [1.0.1] - 2016-09-10
346
-
347
- ### Added
348
-
349
- - In the Readme file, added a link to the published documentation.
350
-
351
-
352
- ## [1.0.0] - 2016-09-08
353
-
354
- ### Added
355
-
356
- - Background models can now be compared to other models that have steps (i.e.
357
- scenarios and outlines).
358
-
359
- - Added specific ancestor types for scenario, outline, and background models as
360
- alternatives to the generic 'test' ancestor type.
361
-
362
-
363
- ### Changed
364
-
365
- - A base model class has been added in order to simplify adding new element
366
- models. Other classes and modules used for organizing common model behavior
367
- have been created/removed/renamed.
368
-
369
- - All modeled elements of a Cucumber test suite are now modeled with actual
370
- classes. Previously, some elements (such as tags or rows in an example table)
371
- were modeled with simple strings.
372
-
373
- - Feature file models now only have a single feature model instead of a
374
- collection of them (that would only ever have one item in it).
375
-
376
- - Rows in an example table and rows in a step table no longer use two different
377
- classes for modeling.
378
-
379
- - All models for Gherkin elements now track the line number from which they
380
- originate in a source file.
381
-
382
- - The source line of a model is now a mutable attribute instead of being read
383
- only.
384
-
385
- - The file path of a feature file is now a mutable attribute instead of being
386
- read only.
387
-
388
- - Standardized the initial values of the attributes of abstractly created
389
- models so that they are consistent across model types.
390
-
391
- - Extra whitespace around parsed element descriptions is now trimmed away
392
- before being stored in a model.
393
-
394
- - Adding rows to examples via hashes can now be done without regard to the
395
- order of the keys in the hash. The correct order can be determined by the
396
- model.
397
-
398
- - The saved parsing data that is generated by the 'gherkin' gem is no longer
399
- duplicated for each model, resulting in significantly less memory usage.
400
-
401
- - Various methods have been renamed.
402
-
403
-
404
- ### Removed
405
-
406
- - Removed the backdoor used to pass around model data during the model creation
407
- process. Model input can now only be text.
408
-
409
- - Simple counting methods have been removed. Ruby's collection methods are just
410
- as easy to use directly when dealing with classes that contain collections
411
- and the removal of these counting methods simplifies the codebase.
412
-
413
- - The 'World' module has been removed. The scope of this gem is to model files
414
- written in Gherkin. Concepts like 'step definitions' and 'hooks' are better
415
- left to libraries that include (possibly programming language specific) test
416
- execution logic within their scope of concern.
417
-
418
- - Step models no longer have 'arguments' because they require the concept of
419
- step definitions, which are no longer within the scope of this gem.
420
-
421
- - Removed deprecated behavior
422
- - Marked
423
- - Doc strings no longer use an array of strings to model their content
424
- - Tables no longer use nested arrays of strings to model their rows
425
- - Models that have descriptions no longer use an array of strings to
426
- model their description
427
- - The convenient (read: awkward) #step_text has been removed.
428
- - Unmarked
429
- - Examples no longer use an array of hashes to model their rows
430
-
431
-
432
- ### Fixed
433
-
434
- - String output of models has been improved. More special characters in Gherkin
435
- (e.g. vertical bars in rows) are appropriately escaped in the string output
436
- of a model and several minor bugs related to using model string output as the
437
- input text for new models have been fixed.
438
-
439
-
440
- ## [0.4.1] - 2016-05-12
441
-
442
- ### Added
443
-
444
- - Increased the flexibility of input when adding rows to an Example object. Non-
445
- string values can now be used as input and they will be converted into
446
- strings. Original input objects are not modified.
447
-
448
- - Added some error checking around adding value rows to an Example object
449
- without adding a parameter row as well.
450
-
451
-
452
- ## [0.4.0] - 2016-05-01
453
-
454
- ### Added
455
-
456
- - The path of a Directory object is now a changeable attribute instead of only
457
- being populated if the instance was given a diretory to model.
458
-
459
- ### Fixed
460
-
461
- - Fixed a bug that occurred if a Directory object was asked for its
462
- `#name` when it was created as 'abstract' instead of modeling an existing
463
- directory.
464
-
465
-
466
- ## [0.3.0] - 2016-04-24
467
-
468
- ### Added
469
-
470
- - Support for version 4.x of the 'gherkin' gem added.
471
-
472
- ### Fixed
473
-
474
- - Fixed a bug that was preventing Example objects from being created
475
- from text if that text had less Gherkin structure than normal.
476
-
477
-
478
- ## [0.2.0] - 2016-02-21
479
-
480
- ### Added
481
-
482
- - Better error feedback when parsing errors are encountered. It is now easier
483
- to tell which file contained invalid Gherkin.
484
-
485
-
486
- ## [0.1.0] - 2016-02-10
487
-
488
- ### Added
489
-
490
- - Support for version 3.x of the 'gherkin' gem added.
491
-
492
- ### Fixed
493
-
494
- - The saved parsing data that is generated by the 'gherkin' gem is no
495
- longer modified by the rest of the model creation process.
496
-
497
-
498
- ## [0.0.2] - 2015-11-22
499
-
500
- ### Fixed
501
-
502
- - Fixed a bug that was causing object comparison using `#==` to not
503
- work when comparing some models to other types of objects.
504
-
505
-
506
- ## [0.0.1] - 2014-06-02
507
-
508
- ### Added
509
-
510
- - Initial release
511
-
512
-
513
- [Unreleased]: https://github.com/enkessler/cuke_modeler/compare/v3.26.0...HEAD
514
- [3.26.0]: https://github.com/enkessler/cuke_modeler/compare/v3.25.0...v3.26.0
515
- [3.25.0]: https://github.com/enkessler/cuke_modeler/compare/v3.24.0...v3.25.0
516
- [3.24.0]: https://github.com/enkessler/cuke_modeler/compare/v3.23.0...v3.24.0
517
- [3.23.0]: https://github.com/enkessler/cuke_modeler/compare/v3.22.0...v3.23.0
518
- [3.22.0]: https://github.com/enkessler/cuke_modeler/compare/v3.21.1...v3.22.0
519
- [3.21.0]: https://github.com/enkessler/cuke_modeler/compare/v3.20.1...v3.21.0
520
- [3.20.1]: https://github.com/enkessler/cuke_modeler/compare/v3.20.0...v3.20.1
521
- [3.20.0]: https://github.com/enkessler/cuke_modeler/compare/v3.19.0...v3.20.0
522
- [3.19.0]: https://github.com/enkessler/cuke_modeler/compare/v3.18.0...v3.19.0
523
- [3.18.0]: https://github.com/enkessler/cuke_modeler/compare/v3.17.0...v3.18.0
524
- [3.17.0]: https://github.com/enkessler/cuke_modeler/compare/v3.16.0...v3.17.0
525
- [3.16.0]: https://github.com/enkessler/cuke_modeler/compare/v3.15.0...v3.16.0
526
- [3.15.0]: https://github.com/enkessler/cuke_modeler/compare/v3.14.0...v3.15.0
527
- [3.14.0]: https://github.com/enkessler/cuke_modeler/compare/v3.13.0...v3.14.0
528
- [3.13.0]: https://github.com/enkessler/cuke_modeler/compare/v3.12.0...v3.13.0
529
- [3.12.0]: https://github.com/enkessler/cuke_modeler/compare/v3.11.0...v3.12.0
530
- [3.11.0]: https://github.com/enkessler/cuke_modeler/compare/v3.10.0...v3.11.0
531
- [3.10.0]: https://github.com/enkessler/cuke_modeler/compare/v3.9.0...v3.10.0
532
- [3.9.0]: https://github.com/enkessler/cuke_modeler/compare/v3.8.0...v3.9.0
533
- [3.8.0]: https://github.com/enkessler/cuke_modeler/compare/v3.7.0...v3.8.0
534
- [3.7.0]: https://github.com/enkessler/cuke_modeler/compare/v3.6.0...v3.7.0
535
- [3.6.0]: https://github.com/enkessler/cuke_modeler/compare/v3.5.0...v3.6.0
536
- [3.5.0]: https://github.com/enkessler/cuke_modeler/compare/v3.4.0...v3.5.0
537
- [3.4.0]: https://github.com/enkessler/cuke_modeler/compare/v3.3.0...v3.4.0
538
- [3.3.0]: https://github.com/enkessler/cuke_modeler/compare/v3.2.0...v3.3.0
539
- [3.2.0]: https://github.com/enkessler/cuke_modeler/compare/v3.1.0...v3.2.0
540
- [3.1.0]: https://github.com/enkessler/cuke_modeler/compare/v3.0.0...v3.1.0
541
- [3.0.0]: https://github.com/enkessler/cuke_modeler/compare/v2.1.0...v3.0.0
542
- [2.1.0]: https://github.com/enkessler/cuke_modeler/compare/v2.0.0...v2.1.0
543
- [2.0.0]: https://github.com/enkessler/cuke_modeler/compare/v1.5.1...v2.0.0
544
- [1.5.1]: https://github.com/enkessler/cuke_modeler/compare/v1.5.0...v1.5.1
545
- [1.5.0]: https://github.com/enkessler/cuke_modeler/compare/v1.4.0...v1.5.0
546
- [1.4.0]: https://github.com/enkessler/cuke_modeler/compare/v1.3.0...v1.4.0
547
- [1.3.0]: https://github.com/enkessler/cuke_modeler/compare/v1.2.1...v1.3.0
548
- [1.2.1]: https://github.com/enkessler/cuke_modeler/compare/v1.2.0...v1.2.1
549
- [1.2.0]: https://github.com/enkessler/cuke_modeler/compare/v1.1.1...v1.2.0
550
- [1.1.1]: https://github.com/enkessler/cuke_modeler/compare/v1.1.0...v1.1.1
551
- [1.1.0]: https://github.com/enkessler/cuke_modeler/compare/v1.0.4...v1.1.0
552
- [1.0.4]: https://github.com/enkessler/cuke_modeler/compare/v1.0.3...v1.0.4
553
- [1.0.3]: https://github.com/enkessler/cuke_modeler/compare/v1.0.2...v1.0.3
554
- [1.0.2]: https://github.com/enkessler/cuke_modeler/compare/v1.0.1...v1.0.2
555
- [1.0.1]: https://github.com/enkessler/cuke_modeler/compare/v1.0.0...v1.0.1
556
- [1.0.0]: https://github.com/enkessler/cuke_modeler/compare/v0.4.1...v1.0.0
557
- [0.4.1]: https://github.com/enkessler/cuke_modeler/compare/v0.4.0...v0.4.1
558
- [0.4.0]: https://github.com/enkessler/cuke_modeler/compare/v0.3.0...v0.4.0
559
- [0.3.0]: https://github.com/enkessler/cuke_modeler/compare/v0.2.0...v0.3.0
560
- [0.2.0]: https://github.com/enkessler/cuke_modeler/compare/v0.1.0...v0.2.0
561
- [0.1.0]: https://github.com/enkessler/cuke_modeler/compare/v0.0.2...v0.1.0
562
- [0.0.2]: https://github.com/enkessler/cuke_modeler/compare/v0.0.1...v0.0.2
563
- [0.0.1]: https://github.com/enkessler/cuke_modeler/compare/ce627fb591966c9ef19a9e69338b1282e9902a0d...v0.0.1
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ Nothing yet...
10
+
11
+
12
+ ## [3.28.0] - 2026-01-23
13
+
14
+ - Support added for more versions of the `cucumber-gherkin` gem
15
+ - 38.x
16
+
17
+
18
+ ## [3.27.0] - 2026-01-13
19
+
20
+ ### Added
21
+ - Ruby 4.x is now supported
22
+ - Support added for more versions of the `cucumber-gherkin` gem
23
+ - 37.x
24
+
25
+
26
+ ## [3.26.0] - 2025-11-11
27
+
28
+ ### Added
29
+ - Support added for more versions of the `cucumber-gherkin` gem
30
+ - 34.x
31
+ - 35.x
32
+ - 36.x
33
+
34
+
35
+ ## [3.25.0] - 2025-07-15
36
+
37
+ ### Added
38
+ - Support added for more versions of the `cucumber-gherkin` gem
39
+ - 33.x
40
+
41
+
42
+ ## [3.24.0] - 2025-02-24
43
+
44
+ ### Added
45
+ - Support added for more versions of the `cucumber-gherkin` gem
46
+ - 31.x
47
+ - 32.x
48
+
49
+
50
+ ## [3.23.0] - 2024-10-31
51
+
52
+ ### Added
53
+ - Support added for more versions of the `cucumber-gherkin` gem
54
+ - 30.x
55
+
56
+
57
+ ## [3.22.0] - 2024-10-01
58
+
59
+ ### Added
60
+ - Support added for more versions of the `cucumber-gherkin` gem
61
+ - 29.x
62
+
63
+
64
+ ## [3.21.0] - 2024-03-11
65
+
66
+ ### Added
67
+ - Support added for more versions of the `cucumber-gherkin` gem
68
+ - 28.x
69
+
70
+
71
+ ## [3.20.1] - 2023-10-16
72
+
73
+ ### Changed
74
+ - Finally made various parts of the codebase private in the Ruby sense of the word instead of only
75
+ being marked as private by comments. Not a breaking change because the stuff was already declared to
76
+ be not part of the public API.
77
+
78
+ - Improved code documentation by making more use of YARD tags.
79
+
80
+
81
+ ## [3.20.0] - 2023-9-21
82
+
83
+ ### Added
84
+ - Support added for more versions of the `cucumber-gherkin` gem
85
+ - 27.x
86
+
87
+ ### Changed
88
+ - `#inspect` for models now returns a reasonably small set of details for the model instead of the potentially
89
+ huge screen dump of information. Not considered a breaking change because the API never specified the behavior
90
+ of `#inspect` (it was just using the default Ruby implementation). Default Ruby inspection can still be triggered,
91
+ if desired (see documentation).
92
+
93
+ ## [3.19.0] - 2023-1-22
94
+
95
+ ### Added
96
+ - Support added for more versions of the `cucumber-gherkin` gem
97
+ - 26.x
98
+
99
+ ## [3.18.0] - 2022-11-16
100
+
101
+ ### Added
102
+ - Support added for more versions of the `cucumber-gherkin` gem
103
+ - 25.x
104
+
105
+ ## [3.17.0] - 2022-06-14
106
+
107
+ ### Added
108
+ - Support added for more versions of the `cucumber-gherkin` gem
109
+ - 24.x
110
+
111
+ ## [3.16.0] - 2022-05-30
112
+
113
+ ### Added
114
+ - Support added for more versions of the `cucumber-gherkin` gem
115
+ - 23.x
116
+
117
+ ## [3.15.0] - 2021-11-27
118
+
119
+ ### Added
120
+ - The language of a feature (e.g. 'en', 'hi', 'zh-CN', etc.) is now a modeled attribute on `Feature` models.
121
+
122
+ ## [3.14.0] - 2021-11-22
123
+
124
+ ### Added
125
+ - All models for Gherkin elements now track the column number from which they originate in a source file.
126
+
127
+ ## [3.13.0] - 2021-09-25
128
+
129
+ ### Added
130
+ - Support added for more versions of the `cucumber-gherkin` gem
131
+ - 22.x
132
+
133
+ ## [3.12.0] - 2021-09-09
134
+
135
+ ### Added
136
+ - Support added for more versions of the `cucumber-gherkin` gem
137
+ - 21.x
138
+
139
+ ## [3.11.0] - 2021-07-31
140
+
141
+ ### Added
142
+ - Support added for more versions of the `cucumber-gherkin` gem
143
+ - 20.x
144
+
145
+ ### Fixed
146
+ - `Rule` models are now returnable from `Model#get_ancestor()`. Updating that method was missed when `Rule` models
147
+ were first added.
148
+
149
+ ## [3.10.0] - 2021-05-28
150
+
151
+ ### Added
152
+ - Support added for more versions of the `cucumber-gherkin` gem
153
+ - 19.x
154
+
155
+ ### Fixed
156
+ - `Rule` models now clear out parsing data for their tags. This data was an unintentional duplication of the
157
+ parsing data that the `Tag` models already contained.
158
+
159
+
160
+ ## [3.9.0] - 2021-04-23
161
+
162
+ ### Added
163
+ - `Rule` models are now taggable elements
164
+
165
+
166
+ ## [3.8.0] - 2021-04-18
167
+
168
+ ### Added
169
+ - Support added for more versions of the `cucumber-gherkin` gem
170
+ - 18.x
171
+
172
+
173
+ ## [3.7.0] - 2021-02-18
174
+
175
+ ### Added
176
+ - Support added for more versions of the `cucumber-gherkin` gem
177
+ - 17.x
178
+
179
+
180
+ ## [3.6.0] - 2021-01-05
181
+
182
+ ### Added
183
+ - Ruby 3.x is now supported
184
+ - All models are now `Enumerable`. However, some methods such as `Enumerable#max` and `Enumerable#sort` do not work
185
+ because models do not meaningfully compare to each other.
186
+
187
+ ### Deprecated
188
+ - `Model#each_descendant` and `Model#each_model` will be removed on the next major release. `Model#each` and methods in
189
+ the `Enumerable` module now provide this kind of functionality.
190
+
191
+ ### Fixed
192
+ - `Row#children` now returns the row's `Cell` models instead of returning an empty array
193
+
194
+
195
+ ## [3.5.0] - 2020-12-19
196
+
197
+ ### Added
198
+ - Support added for more versions of the `cucumber-gherkin` gem
199
+ - 16.x
200
+
201
+ ## [3.4.0] - 2020-09-02
202
+
203
+ ### Added
204
+ - `Feature#has_background?` and `Rule#has_background?` now both have a more conventional name via the alias `#background?`
205
+
206
+ ## [3.3.0] - 2020-08-15
207
+
208
+ ### Added
209
+ - Support added for more versions of the `cucumber-gherkin` gem
210
+ - 15.x
211
+
212
+ ## [3.2.0] - 2020-07-27
213
+
214
+ ### Added
215
+ - The `Rule` keyword is now a modeled element.
216
+
217
+ ### Deprecated
218
+ - `Feature#test_case_count` will be removed on the next major release. It's a random analysis method in what is
219
+ otherwise a purely abstraction layer library. The [CQL](https://github.com/enkessler/cql) gem is better suited to such tasks.
220
+
221
+ ## [3.1.0] - 2020-06-28
222
+
223
+ ### Added
224
+ - Support added for more versions of the `cucumber-gherkin` gem
225
+ - 14.x
226
+
227
+ ### Fixed
228
+ - Text is converted to UTF-8 encoding before being passed to the underlying Gherkin gem. This is due to UTF-8 being
229
+ the only encoding supported by Gherkin. The `gherkin` gem did the conversion automatically and so this conversion
230
+ was not necessary previously but the `cucumber-gherkin` gem does not do any automatic conversion.
231
+
232
+ ## [3.0.0] - 2020-06-08
233
+
234
+ ### Changed
235
+ - This gem now wraps the `cucumber-gherkin` gem instead of the `gherkin` gem, now that `cucumber-gherkin` has superseded `gherkin`.
236
+ - Support for versions of Ruby earlier than 2.3 has been dropped due to that being the minimum required version of Ruby required by the `cucumber-gherkin` gem.
237
+ - When using the parsing functionality provided by this gem, the standardized AST returned when parsing Gherkin text is now returned directly as a Hash instead of also being wrapped in an array. The array was an artifact of basing the AST on the earliest versions of `gherkin` that were supported.
238
+ - No longer including every file in the Git repository as part of the gem. Only the files needed for using the gem (and the informative ones like the README) will be packaged into the released gem.
239
+
240
+ ### Added
241
+ - Support added for more versions of the `cucumber-gherkin` gem
242
+ - 13.x
243
+ - 12.x
244
+ - 11.x
245
+ - 10.x
246
+ - 9.x
247
+
248
+ ## [2.1.0] - 2020-05-27
249
+
250
+ ### Added
251
+ - Support added for more versions of the `gherkin` gem
252
+ - 9.x
253
+ - 8.x
254
+ - 7.x
255
+
256
+ ### Fixed
257
+ - Parsing errors are now correctly bubbled up when using Gherkin 6.x
258
+
259
+ ## [2.0.0] - 2020-02-11
260
+
261
+ ### Changed
262
+
263
+ - Step models now include doc strings and tables when determining their equality with other steps. Previously, only the base text of the step was included and the doc string/table was explicitly ignored.
264
+
265
+
266
+ ## [1.5.1] - 2019-04-14
267
+
268
+ ### Added
269
+
270
+ - Add dependency version limits to Ruby which was previously unbound
271
+ - Add dependency version limits to `bundler`, which was previously unbound
272
+ - Added inline documentation to some methods that did not have any
273
+
274
+ ## [1.5.0] - 2019-01-13
275
+
276
+ ### Added
277
+
278
+ - Added methods to easily run elements of an arbitrarily rooted model tree through a given block of code.
279
+
280
+
281
+ ## [1.4.0] - 2018-11-14
282
+
283
+ ### Added
284
+
285
+ - Now compatible with Gherkin 6.x.
286
+
287
+
288
+ ## [1.3.0] - 2017-10-19
289
+
290
+ ### Added
291
+
292
+ - Now compatible with Gherkin 5.x.
293
+
294
+
295
+ ## [1.2.1] - 2017-04-25
296
+
297
+ ### Added
298
+
299
+ - Now officially compatible with Rake 12.x.
300
+
301
+
302
+ ## [1.2.0] - 2016-11-23
303
+
304
+ ### Added
305
+
306
+ - The comments in a feature file are now a modeled element.
307
+
308
+
309
+ ## [1.1.1] - 2016-10-28
310
+
311
+ ### Fixed
312
+
313
+ - Abstract instantiation of models when using a non-default dialect
314
+ now works correctly.
315
+
316
+
317
+ ## [1.1.0] - 2016-10-28
318
+
319
+ ### Added
320
+
321
+ - Support added for non-English dialects. This gem should now be able to model
322
+ feature files using any dialect supported by the 'gherkin' gem.
323
+
324
+ - Models for elements of Gherkin that have keywords (e.g. 'Feature', 'Scenario',
325
+ 'Examples') now keep track of the keyword used by the element that they model.
326
+
327
+ ### Fixed
328
+
329
+ - Fixed a bug that was causing example models to output extra newline
330
+ characters under certain circumstances.
331
+
332
+
333
+ ## [1.0.4] - 2016-10-07
334
+
335
+ ### Fixed
336
+
337
+ - Fixed a bug that caused some models to include nil objects in their
338
+ children collection if they did not have the relevant child object.
339
+
340
+
341
+ ## [1.0.3] - 2016-09-12
342
+
343
+ ### Fixed
344
+
345
+ - Fixed a gem dependency that was accidentally declared with '<=' instead of '<'.
346
+
347
+
348
+ ## [1.0.2] - 2016-09-12
349
+
350
+ ### Added
351
+
352
+ - A more detailed gem description and summary have been added to the gemspec.
353
+
354
+ - The gem now declares version limits on its dependencies.
355
+
356
+ - Badges for the current status of the project have been added to the Readme.
357
+
358
+
359
+ ## [1.0.1] - 2016-09-10
360
+
361
+ ### Added
362
+
363
+ - In the Readme file, added a link to the published documentation.
364
+
365
+
366
+ ## [1.0.0] - 2016-09-08
367
+
368
+ ### Added
369
+
370
+ - Background models can now be compared to other models that have steps (i.e.
371
+ scenarios and outlines).
372
+
373
+ - Added specific ancestor types for scenario, outline, and background models as
374
+ alternatives to the generic 'test' ancestor type.
375
+
376
+
377
+ ### Changed
378
+
379
+ - A base model class has been added in order to simplify adding new element
380
+ models. Other classes and modules used for organizing common model behavior
381
+ have been created/removed/renamed.
382
+
383
+ - All modeled elements of a Cucumber test suite are now modeled with actual
384
+ classes. Previously, some elements (such as tags or rows in an example table)
385
+ were modeled with simple strings.
386
+
387
+ - Feature file models now only have a single feature model instead of a
388
+ collection of them (that would only ever have one item in it).
389
+
390
+ - Rows in an example table and rows in a step table no longer use two different
391
+ classes for modeling.
392
+
393
+ - All models for Gherkin elements now track the line number from which they
394
+ originate in a source file.
395
+
396
+ - The source line of a model is now a mutable attribute instead of being read
397
+ only.
398
+
399
+ - The file path of a feature file is now a mutable attribute instead of being
400
+ read only.
401
+
402
+ - Standardized the initial values of the attributes of abstractly created
403
+ models so that they are consistent across model types.
404
+
405
+ - Extra whitespace around parsed element descriptions is now trimmed away
406
+ before being stored in a model.
407
+
408
+ - Adding rows to examples via hashes can now be done without regard to the
409
+ order of the keys in the hash. The correct order can be determined by the
410
+ model.
411
+
412
+ - The saved parsing data that is generated by the 'gherkin' gem is no longer
413
+ duplicated for each model, resulting in significantly less memory usage.
414
+
415
+ - Various methods have been renamed.
416
+
417
+
418
+ ### Removed
419
+
420
+ - Removed the backdoor used to pass around model data during the model creation
421
+ process. Model input can now only be text.
422
+
423
+ - Simple counting methods have been removed. Ruby's collection methods are just
424
+ as easy to use directly when dealing with classes that contain collections
425
+ and the removal of these counting methods simplifies the codebase.
426
+
427
+ - The 'World' module has been removed. The scope of this gem is to model files
428
+ written in Gherkin. Concepts like 'step definitions' and 'hooks' are better
429
+ left to libraries that include (possibly programming language specific) test
430
+ execution logic within their scope of concern.
431
+
432
+ - Step models no longer have 'arguments' because they require the concept of
433
+ step definitions, which are no longer within the scope of this gem.
434
+
435
+ - Removed deprecated behavior
436
+ - Marked
437
+ - Doc strings no longer use an array of strings to model their content
438
+ - Tables no longer use nested arrays of strings to model their rows
439
+ - Models that have descriptions no longer use an array of strings to
440
+ model their description
441
+ - The convenient (read: awkward) #step_text has been removed.
442
+ - Unmarked
443
+ - Examples no longer use an array of hashes to model their rows
444
+
445
+
446
+ ### Fixed
447
+
448
+ - String output of models has been improved. More special characters in Gherkin
449
+ (e.g. vertical bars in rows) are appropriately escaped in the string output
450
+ of a model and several minor bugs related to using model string output as the
451
+ input text for new models have been fixed.
452
+
453
+
454
+ ## [0.4.1] - 2016-05-12
455
+
456
+ ### Added
457
+
458
+ - Increased the flexibility of input when adding rows to an Example object. Non-
459
+ string values can now be used as input and they will be converted into
460
+ strings. Original input objects are not modified.
461
+
462
+ - Added some error checking around adding value rows to an Example object
463
+ without adding a parameter row as well.
464
+
465
+
466
+ ## [0.4.0] - 2016-05-01
467
+
468
+ ### Added
469
+
470
+ - The path of a Directory object is now a changeable attribute instead of only
471
+ being populated if the instance was given a diretory to model.
472
+
473
+ ### Fixed
474
+
475
+ - Fixed a bug that occurred if a Directory object was asked for its
476
+ `#name` when it was created as 'abstract' instead of modeling an existing
477
+ directory.
478
+
479
+
480
+ ## [0.3.0] - 2016-04-24
481
+
482
+ ### Added
483
+
484
+ - Support for version 4.x of the 'gherkin' gem added.
485
+
486
+ ### Fixed
487
+
488
+ - Fixed a bug that was preventing Example objects from being created
489
+ from text if that text had less Gherkin structure than normal.
490
+
491
+
492
+ ## [0.2.0] - 2016-02-21
493
+
494
+ ### Added
495
+
496
+ - Better error feedback when parsing errors are encountered. It is now easier
497
+ to tell which file contained invalid Gherkin.
498
+
499
+
500
+ ## [0.1.0] - 2016-02-10
501
+
502
+ ### Added
503
+
504
+ - Support for version 3.x of the 'gherkin' gem added.
505
+
506
+ ### Fixed
507
+
508
+ - The saved parsing data that is generated by the 'gherkin' gem is no
509
+ longer modified by the rest of the model creation process.
510
+
511
+
512
+ ## [0.0.2] - 2015-11-22
513
+
514
+ ### Fixed
515
+
516
+ - Fixed a bug that was causing object comparison using `#==` to not
517
+ work when comparing some models to other types of objects.
518
+
519
+
520
+ ## [0.0.1] - 2014-06-02
521
+
522
+ ### Added
523
+
524
+ - Initial release
525
+
526
+
527
+ [Unreleased]: https://github.com/enkessler/cuke_modeler/compare/v3.28.0...HEAD
528
+ [3.28.0]: https://github.com/enkessler/cuke_modeler/compare/v3.27.0...v3.28.0
529
+ [3.27.0]: https://github.com/enkessler/cuke_modeler/compare/v3.26.0...v3.27.0
530
+ [3.26.0]: https://github.com/enkessler/cuke_modeler/compare/v3.25.0...v3.26.0
531
+ [3.25.0]: https://github.com/enkessler/cuke_modeler/compare/v3.24.0...v3.25.0
532
+ [3.24.0]: https://github.com/enkessler/cuke_modeler/compare/v3.23.0...v3.24.0
533
+ [3.23.0]: https://github.com/enkessler/cuke_modeler/compare/v3.22.0...v3.23.0
534
+ [3.22.0]: https://github.com/enkessler/cuke_modeler/compare/v3.21.0...v3.22.0
535
+ [3.21.0]: https://github.com/enkessler/cuke_modeler/compare/v3.20.1...v3.21.0
536
+ [3.20.1]: https://github.com/enkessler/cuke_modeler/compare/v3.20.0...v3.20.1
537
+ [3.20.0]: https://github.com/enkessler/cuke_modeler/compare/v3.19.0...v3.20.0
538
+ [3.19.0]: https://github.com/enkessler/cuke_modeler/compare/v3.18.0...v3.19.0
539
+ [3.18.0]: https://github.com/enkessler/cuke_modeler/compare/v3.17.0...v3.18.0
540
+ [3.17.0]: https://github.com/enkessler/cuke_modeler/compare/v3.16.0...v3.17.0
541
+ [3.16.0]: https://github.com/enkessler/cuke_modeler/compare/v3.15.0...v3.16.0
542
+ [3.15.0]: https://github.com/enkessler/cuke_modeler/compare/v3.14.0...v3.15.0
543
+ [3.14.0]: https://github.com/enkessler/cuke_modeler/compare/v3.13.0...v3.14.0
544
+ [3.13.0]: https://github.com/enkessler/cuke_modeler/compare/v3.12.0...v3.13.0
545
+ [3.12.0]: https://github.com/enkessler/cuke_modeler/compare/v3.11.0...v3.12.0
546
+ [3.11.0]: https://github.com/enkessler/cuke_modeler/compare/v3.10.0...v3.11.0
547
+ [3.10.0]: https://github.com/enkessler/cuke_modeler/compare/v3.9.0...v3.10.0
548
+ [3.9.0]: https://github.com/enkessler/cuke_modeler/compare/v3.8.0...v3.9.0
549
+ [3.8.0]: https://github.com/enkessler/cuke_modeler/compare/v3.7.0...v3.8.0
550
+ [3.7.0]: https://github.com/enkessler/cuke_modeler/compare/v3.6.0...v3.7.0
551
+ [3.6.0]: https://github.com/enkessler/cuke_modeler/compare/v3.5.0...v3.6.0
552
+ [3.5.0]: https://github.com/enkessler/cuke_modeler/compare/v3.4.0...v3.5.0
553
+ [3.4.0]: https://github.com/enkessler/cuke_modeler/compare/v3.3.0...v3.4.0
554
+ [3.3.0]: https://github.com/enkessler/cuke_modeler/compare/v3.2.0...v3.3.0
555
+ [3.2.0]: https://github.com/enkessler/cuke_modeler/compare/v3.1.0...v3.2.0
556
+ [3.1.0]: https://github.com/enkessler/cuke_modeler/compare/v3.0.0...v3.1.0
557
+ [3.0.0]: https://github.com/enkessler/cuke_modeler/compare/v2.1.0...v3.0.0
558
+ [2.1.0]: https://github.com/enkessler/cuke_modeler/compare/v2.0.0...v2.1.0
559
+ [2.0.0]: https://github.com/enkessler/cuke_modeler/compare/v1.5.1...v2.0.0
560
+ [1.5.1]: https://github.com/enkessler/cuke_modeler/compare/v1.5.0...v1.5.1
561
+ [1.5.0]: https://github.com/enkessler/cuke_modeler/compare/v1.4.0...v1.5.0
562
+ [1.4.0]: https://github.com/enkessler/cuke_modeler/compare/v1.3.0...v1.4.0
563
+ [1.3.0]: https://github.com/enkessler/cuke_modeler/compare/v1.2.1...v1.3.0
564
+ [1.2.1]: https://github.com/enkessler/cuke_modeler/compare/v1.2.0...v1.2.1
565
+ [1.2.0]: https://github.com/enkessler/cuke_modeler/compare/v1.1.1...v1.2.0
566
+ [1.1.1]: https://github.com/enkessler/cuke_modeler/compare/v1.1.0...v1.1.1
567
+ [1.1.0]: https://github.com/enkessler/cuke_modeler/compare/v1.0.4...v1.1.0
568
+ [1.0.4]: https://github.com/enkessler/cuke_modeler/compare/v1.0.3...v1.0.4
569
+ [1.0.3]: https://github.com/enkessler/cuke_modeler/compare/v1.0.2...v1.0.3
570
+ [1.0.2]: https://github.com/enkessler/cuke_modeler/compare/v1.0.1...v1.0.2
571
+ [1.0.1]: https://github.com/enkessler/cuke_modeler/compare/v1.0.0...v1.0.1
572
+ [1.0.0]: https://github.com/enkessler/cuke_modeler/compare/v0.4.1...v1.0.0
573
+ [0.4.1]: https://github.com/enkessler/cuke_modeler/compare/v0.4.0...v0.4.1
574
+ [0.4.0]: https://github.com/enkessler/cuke_modeler/compare/v0.3.0...v0.4.0
575
+ [0.3.0]: https://github.com/enkessler/cuke_modeler/compare/v0.2.0...v0.3.0
576
+ [0.2.0]: https://github.com/enkessler/cuke_modeler/compare/v0.1.0...v0.2.0
577
+ [0.1.0]: https://github.com/enkessler/cuke_modeler/compare/v0.0.2...v0.1.0
578
+ [0.0.2]: https://github.com/enkessler/cuke_modeler/compare/v0.0.1...v0.0.2
579
+ [0.0.1]: https://github.com/enkessler/cuke_modeler/compare/ce627fb591966c9ef19a9e69338b1282e9902a0d...v0.0.1