All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
15.1.0 - 2022-04-21
- [JavaScript] Add
CucumberExpression.ast
and expose the AST types.
15.0.2 - 2022-03-15
- Add missing
name
field in CommonJS package file (#87)
15.0.1 - 2022-01-04
- Fixed release scripts
15.0.0 - 2022-01-04
- [Ruby,JavaScript,Go] Add
bigdecimal
,biginteger
parameter types (#42) - [.NET] Implementation of Cucumber Expressions by porting the Java parser (#1743)
- [Python] Added Python Cucumber Expressions (#65)
- [Go] Parameters of type
{float}
are now parsed asfloat32
(previously it wasfloat64
). Use{double}
if you needfloat64
. (#42)
14.0.0 - 2021-10-12
- TypeScript:
Group#value
can no longer beundefined
(#16) - TypeScript:
Argument
is no longer generic (#16) - Go: Module renamed to match github repository(#24)
13.1.3 - 2021-09-24
- Fix release for the Go implementation
13.1.2 - 2021-09-24
- Fix release for the Go implementation
- Minor fixes in the README.md links to documentation
13.1.1 - 2021-09-24
- Fix misc release actions
13.1.0 - 2021-09-24
- [JavaScript] Support for EcmaScript modules (aka ESM). (#1743)
13.0.1 - 2021-09-15
- Remove dependency on Node.js APIs (
util
module) (#1250 #1752 aslakhellesoy) - Remove dependency on Browser APIs (
window
constant) (#1752 aslakhellesoy)
- [JavaScript] Correctly match empty strings (#1329 #1753 aslakhellesoy)
- Remove deprecated
CucumberExpressionGenerator#generateExpression
method. (#1752)
12.1.3 - 2021-09-01
- Use native RegExp Match indices (currently relying on a polyfill) (#1652 aslakhellesoy)
12.1.2 - 2021-08-17
- [Go] Move module paths to point to monorepo (#1550)
- [Java] Upgraded apiguardian to v1.1.2
12.1.1 - 2021-04-06
- [Ruby] use
Array#select
instead ofArray#filter
. The latter is an alias that was introduced in Ruby 2.6.0. (aslakhellesoy)
12.1.0 - 2021-04-06
- [Ruby] Add
UndefinedParameterTypeError#undefined_parameter_type_name
(#1460 aslakhellesoy)
12.0.1 - 2021-04-06
- [JavaScript] Fix issue with some files may not appear in published package (#1452)
- [Java] Support character in BuiltInParameterTransformer. (#1405)
12.0.0 - 2021-02-09
- [JavaScript] removed circular dependencies. (#1292 davidjgoss)
- [JavaScript] revert breaking changes in 11.0.1 (#1352)
11.0.1 - 2021-02-07
- [JavaScript] removed circular dependencies. (#1292 davidjgoss)
11.0.0 - 2020-12-10
- Some expressions that were valid in previous versions may now be invalid
- Some expressions that were invalid in previous versions may now be valid
- [Go, Java, JavaScript, Ruby] New handwritten parser, which fixes several long-standing bugs. (#601 #726 #767 #770 #771 mpkorstanje)
- [Go] Support for Go 1.15
- [JavaScript] Removed webpacked JavaScript from distribution
10.3.0 - 2020-08-07
- [JavaScript] export
GeneratedExpression
10.2.2 - 2020-07-30
- Use Unicode symbols as a parameter boundary in snippets (#1108 mpkorstanje)
10.2.1 - 2020-06-23
- [Java, Go, Ruby, JavaScript] Parse all group variants (#1069 mpkorstanje)
- [Java, Go, Ruby, JavaScript] Retain position of optional groups (#1076 mpkorstanje)
10.2.0 - 2020-05-28
- [Java] Add support for Optional (#1006 gaeljw, mpkorstanje)
- [Java] Enable consumers to find our version at runtime using
clazz.getPackage().getImplementationVersion()
by upgrading tocucumber-parent:2.1.0
(#976 aslakhellesoy)
10.1.0 - 2020-04-14
- [Java]
CucumberExpression
andRegularExpression
are now public.
- [Java] Minor performance improvement for matching regular expressions steps.
10.0.0 - 2020-03-31
- [JavaScript] All array return values and function parameters are now declared as TypeScript
ReadOnlyArray
9.0.0 - 2020-02-14
- [JavaScript, Ruby] Added
ExpressionFactory
, which is now the preferred way to createExpression
instances.
- [Ruby]
CucumberExpression
andRegularExpression
constructors should not be used directly. UseExpressionFactory#create_expression
instead.
- [Java, JavaScript]
CucumberExpression
andRegularExpression
are no longer part of the public API. - [JavaScript] remove support for Node 8, which is now EOL
8.3.1 - 2020-01-10
8.3.0 - 2019-12-10
- [JavaScript] export
Argument
,Group
andExpression
types
8.2.1 - 2019-11-11
- Fix webpack packaging (simplify by assigning to
window.CucumberExpressions
)
8.2.0 - 2019-11-11
- [JavaScript] build with webpack. (#792 aslakhellesoy)
8.1.0 - 2019-10-31
- Expose
Argument#getParameterType()
method. Needed by Cucumberprotobuf
formatters. (#781 aslakhellesoy)
8.0.2 - 2019-10-28
- [Go] Change Go module name to
github.com/cucumber/cucumber-expressions-go/v8
(aslakhellesoy) - Fix captured empty strings being undefined (#746 #754 davidjgoss)
8.0.1 - 2019-10-07
- [JavaScript] Support Node 8 (#732 #725 charlierudolph)
8.0.0 - 2019-08-11
- [Java] Annotate function interfaces with @FunctionalInterface (cucumber/cucumber-jvm#1716 mpkorstanje)
- [Java] Mark public api with @API Guardian annotations (cucumber/cucumber-jvm#1536 mpkorstanje)
- Improve decimal number parsing (#669 #672 #675 #677 mpkorstanje)
- Only suggest parameter types when text is surrounded by whitespace or punctuation (#657 #661 vincent-psarga luke-hill)
- [Java] Upgrades to
cucumber-parent:2.0.2
- [Java] Simplify heuristics to distinguish between Cucumber Expressions and Regular Expressions (#515 #581 mpkorstanje)
- [Java/Go] cucumber-expressions: Prefer language type hint over parameter type (#658 #659 mpkorstanje)
- Fix RegExp lookaround (#643 #644 vincent-psarga)
- Match integer strings as
{float}
. (#600 #605 aslakhellesoy) - reconized lookaround as a non-capturing regex (#481 #593 #643 #644 luke-hill)
7.0.2 - 2019-06-15
7.0.0 - 2019-03-22
- Javascript release process
- Version numbering 🙈
6.2.3 - 2019-03-22
- Ruby release process working again
6.2.2 - 2019-03-16
- Limit generated expressions to 256 (#576, #574 mpkorstanje)
- Allow parameter-types in escaped optional groups (#572, #561 luke-hill, jaysonesmith, mpkorstanje)
- Prefer expression with the longest non-empty match #580 (#580, #575 mpkorstanje)
6.2.1 - 2018-11-30
- (Java) Improve heuristics for creating Cucumber/Regular Expressions from strings (#515 #518 aslakhellesoy)
6.2.0 - 2018-10-28
- Add anonymous parameter types (#496 mpkorstanje)
6.1.2 - 2018-10-11
6.1.1 - 2018-10-11
- (Java) Add the ability to supply an alternative algorithm for compiling
java.util.regex.Pattern
to work around a limitation on Android (and other platforms). (#494 #498 lsuski)
- (Java) Added
ParameterType.fromEnum(MyEnumClass.class)
to make it easier to register enums. (#423 aslakhellesoy)
- java: The text between
()
(optional text) can be unicode. (#473 savkk - The built-in
{word}
parameter type handles unicode (any non-space character) (#471 savkk - Parenthesis inside character class should not be treated as capture group. (#454 #461 #463 #464 aidamanna spicalous)
- java: OSGi support has been removed. (#412 aslakhellesoy)
6.0.1 - 2018-06-14
- Allow
ParameterType
with no name (nil
,null
,""
). Useful when the Parameter Type is only used in conjunction with Regular Expressions. (#387 #410 aslakhellesoy)
- Support empty capture groups. (#404 #411 aslakhellesoy)
- Better error message if a parameter type has a name with one of the characters
()[]$.|?*+
. (#387 #410 aslakhellesoy)
6.0.0 - 2018-05-30
- Throw an error if a parameter type is used inside optional text parenthesis, or with alternative text. (#360 aslakhellesoy)
- Bugfix for nested capture groups. (#375 #380 aslakhellesoy)
- java: Escape closing braces to avoid PatternSyntaxException on Android
5.0.18 - 2018-05-21
- java: The
{byte}
parameter type no longer uses hexadecimal, but uses the same pattern as{short}
,{int}
and{long}
.
- The
/
character can be escaped with\/
in order to keep a literal/
rather than interpreting it as alternation character. Generated expressions will use\/
if the original text contains/
. (#391 #392 aslakhellesoy)
- java: Swapped 2 parameters in a
ParameterType
constructor to make it consistent with overloaded constructors.
5.0.16 - 2018-04-12
- java: Renamed
{bigint}
to{biginteger}
([mpkorstanje, aslakhellesoy]) - java: The API uses
Transformer
for transforms with 0-1 capture groups, andCaptureGroupTransformer
for 2+ capture groups.
- java: Better error message when users leave anchors (^ and $) in their regular expressions (aslakhellesoy)
- java:
{bigdecimal}
would only match integers ([mpkorstanje, aslakhellesoy]) - java:
{byte}
is suggested in snippets (mpkorstanje)
5.0.15 - 2018-04-08
- go: Added Go implementation (#350 charlierudolph)
- java: Change the Java API (e246e7c76045f9a379cebe46e40a0f2705c9d82c mpkorstanje)
5.0.14 - 2018-04-04
- Matching a literal open-parenthesis (#107 #333 #334 jamis)
- Matching a literal left curly brace aslakhellesoy
- Generated expressions escape
(
and{
if they were present in the text. (#345 aslakhellesoy)
- ruby: Support for named capture group in
Regexp
(#329 aslakhellesoy)
5.0.13 - 2018-01-21
- Fixed yet another regression introduced by #324
and simplified capture group parsing in
TreeRegexp
to reduce likelihood of more bugs.
5.0.12 - 2018-01-19
- javascript: Fixed another regression introduced by #324 (#326 #327 mpkorstanje)
- javascript: Fixed a regression introduced by #324 (#325 aslakhellesoy)
5.0.10 - 2018-01-19
- Support escaped backslashes (
\\
) in Regular expressions. (#323 #324 aslakhellesoy)
5.0.7 - 2017-11-29
- ruby: Only disallow
Regexp::EXTENDED
,Regexp::IGNORECASE
andRegexp::MULTILINE
inParameterType
regexps. Other flags such asRegexp::NOENCODING
andRegexp::FIXEDENCODING
are OK.
5.0.6 - 2017-11-28
- javascript: Backport
RegExp#flags
for Node 4.x
5.0.5 - 2017-11-28
- ruby: Fix typo in
ParameterType
error message. (#306 aslakhellesoy, luke-hill) - Ignore
ParameterType
s with optional capture groups when generating snippets. Trying to do so caused an infinite loop. (#307 aslakhellesoy) - Throw an error when
ParameterType
regexps have flags. Flags are not allowed because only the source of the regexp is used to build a new regexp for the entire Cucumber Expression. See #308. (aslakhellesoy)
5.0.4 - 2017-11-28
- Cucumber Expressions with alternation (
I said Alpha1/Beta1
) now works with more than just letters - it works with anything that isn't a space. (#303 by aslakhellesoy)
- javascript: Support RegExp flags (#300 by aslakhellesoy and dmeehan1968)
5.0.2 - 2017-10-20
- java: Make the jar a bundle to support osgi. (#287 by mpkorstanje)
- ruby, javascript: A
transformer
function can run in the context of a world object.Argument#value
now takes an object as argument (renamed toArgument#getValue
in js) (#284 by aslakhellesoy)
4.0.4 - 2017-10-05
- java: Backport to Java 7 (#1 by mpkorstanje)
- Support
%
in undefined steps so snippet generation doesn't crash. (#276, #279 by aslakhellesoy) - Support escaped parenthesis in Regular expressions (#254 by jaysonesmith, aslakhellesoy)
4.0.3 - 2017-07-24
- javascript: Expose
Argument.group
and fixstart
andend
accessors inGroup
- javascript: Make it work on Node 4 and browser (Use
Array.indexOf
instead ofArray.includes
) (#237 by aslakhellesoy)
4.0.1 - 2017-07-14
- Fix bugs with nested and optional capture groups (#237 by aslakhellesoy)
4.0.0 - 2017-06-28
- Support capture groups in parameter types (#227 #57 #204 #224 by aslakhellesoy)
- Add
{word}
built-in parameter type (#191 #226 by aslakhellesoy) - Add
{string}
built-in parameter type (#190 #231 by aslakhellesoy)
- Allow duplicate regexps in parameter types (#186 #132 by aslakhellesoy)
- RegularExpression constructor is not filtering non-capturing groups (#211 #179 #216 #220 by kAworu, aslakhellesoy)
- Remove support for
{name:type}
syntax which was deprecated in #117 and released in 2.0.0. (#180 by aslakhellesoy) - Removed support for
{undefined}
parameter types. If a parameter type is not defined, and error will be raised.
3.0.0 - 2017-03-08
- Alternative text:
I have a cat/dog/fish
(by aslakhellesoy) type
/constructorFunction
: Makes it simpler to use in languages without static typestransform
: Leave arguments unchanged, return as string (by aslakhellesoy)ParameterType
can be constructed withnull
/nil
arguments for
Parameter -> ParameterType
ParameterRegistry -> ParameterTypeRegistry
addParameter -> defineParameterType
- Renamed API:
- Stricter conflict checks when defining parameters (#121 by aslakhellesoy)
- java: Drop support for Java 7 (Java 8 or higher is required)
2.0.1 - 2017-02-17
- Document how to define
async
parameters. Depends on cucumber/cucumber-js#753. (#108 by aslakhellesoy)
- Defer parameter transformation until after the match (#118 #120 by aslakhellesoy)
- Tweak Babel settings to produce ES5 code (#119 by aslakhellesoy)
2.0.0 - 2017-02-17
- Deprecate
{name:type}
syntax in favour of{type}
(#117 by aslakhellesoy) - Rename transform to parameter (#114 #115 by aslakhellesoy)
- Escape RegExp characters. (#103 #106 by charlierudolph and aslakhellesoy)
- Regexp literals in transforms. (#109 by aslakhellesoy)
1.0.4 - 2017-01-20
- ruby: Use
Integer
instead ofFixnum
- Handle multiple capture group regexps for matching (#102 by gpichot)
- Make the tests pass on Ruby 2.4.0 (as well as older rubies)
1.0.3 - 2016-11-25
- Include
dist
in npm package. (#85 by aslakhellesoy)
1.0.2 - 2016-11-23
- Generated expressions - expose argument names. (#83 by charlierudolph)
- Build JavaScript code with Babel. (#86 by aslakhellesoy)
- Handle optional groups in regexp. (#87 by brasmusson)
1.0.1 - 2016-09-28
- First stable release!