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