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