cucumber-cucumber-expressions 10.1.0 → 11.0.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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/.rsync +1 -0
  3. data/VERSION +1 -0
  4. data/cucumber-cucumber-expressions.gemspec +5 -2
  5. data/default.mk +13 -6
  6. data/examples.txt +13 -1
  7. data/lib/cucumber/cucumber_expressions/ast.rb +201 -0
  8. data/lib/cucumber/cucumber_expressions/cucumber_expression.rb +80 -76
  9. data/lib/cucumber/cucumber_expressions/cucumber_expression_generator.rb +4 -8
  10. data/lib/cucumber/cucumber_expressions/cucumber_expression_parser.rb +219 -0
  11. data/lib/cucumber/cucumber_expressions/cucumber_expression_tokenizer.rb +95 -0
  12. data/lib/cucumber/cucumber_expressions/errors.rb +175 -4
  13. data/lib/cucumber/cucumber_expressions/group.rb +1 -1
  14. data/lib/cucumber/cucumber_expressions/parameter_type.rb +12 -7
  15. data/lib/cucumber/cucumber_expressions/parameter_type_matcher.rb +2 -2
  16. data/lib/cucumber/cucumber_expressions/parameter_type_registry.rb +1 -1
  17. data/lib/cucumber/cucumber_expressions/tree_regexp.rb +53 -46
  18. data/spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb +24 -0
  19. data/spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb +73 -124
  20. data/spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb +24 -0
  21. data/spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb +1 -1
  22. data/spec/cucumber/cucumber_expressions/expression_examples_spec.rb +1 -1
  23. data/spec/cucumber/cucumber_expressions/expression_factory_spec.rb +0 -4
  24. data/spec/cucumber/cucumber_expressions/tree_regexp_spec.rb +58 -5
  25. data/testdata/ast/alternation-followed-by-optional.yaml +17 -0
  26. data/testdata/ast/alternation-phrase.yaml +16 -0
  27. data/testdata/ast/alternation-with-parameter.yaml +27 -0
  28. data/testdata/ast/alternation-with-unused-end-optional.yaml +15 -0
  29. data/testdata/ast/alternation-with-unused-start-optional.yaml +8 -0
  30. data/testdata/ast/alternation-with-white-space.yaml +12 -0
  31. data/testdata/ast/alternation.yaml +12 -0
  32. data/testdata/ast/anonymous-parameter.yaml +5 -0
  33. data/testdata/ast/closing-brace.yaml +5 -0
  34. data/testdata/ast/closing-parenthesis.yaml +5 -0
  35. data/testdata/ast/empty-alternation.yaml +8 -0
  36. data/testdata/ast/empty-alternations.yaml +9 -0
  37. data/testdata/ast/empty-string.yaml +3 -0
  38. data/testdata/ast/escaped-alternation.yaml +5 -0
  39. data/testdata/ast/escaped-backslash.yaml +5 -0
  40. data/testdata/ast/escaped-opening-parenthesis.yaml +5 -0
  41. data/testdata/ast/escaped-optional-followed-by-optional.yaml +15 -0
  42. data/testdata/ast/escaped-optional-phrase.yaml +10 -0
  43. data/testdata/ast/escaped-optional.yaml +7 -0
  44. data/testdata/ast/opening-brace.yaml +8 -0
  45. data/testdata/ast/opening-parenthesis.yaml +8 -0
  46. data/testdata/ast/optional-containing-nested-optional.yaml +15 -0
  47. data/testdata/ast/optional-phrase.yaml +12 -0
  48. data/testdata/ast/optional.yaml +7 -0
  49. data/testdata/ast/parameter.yaml +7 -0
  50. data/testdata/ast/phrase.yaml +9 -0
  51. data/testdata/ast/unfinished-parameter.yaml +8 -0
  52. data/testdata/expression/allows-escaped-optional-parameter-types.yaml +4 -0
  53. data/testdata/expression/allows-parameter-type-in-alternation-1.yaml +4 -0
  54. data/testdata/expression/allows-parameter-type-in-alternation-2.yaml +4 -0
  55. data/testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml +5 -0
  56. data/testdata/expression/does-not-allow-alternation-in-optional.yaml +9 -0
  57. data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml +10 -0
  58. data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml +9 -0
  59. data/testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml +9 -0
  60. data/testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml +9 -0
  61. data/testdata/expression/does-not-allow-empty-optional.yaml +9 -0
  62. data/testdata/expression/does-not-allow-nested-optional.yaml +8 -0
  63. data/testdata/expression/does-not-allow-optional-parameter-types.yaml +9 -0
  64. data/testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml +10 -0
  65. data/testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml +8 -0
  66. data/testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml +8 -0
  67. data/testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml +8 -0
  68. data/testdata/expression/does-not-match-misquoted-string.yaml +4 -0
  69. data/testdata/expression/doesnt-match-float-as-int.yaml +5 -0
  70. data/testdata/expression/matches-alternation.yaml +4 -0
  71. data/testdata/expression/matches-anonymous-parameter-type.yaml +5 -0
  72. data/testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml +4 -0
  73. data/testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml +4 -0
  74. data/testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml +4 -0
  75. data/testdata/expression/matches-double-quoted-string-with-single-quotes.yaml +4 -0
  76. data/testdata/expression/matches-double-quoted-string.yaml +4 -0
  77. data/testdata/expression/matches-doubly-escaped-parenthesis.yaml +4 -0
  78. data/testdata/expression/matches-doubly-escaped-slash-1.yaml +4 -0
  79. data/testdata/expression/matches-doubly-escaped-slash-2.yaml +4 -0
  80. data/testdata/expression/matches-escaped-parenthesis-1.yaml +4 -0
  81. data/testdata/expression/matches-escaped-parenthesis-2.yaml +4 -0
  82. data/testdata/expression/matches-escaped-parenthesis-3.yaml +4 -0
  83. data/testdata/expression/matches-escaped-slash.yaml +4 -0
  84. data/testdata/expression/matches-float-1.yaml +5 -0
  85. data/testdata/expression/matches-float-2.yaml +5 -0
  86. data/testdata/expression/matches-int.yaml +5 -0
  87. data/testdata/expression/matches-multiple-double-quoted-strings.yaml +4 -0
  88. data/testdata/expression/matches-multiple-single-quoted-strings.yaml +4 -0
  89. data/testdata/expression/matches-optional-before-alternation-1.yaml +4 -0
  90. data/testdata/expression/matches-optional-before-alternation-2.yaml +4 -0
  91. data/testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml +4 -0
  92. data/testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml +4 -0
  93. data/testdata/expression/matches-optional-in-alternation-1.yaml +5 -0
  94. data/testdata/expression/matches-optional-in-alternation-2.yaml +5 -0
  95. data/testdata/expression/matches-optional-in-alternation-3.yaml +5 -0
  96. data/testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml +4 -0
  97. data/testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml +4 -0
  98. data/testdata/expression/matches-single-quoted-string-with-double-quotes.yaml +4 -0
  99. data/testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml +4 -0
  100. data/testdata/expression/matches-single-quoted-string.yaml +4 -0
  101. data/testdata/expression/matches-word.yaml +4 -0
  102. data/testdata/expression/throws-unknown-parameter-type.yaml +10 -0
  103. data/testdata/regex/alternation-with-optional.yaml +2 -0
  104. data/testdata/regex/alternation.yaml +2 -0
  105. data/testdata/regex/empty.yaml +2 -0
  106. data/testdata/regex/escape-regex-characters.yaml +2 -0
  107. data/testdata/regex/optional.yaml +2 -0
  108. data/testdata/regex/parameter.yaml +2 -0
  109. data/testdata/regex/text.yaml +2 -0
  110. data/testdata/regex/unicode.yaml +2 -0
  111. data/testdata/tokens/alternation-phrase.yaml +13 -0
  112. data/testdata/tokens/alternation.yaml +9 -0
  113. data/testdata/tokens/empty-string.yaml +6 -0
  114. data/testdata/tokens/escape-non-reserved-character.yaml +8 -0
  115. data/testdata/tokens/escaped-alternation.yaml +9 -0
  116. data/testdata/tokens/escaped-char-has-start-index-of-text-token.yaml +9 -0
  117. data/testdata/tokens/escaped-end-of-line.yaml +8 -0
  118. data/testdata/tokens/escaped-optional.yaml +7 -0
  119. data/testdata/tokens/escaped-parameter.yaml +7 -0
  120. data/testdata/tokens/escaped-space.yaml +7 -0
  121. data/testdata/tokens/optional-phrase.yaml +13 -0
  122. data/testdata/tokens/optional.yaml +9 -0
  123. data/testdata/tokens/parameter-phrase.yaml +13 -0
  124. data/testdata/tokens/parameter.yaml +9 -0
  125. data/testdata/tokens/phrase.yaml +11 -0
  126. metadata +117 -11
  127. data/spec/cucumber/cucumber_expressions/cucumber_expression_regexp_spec.rb +0 -57
@@ -0,0 +1,9 @@
1
+ expression: blind\ and\ famished\/cripple mice
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 29, "text": "blind and famished/cripple"},
6
+ {"type": "WHITE_SPACE", "start": 29, "end": 30, "text": " "},
7
+ {"type": "TEXT", "start": 30, "end": 34, "text": "mice"},
8
+ {"type": "END_OF_LINE", "start": 34, "end": 34, "text": ""}
9
+ ]
@@ -0,0 +1,9 @@
1
+ expression: ' \/ '
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "WHITE_SPACE", "start": 0, "end": 1, "text": " "},
6
+ {"type": "TEXT", "start": 1, "end": 3, "text": "/"},
7
+ {"type": "WHITE_SPACE", "start": 3, "end": 4, "text": " "},
8
+ {"type": "END_OF_LINE", "start": 4, "end": 4, "text": ""}
9
+ ]
@@ -0,0 +1,8 @@
1
+ expression: \
2
+ exception: |-
3
+ This Cucumber Expression has a problem at column 1:
4
+
5
+ \
6
+ ^
7
+ The end of line can not be escaped.
8
+ You can use '\\' to escape the the '\'
@@ -0,0 +1,7 @@
1
+ expression: \(blind\)
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 9, "text": "(blind)"},
6
+ {"type": "END_OF_LINE", "start": 9, "end": 9, "text": ""}
7
+ ]
@@ -0,0 +1,7 @@
1
+ expression: \{string\}
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 10, "text": "{string}"},
6
+ {"type": "END_OF_LINE", "start": 10, "end": 10, "text": ""}
7
+ ]
@@ -0,0 +1,7 @@
1
+ expression: '\ '
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 2, "text": " "},
6
+ {"type": "END_OF_LINE", "start": 2, "end": 2, "text": ""}
7
+ ]
@@ -0,0 +1,13 @@
1
+ expression: three (blind) mice
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
6
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
7
+ {"type": "BEGIN_OPTIONAL", "start": 6, "end": 7, "text": "("},
8
+ {"type": "TEXT", "start": 7, "end": 12, "text": "blind"},
9
+ {"type": "END_OPTIONAL", "start": 12, "end": 13, "text": ")"},
10
+ {"type": "WHITE_SPACE", "start": 13, "end": 14, "text": " "},
11
+ {"type": "TEXT", "start": 14, "end": 18, "text": "mice"},
12
+ {"type": "END_OF_LINE", "start": 18, "end": 18, "text": ""}
13
+ ]
@@ -0,0 +1,9 @@
1
+ expression: (blind)
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "BEGIN_OPTIONAL", "start": 0, "end": 1, "text": "("},
6
+ {"type": "TEXT", "start": 1, "end": 6, "text": "blind"},
7
+ {"type": "END_OPTIONAL", "start": 6, "end": 7, "text": ")"},
8
+ {"type": "END_OF_LINE", "start": 7, "end": 7, "text": ""}
9
+ ]
@@ -0,0 +1,13 @@
1
+ expression: three {string} mice
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
6
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
7
+ {"type": "BEGIN_PARAMETER", "start": 6, "end": 7, "text": "{"},
8
+ {"type": "TEXT", "start": 7, "end": 13, "text": "string"},
9
+ {"type": "END_PARAMETER", "start": 13, "end": 14, "text": "}"},
10
+ {"type": "WHITE_SPACE", "start": 14, "end": 15, "text": " "},
11
+ {"type": "TEXT", "start": 15, "end": 19, "text": "mice"},
12
+ {"type": "END_OF_LINE", "start": 19, "end": 19, "text": ""}
13
+ ]
@@ -0,0 +1,9 @@
1
+ expression: "{string}"
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "BEGIN_PARAMETER", "start": 0, "end": 1, "text": "{"},
6
+ {"type": "TEXT", "start": 1, "end": 7, "text": "string"},
7
+ {"type": "END_PARAMETER", "start": 7, "end": 8, "text": "}"},
8
+ {"type": "END_OF_LINE", "start": 8, "end": 8, "text": ""}
9
+ ]
@@ -0,0 +1,11 @@
1
+ expression: three blind mice
2
+ expected: |-
3
+ [
4
+ {"type": "START_OF_LINE", "start": 0, "end": 0, "text": ""},
5
+ {"type": "TEXT", "start": 0, "end": 5, "text": "three"},
6
+ {"type": "WHITE_SPACE", "start": 5, "end": 6, "text": " "},
7
+ {"type": "TEXT", "start": 6, "end": 11, "text": "blind"},
8
+ {"type": "WHITE_SPACE", "start": 11, "end": 12, "text": " "},
9
+ {"type": "TEXT", "start": 12, "end": 16, "text": "mice"},
10
+ {"type": "END_OF_LINE", "start": 16, "end": 16, "text": ""}
11
+ ]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-cucumber-expressions
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.1.0
4
+ version: 11.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-14 00:00:00.000000000 Z
11
+ date: 2020-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -36,20 +36,20 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.9'
39
+ version: '3.10'
40
40
  - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: 3.9.0
42
+ version: 3.10.0
43
43
  type: :development
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - "~>"
48
48
  - !ruby/object:Gem::Version
49
- version: '3.9'
49
+ version: '3.10'
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
- version: 3.9.0
52
+ version: 3.10.0
53
53
  description: Cucumber Expressions - a simpler alternative to Regular Expressions
54
54
  email: cukes@googlegroups.com
55
55
  executables: []
@@ -66,13 +66,17 @@ files:
66
66
  - Makefile
67
67
  - README.md
68
68
  - Rakefile
69
+ - VERSION
69
70
  - cucumber-cucumber-expressions.gemspec
70
71
  - default.mk
71
72
  - examples.txt
72
73
  - lib/cucumber/cucumber_expressions/argument.rb
74
+ - lib/cucumber/cucumber_expressions/ast.rb
73
75
  - lib/cucumber/cucumber_expressions/combinatorial_generated_expression_factory.rb
74
76
  - lib/cucumber/cucumber_expressions/cucumber_expression.rb
75
77
  - lib/cucumber/cucumber_expressions/cucumber_expression_generator.rb
78
+ - lib/cucumber/cucumber_expressions/cucumber_expression_parser.rb
79
+ - lib/cucumber/cucumber_expressions/cucumber_expression_tokenizer.rb
76
80
  - lib/cucumber/cucumber_expressions/errors.rb
77
81
  - lib/cucumber/cucumber_expressions/expression_factory.rb
78
82
  - lib/cucumber/cucumber_expressions/generated_expression.rb
@@ -88,8 +92,9 @@ files:
88
92
  - spec/cucumber/cucumber_expressions/argument_spec.rb
89
93
  - spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_test.rb
90
94
  - spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb
91
- - spec/cucumber/cucumber_expressions/cucumber_expression_regexp_spec.rb
95
+ - spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb
92
96
  - spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
97
+ - spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb
93
98
  - spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb
94
99
  - spec/cucumber/cucumber_expressions/expression_examples_spec.rb
95
100
  - spec/cucumber/cucumber_expressions/expression_factory_spec.rb
@@ -97,6 +102,107 @@ files:
97
102
  - spec/cucumber/cucumber_expressions/parameter_type_spec.rb
98
103
  - spec/cucumber/cucumber_expressions/regular_expression_spec.rb
99
104
  - spec/cucumber/cucumber_expressions/tree_regexp_spec.rb
105
+ - testdata/ast/alternation-followed-by-optional.yaml
106
+ - testdata/ast/alternation-phrase.yaml
107
+ - testdata/ast/alternation-with-parameter.yaml
108
+ - testdata/ast/alternation-with-unused-end-optional.yaml
109
+ - testdata/ast/alternation-with-unused-start-optional.yaml
110
+ - testdata/ast/alternation-with-white-space.yaml
111
+ - testdata/ast/alternation.yaml
112
+ - testdata/ast/anonymous-parameter.yaml
113
+ - testdata/ast/closing-brace.yaml
114
+ - testdata/ast/closing-parenthesis.yaml
115
+ - testdata/ast/empty-alternation.yaml
116
+ - testdata/ast/empty-alternations.yaml
117
+ - testdata/ast/empty-string.yaml
118
+ - testdata/ast/escaped-alternation.yaml
119
+ - testdata/ast/escaped-backslash.yaml
120
+ - testdata/ast/escaped-opening-parenthesis.yaml
121
+ - testdata/ast/escaped-optional-followed-by-optional.yaml
122
+ - testdata/ast/escaped-optional-phrase.yaml
123
+ - testdata/ast/escaped-optional.yaml
124
+ - testdata/ast/opening-brace.yaml
125
+ - testdata/ast/opening-parenthesis.yaml
126
+ - testdata/ast/optional-containing-nested-optional.yaml
127
+ - testdata/ast/optional-phrase.yaml
128
+ - testdata/ast/optional.yaml
129
+ - testdata/ast/parameter.yaml
130
+ - testdata/ast/phrase.yaml
131
+ - testdata/ast/unfinished-parameter.yaml
132
+ - testdata/expression/allows-escaped-optional-parameter-types.yaml
133
+ - testdata/expression/allows-parameter-type-in-alternation-1.yaml
134
+ - testdata/expression/allows-parameter-type-in-alternation-2.yaml
135
+ - testdata/expression/does-allow-parameter-adjacent-to-alternation.yaml
136
+ - testdata/expression/does-not-allow-alternation-in-optional.yaml
137
+ - testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-left-parameter.yaml
138
+ - testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-optional.yaml
139
+ - testdata/expression/does-not-allow-alternation-with-empty-alternative-by-adjacent-right-parameter.yaml
140
+ - testdata/expression/does-not-allow-alternation-with-empty-alternative.yaml
141
+ - testdata/expression/does-not-allow-empty-optional.yaml
142
+ - testdata/expression/does-not-allow-nested-optional.yaml
143
+ - testdata/expression/does-not-allow-optional-parameter-types.yaml
144
+ - testdata/expression/does-not-allow-parameter-name-with-reserved-characters.yaml
145
+ - testdata/expression/does-not-allow-unfinished-parenthesis-1.yaml
146
+ - testdata/expression/does-not-allow-unfinished-parenthesis-2.yaml
147
+ - testdata/expression/does-not-allow-unfinished-parenthesis-3.yaml
148
+ - testdata/expression/does-not-match-misquoted-string.yaml
149
+ - testdata/expression/doesnt-match-float-as-int.yaml
150
+ - testdata/expression/matches-alternation.yaml
151
+ - testdata/expression/matches-anonymous-parameter-type.yaml
152
+ - testdata/expression/matches-double-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
153
+ - testdata/expression/matches-double-quoted-empty-string-as-empty-string.yaml
154
+ - testdata/expression/matches-double-quoted-string-with-escaped-double-quote.yaml
155
+ - testdata/expression/matches-double-quoted-string-with-single-quotes.yaml
156
+ - testdata/expression/matches-double-quoted-string.yaml
157
+ - testdata/expression/matches-doubly-escaped-parenthesis.yaml
158
+ - testdata/expression/matches-doubly-escaped-slash-1.yaml
159
+ - testdata/expression/matches-doubly-escaped-slash-2.yaml
160
+ - testdata/expression/matches-escaped-parenthesis-1.yaml
161
+ - testdata/expression/matches-escaped-parenthesis-2.yaml
162
+ - testdata/expression/matches-escaped-parenthesis-3.yaml
163
+ - testdata/expression/matches-escaped-slash.yaml
164
+ - testdata/expression/matches-float-1.yaml
165
+ - testdata/expression/matches-float-2.yaml
166
+ - testdata/expression/matches-int.yaml
167
+ - testdata/expression/matches-multiple-double-quoted-strings.yaml
168
+ - testdata/expression/matches-multiple-single-quoted-strings.yaml
169
+ - testdata/expression/matches-optional-before-alternation-1.yaml
170
+ - testdata/expression/matches-optional-before-alternation-2.yaml
171
+ - testdata/expression/matches-optional-before-alternation-with-regex-characters-1.yaml
172
+ - testdata/expression/matches-optional-before-alternation-with-regex-characters-2.yaml
173
+ - testdata/expression/matches-optional-in-alternation-1.yaml
174
+ - testdata/expression/matches-optional-in-alternation-2.yaml
175
+ - testdata/expression/matches-optional-in-alternation-3.yaml
176
+ - testdata/expression/matches-single-quoted-empty-string-as-empty-string-along-with-other-strings.yaml
177
+ - testdata/expression/matches-single-quoted-empty-string-as-empty-string.yaml
178
+ - testdata/expression/matches-single-quoted-string-with-double-quotes.yaml
179
+ - testdata/expression/matches-single-quoted-string-with-escaped-single-quote.yaml
180
+ - testdata/expression/matches-single-quoted-string.yaml
181
+ - testdata/expression/matches-word.yaml
182
+ - testdata/expression/throws-unknown-parameter-type.yaml
183
+ - testdata/regex/alternation-with-optional.yaml
184
+ - testdata/regex/alternation.yaml
185
+ - testdata/regex/empty.yaml
186
+ - testdata/regex/escape-regex-characters.yaml
187
+ - testdata/regex/optional.yaml
188
+ - testdata/regex/parameter.yaml
189
+ - testdata/regex/text.yaml
190
+ - testdata/regex/unicode.yaml
191
+ - testdata/tokens/alternation-phrase.yaml
192
+ - testdata/tokens/alternation.yaml
193
+ - testdata/tokens/empty-string.yaml
194
+ - testdata/tokens/escape-non-reserved-character.yaml
195
+ - testdata/tokens/escaped-alternation.yaml
196
+ - testdata/tokens/escaped-char-has-start-index-of-text-token.yaml
197
+ - testdata/tokens/escaped-end-of-line.yaml
198
+ - testdata/tokens/escaped-optional.yaml
199
+ - testdata/tokens/escaped-parameter.yaml
200
+ - testdata/tokens/escaped-space.yaml
201
+ - testdata/tokens/optional-phrase.yaml
202
+ - testdata/tokens/optional.yaml
203
+ - testdata/tokens/parameter-phrase.yaml
204
+ - testdata/tokens/parameter.yaml
205
+ - testdata/tokens/phrase.yaml
100
206
  homepage: https://github.com/cucumber/cucumber-expressions-ruby#readme
101
207
  licenses:
102
208
  - MIT
@@ -122,18 +228,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
122
228
  - !ruby/object:Gem::Version
123
229
  version: '0'
124
230
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.7.6.2
231
+ rubygems_version: 3.1.2
127
232
  signing_key:
128
233
  specification_version: 4
129
- summary: cucumber-expressions-10.1.0
234
+ summary: cucumber-expressions-11.0.0
130
235
  test_files:
131
236
  - spec/capture_warnings.rb
132
237
  - spec/cucumber/cucumber_expressions/argument_spec.rb
133
238
  - spec/cucumber/cucumber_expressions/combinatorial_generated_expression_factory_test.rb
134
239
  - spec/cucumber/cucumber_expressions/cucumber_expression_generator_spec.rb
135
- - spec/cucumber/cucumber_expressions/cucumber_expression_regexp_spec.rb
240
+ - spec/cucumber/cucumber_expressions/cucumber_expression_parser_spec.rb
136
241
  - spec/cucumber/cucumber_expressions/cucumber_expression_spec.rb
242
+ - spec/cucumber/cucumber_expressions/cucumber_expression_tokenizer_spec.rb
137
243
  - spec/cucumber/cucumber_expressions/custom_parameter_type_spec.rb
138
244
  - spec/cucumber/cucumber_expressions/expression_examples_spec.rb
139
245
  - spec/cucumber/cucumber_expressions/expression_factory_spec.rb
@@ -1,57 +0,0 @@
1
- require 'cucumber/cucumber_expressions/cucumber_expression'
2
- require 'cucumber/cucumber_expressions/parameter_type_registry'
3
-
4
- module Cucumber
5
- module CucumberExpressions
6
- describe CucumberExpression do
7
- context "Regexp translation" do
8
- def assert_regexp(expression, regexp)
9
- cucumber_expression = CucumberExpression.new(expression, ParameterTypeRegistry.new)
10
- expect(regexp).to eq(cucumber_expression.regexp)
11
- end
12
-
13
- it "translates no arguments" do
14
- assert_regexp(
15
- "I have 10 cukes in my belly now",
16
- /^I have 10 cukes in my belly now$/
17
- )
18
- end
19
-
20
- it "translates alternation" do
21
- assert_regexp(
22
- "I had/have a great/nice/charming friend",
23
- /^I (?:had|have) a (?:great|nice|charming) friend$/
24
- )
25
- end
26
-
27
- it "translates alternation with non-alpha" do
28
- assert_regexp(
29
- "I said Alpha1/Beta1",
30
- /^I said (?:Alpha1|Beta1)$/
31
- )
32
- end
33
-
34
- it "translates parameters" do
35
- assert_regexp(
36
- "I have {float} cukes at {int} o'clock",
37
- /^I have ((?=.*\d.*)[-+]?\d*(?:\.(?=\d.*))?\d*(?:\d+[E][-+]?\d+)?) cukes at ((?:-?\d+)|(?:\d+)) o'clock$/
38
- )
39
- end
40
-
41
- it "translates parenthesis to non-capturing optional capture group" do
42
- assert_regexp(
43
- "I have many big(ish) cukes",
44
- /^I have many big(?:ish)? cukes$/
45
- )
46
- end
47
-
48
- it "translates parenthesis with alpha unicode" do
49
- assert_regexp(
50
- "Привет, Мир(ы)!",
51
- /^Привет, Мир(?:ы)?!$/
52
- )
53
- end
54
- end
55
- end
56
- end
57
- end