Skip to content

Commit b98d449

Browse files
Add JSON serialize/deserialize support for JavaScript (#180)
* Add JSON serialize/deserialize support for JavaScript * Update changelog
1 parent e7bde32 commit b98d449

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
88
## [Unreleased]
99
### Added
1010
- [Java] Enabled reproducible builds
11+
- [JavaScript] Added `ParameterType.builtin`. This is to allow JSON serialization of only the non-builtin parameter types.
12+
1113
## [16.0.1] - 2022-11-06
1214
### Fixed
1315
- [JavaScript] The `ParameterType` constructor's `transform`, `useForSnippets` and `preferForRegexpMatch` should be optional. ([#178](https://github.com/cucumber/cucumber-expressions/pull/178))

javascript/src/ParameterType.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,16 @@ export default class ParameterType<T> {
4949
* @param transform {Function} function transforming string to another type. May be null.
5050
* @param useForSnippets {boolean} true if this should be used for snippets. Defaults to true.
5151
* @param preferForRegexpMatch {boolean} true if this is a preferential type. Defaults to false.
52+
* @param builtin whether or not this is a built-in type
5253
*/
5354
constructor(
5455
public readonly name: string | undefined,
5556
regexps: RegExps,
5657
public readonly type: Constructor<T> | Factory<T> | null,
5758
transform?: (...match: string[]) => T | PromiseLike<T>,
5859
public readonly useForSnippets?: boolean,
59-
public readonly preferForRegexpMatch?: boolean
60+
public readonly preferForRegexpMatch?: boolean,
61+
public readonly builtin?: boolean
6062
) {
6163
if (transform === undefined) {
6264
transform = (s) => s as unknown as T

javascript/src/defineDefaultParameterTypes.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
1515
Number,
1616
(s) => (s === undefined ? null : Number(s)),
1717
true,
18+
true,
1819
true
1920
)
2021
)
@@ -25,11 +26,12 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
2526
Number,
2627
(s) => (s === undefined ? null : parseFloat(s)),
2728
true,
28-
false
29+
false,
30+
true
2931
)
3032
)
3133
registry.defineParameterType(
32-
new ParameterType('word', WORD_REGEXP, String, (s) => s, false, false)
34+
new ParameterType('word', WORD_REGEXP, String, (s) => s, false, false, true)
3335
)
3436
registry.defineParameterType(
3537
new ParameterType(
@@ -38,11 +40,12 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
3840
String,
3941
(s1, s2) => (s1 || s2 || '').replace(/\\"/g, '"').replace(/\\'/g, "'"),
4042
true,
41-
false
43+
false,
44+
true
4245
)
4346
)
4447
registry.defineParameterType(
45-
new ParameterType('', ANONYMOUS_REGEXP, String, (s) => s, false, true)
48+
new ParameterType('', ANONYMOUS_REGEXP, String, (s) => s, false, true, true)
4649
)
4750

4851
registry.defineParameterType(
@@ -52,7 +55,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
5255
Number,
5356
(s) => (s === undefined ? null : parseFloat(s)),
5457
false,
55-
false
58+
false,
59+
true
5660
)
5761
)
5862

@@ -63,7 +67,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
6367
String,
6468
(s) => (s === undefined ? null : s),
6569
false,
66-
false
70+
false,
71+
true
6772
)
6873
)
6974

@@ -74,7 +79,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
7479
Number,
7580
(s) => (s === undefined ? null : Number(s)),
7681
false,
77-
false
82+
false,
83+
true
7884
)
7985
)
8086

@@ -85,7 +91,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
8591
Number,
8692
(s) => (s === undefined ? null : Number(s)),
8793
false,
88-
false
94+
false,
95+
true
8996
)
9097
)
9198

@@ -96,7 +103,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
96103
Number,
97104
(s) => (s === undefined ? null : Number(s)),
98105
false,
99-
false
106+
false,
107+
true
100108
)
101109
)
102110

@@ -107,7 +115,8 @@ export default function defineDefaultParameterTypes(registry: DefinesParameterTy
107115
BigInt,
108116
(s) => (s === undefined ? null : BigInt(s)),
109117
false,
110-
false
118+
false,
119+
true
111120
)
112121
)
113122
}

0 commit comments

Comments
 (0)