@cucumber/tag-expressions 2.0.4 → 3.0.1
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.
- package/.mocharc.json +6 -0
- package/README.md +0 -1
- package/default.mk +30 -30
- package/dist/src/{tag_expression_parser.d.ts → index.d.ts} +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/{tag_expression_parser.js → index.js} +54 -68
- package/dist/src/index.js.map +1 -0
- package/dist/test/tag_expression_parser_test.d.ts +1 -0
- package/dist/test/tag_expression_parser_test.d.ts.map +1 -0
- package/dist/test/tag_expression_parser_test.js +20 -18
- package/dist/test/tag_expression_parser_test.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1900 -0
- package/package.json +10 -20
- package/src/{tag_expression_parser.ts → index.ts} +8 -29
- package/test/tag_expression_parser_test.ts +12 -11
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +1 -27
- package/.nycrc.json +0 -16
- package/.prettierrc +0 -5
- package/dist/src/tag_expression_parser.js.map +0 -1
- package/scripts/npm-link +0 -11
- package/test/mocha.opts +0 -5
- package/tslint.json +0 -23
package/.mocharc.json
ADDED
package/README.md
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://greenkeeper.io/)
|
|
4
4
|
|
|
5
|
-
[](https://travis-ci.org/cucumber/tag-expressions-javascript)
|
|
6
5
|
|
|
7
6
|
[The docs are here](https://cucumber.io/docs/cucumber/api/#tag-expressions).
|
|
8
7
|
|
package/default.mk
CHANGED
|
@@ -1,69 +1,69 @@
|
|
|
1
1
|
SHELL := /usr/bin/env bash
|
|
2
|
-
|
|
2
|
+
# https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
|
|
3
|
+
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
|
|
4
|
+
TYPESCRIPT_SOURCE_FILES = $(sort $(call rwildcard,src test,*.ts *.tsx))
|
|
3
5
|
PRIVATE = $(shell node -e "console.log(require('./package.json').private)")
|
|
6
|
+
IS_TESTDATA = $(findstring -testdata,${CURDIR})
|
|
7
|
+
NPM_MODULE = $(shell cat package.json | jq .name --raw-output)
|
|
4
8
|
|
|
5
|
-
default: .
|
|
9
|
+
default: .tested
|
|
6
10
|
.PHONY: default
|
|
7
11
|
|
|
8
|
-
.
|
|
12
|
+
.codegen:
|
|
9
13
|
touch $@
|
|
10
14
|
|
|
11
|
-
.
|
|
12
|
-
touch $@
|
|
13
|
-
|
|
14
|
-
.built: .codegen $(TYPESCRIPT_SOURCE_FILES)
|
|
15
|
-
npm run build
|
|
16
|
-
touch $@
|
|
15
|
+
.tested: .tested-npm
|
|
17
16
|
|
|
18
|
-
.tested:
|
|
19
|
-
|
|
17
|
+
.tested-npm: $(TYPESCRIPT_SOURCE_FILES) .codegen
|
|
18
|
+
npm run test
|
|
20
19
|
touch $@
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
touch $@
|
|
25
|
-
|
|
26
|
-
package-lock.json: package.json
|
|
27
|
-
npm install
|
|
28
|
-
touch $@
|
|
21
|
+
pre-release: clean update-version update-dependencies default
|
|
22
|
+
.PHONY: pre-release
|
|
29
23
|
|
|
30
24
|
update-dependencies:
|
|
31
|
-
|
|
25
|
+
../../node_modules/.bin/npm-check-updates --upgrade && \
|
|
26
|
+
pushd ../.. && \
|
|
27
|
+
npm install && \
|
|
28
|
+
npm run build && \
|
|
29
|
+
popd
|
|
32
30
|
.PHONY: update-dependencies
|
|
33
31
|
|
|
34
|
-
remove-local-dependencies:
|
|
35
|
-
cat package.json | sed 's/"@cucumber\/\(.*\)": "file:..\/..\/.*"/"@cucumber\/\1": "0.0.0"/' > package.json.tmp
|
|
36
|
-
mv package.json.tmp package.json
|
|
37
|
-
.PHONY: remove-local-dependencies
|
|
38
|
-
|
|
39
|
-
pre-release: remove-local-dependencies update-version update-dependencies clean default
|
|
40
|
-
.PHONY: pre-release
|
|
41
|
-
|
|
42
32
|
update-version:
|
|
33
|
+
ifeq ($(IS_TESTDATA),-testdata)
|
|
34
|
+
# no-op
|
|
35
|
+
else
|
|
43
36
|
ifdef NEW_VERSION
|
|
44
37
|
npm --no-git-tag-version --allow-same-version version "$(NEW_VERSION)"
|
|
38
|
+
# Update all npm packages that depend on us
|
|
39
|
+
pushd ../.. && \
|
|
40
|
+
./scripts/npm-each update_npm_dependency_if_exists package.json "$(NPM_MODULE)" "^$(NEW_VERSION)"
|
|
41
|
+
# npm install
|
|
45
42
|
else
|
|
46
43
|
@echo -e "\033[0;31mNEW_VERSION is not defined. Can't update version :-(\033[0m"
|
|
47
44
|
exit 1
|
|
48
45
|
endif
|
|
46
|
+
endif
|
|
49
47
|
.PHONY: update-version
|
|
50
48
|
|
|
51
49
|
publish: .codegen
|
|
50
|
+
ifeq ($(IS_TESTDATA),-testdata)
|
|
51
|
+
# no-op
|
|
52
|
+
else
|
|
52
53
|
ifneq (true,$(PRIVATE))
|
|
53
54
|
npm publish --access public
|
|
54
55
|
else
|
|
55
56
|
@echo "Not publishing private npm module"
|
|
56
57
|
endif
|
|
58
|
+
endif
|
|
57
59
|
.PHONY: publish
|
|
58
60
|
|
|
59
61
|
post-release:
|
|
60
|
-
cat package.json | sed 's/"@cucumber\/\(.*\)": .*"/"@cucumber\/\1": "file:..\/..\/\1\/javascript"/' > package.json.tmp
|
|
61
|
-
mv package.json.tmp package.json
|
|
62
62
|
.PHONY: post-release
|
|
63
63
|
|
|
64
64
|
clean: clean-javascript
|
|
65
65
|
.PHONY: clean
|
|
66
66
|
|
|
67
67
|
clean-javascript:
|
|
68
|
-
rm -rf .deps .codegen .
|
|
68
|
+
rm -rf .deps .codegen .tested* node_modules coverage dist acceptance
|
|
69
69
|
.PHONY: clean-javascript
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAyDjD;AAmFD,UAAU,IAAI;IACZ,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;CACvC"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const OPERAND = 'operand';
|
|
4
|
+
const OPERATOR = 'operator';
|
|
5
|
+
const PREC = {
|
|
6
6
|
'(': -2,
|
|
7
7
|
')': -1,
|
|
8
8
|
or: 0,
|
|
9
9
|
and: 1,
|
|
10
10
|
not: 2,
|
|
11
11
|
};
|
|
12
|
-
|
|
12
|
+
const ASSOC = {
|
|
13
13
|
or: 'left',
|
|
14
14
|
and: 'left',
|
|
15
15
|
not: 'right',
|
|
@@ -21,13 +21,13 @@ var ASSOC = {
|
|
|
21
21
|
* This expression can be evaluated by passing in an array of literals that resolve to true
|
|
22
22
|
*/
|
|
23
23
|
function parse(infix) {
|
|
24
|
-
|
|
24
|
+
const tokens = tokenize(infix);
|
|
25
25
|
if (tokens.length === 0) {
|
|
26
26
|
return new True();
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
const expressions = [];
|
|
29
|
+
const operators = [];
|
|
30
|
+
let expectedTokenType = OPERAND;
|
|
31
31
|
tokens.forEach(function (token) {
|
|
32
32
|
if (isUnary(token)) {
|
|
33
33
|
check(expectedTokenType, OPERAND);
|
|
@@ -79,11 +79,11 @@ function parse(infix) {
|
|
|
79
79
|
}
|
|
80
80
|
exports.default = parse;
|
|
81
81
|
function tokenize(expr) {
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
for (
|
|
86
|
-
|
|
82
|
+
const tokens = [];
|
|
83
|
+
let isEscaped = false;
|
|
84
|
+
let token;
|
|
85
|
+
for (let i = 0; i < expr.length; i++) {
|
|
86
|
+
const c = expr.charAt(i);
|
|
87
87
|
if ('\\' === c) {
|
|
88
88
|
isEscaped = true;
|
|
89
89
|
}
|
|
@@ -142,11 +142,11 @@ function pop(stack) {
|
|
|
142
142
|
}
|
|
143
143
|
function pushExpr(token, stack) {
|
|
144
144
|
if (token === 'and') {
|
|
145
|
-
|
|
145
|
+
const rightAndExpr = pop(stack);
|
|
146
146
|
stack.push(new And(pop(stack), rightAndExpr));
|
|
147
147
|
}
|
|
148
148
|
else if (token === 'or') {
|
|
149
|
-
|
|
149
|
+
const rightOrExpr = pop(stack);
|
|
150
150
|
stack.push(new Or(pop(stack), rightOrExpr));
|
|
151
151
|
}
|
|
152
152
|
else if (token === 'not') {
|
|
@@ -156,73 +156,59 @@ function pushExpr(token, stack) {
|
|
|
156
156
|
stack.push(new Literal(token));
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
|
|
160
|
-
|
|
159
|
+
class Literal {
|
|
160
|
+
constructor(value) {
|
|
161
161
|
this.value = value;
|
|
162
162
|
}
|
|
163
|
-
|
|
163
|
+
evaluate(variables) {
|
|
164
164
|
return variables.indexOf(this.value) !== -1;
|
|
165
|
-
}
|
|
166
|
-
|
|
165
|
+
}
|
|
166
|
+
toString() {
|
|
167
167
|
return this.value.replace(/\(/g, '\\(').replace(/\)/g, '\\)');
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
function Or(leftExpr, rightExpr) {
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
class Or {
|
|
171
|
+
constructor(leftExpr, rightExpr) {
|
|
173
172
|
this.leftExpr = leftExpr;
|
|
174
173
|
this.rightExpr = rightExpr;
|
|
175
174
|
}
|
|
176
|
-
|
|
177
|
-
return
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return ('( ' +
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
};
|
|
186
|
-
return Or;
|
|
187
|
-
}());
|
|
188
|
-
var And = /** @class */ (function () {
|
|
189
|
-
function And(leftExpr, rightExpr) {
|
|
175
|
+
evaluate(variables) {
|
|
176
|
+
return this.leftExpr.evaluate(variables) || this.rightExpr.evaluate(variables);
|
|
177
|
+
}
|
|
178
|
+
toString() {
|
|
179
|
+
return '( ' + this.leftExpr.toString() + ' or ' + this.rightExpr.toString() + ' )';
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
class And {
|
|
183
|
+
constructor(leftExpr, rightExpr) {
|
|
190
184
|
this.leftExpr = leftExpr;
|
|
191
185
|
this.rightExpr = rightExpr;
|
|
192
186
|
}
|
|
193
|
-
|
|
194
|
-
return
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
return ('( ' +
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
};
|
|
203
|
-
return And;
|
|
204
|
-
}());
|
|
205
|
-
var Not = /** @class */ (function () {
|
|
206
|
-
function Not(expr) {
|
|
187
|
+
evaluate(variables) {
|
|
188
|
+
return this.leftExpr.evaluate(variables) && this.rightExpr.evaluate(variables);
|
|
189
|
+
}
|
|
190
|
+
toString() {
|
|
191
|
+
return '( ' + this.leftExpr.toString() + ' and ' + this.rightExpr.toString() + ' )';
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
class Not {
|
|
195
|
+
constructor(expr) {
|
|
207
196
|
this.expr = expr;
|
|
208
197
|
}
|
|
209
|
-
|
|
198
|
+
evaluate(variables) {
|
|
210
199
|
return !this.expr.evaluate(variables);
|
|
211
|
-
}
|
|
212
|
-
|
|
200
|
+
}
|
|
201
|
+
toString() {
|
|
213
202
|
return 'not ( ' + this.expr.toString() + ' )';
|
|
214
|
-
};
|
|
215
|
-
return Not;
|
|
216
|
-
}());
|
|
217
|
-
var True = /** @class */ (function () {
|
|
218
|
-
function True() {
|
|
219
203
|
}
|
|
220
|
-
|
|
204
|
+
}
|
|
205
|
+
class True {
|
|
206
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
207
|
+
evaluate(variables) {
|
|
221
208
|
return true;
|
|
222
|
-
}
|
|
223
|
-
|
|
209
|
+
}
|
|
210
|
+
toString() {
|
|
224
211
|
return 'true';
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
//# sourceMappingURL=tag_expression_parser.js.map
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag_expression_parser_test.d.ts","sourceRoot":"","sources":["../../test/tag_expression_parser_test.ts"],"names":[],"mappings":""}
|
|
@@ -3,12 +3,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
describe('TagExpressionParser',
|
|
9
|
-
describe('#parse',
|
|
10
|
-
|
|
11
|
-
[
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const src_1 = __importDefault(require("../src"));
|
|
8
|
+
describe('TagExpressionParser', () => {
|
|
9
|
+
describe('#parse', () => {
|
|
10
|
+
const tests = [
|
|
12
11
|
['', 'true'],
|
|
13
12
|
['a and b', '( a and b )'],
|
|
14
13
|
['a or b', '( a or b )'],
|
|
@@ -22,13 +21,15 @@ describe('TagExpressionParser', function () {
|
|
|
22
21
|
'not a\\(\\) or b and not c or not d or e and f',
|
|
23
22
|
'( ( ( not ( a\\(\\) ) or ( b and not ( c ) ) ) or not ( d ) ) or ( e and f ) )',
|
|
24
23
|
],
|
|
25
|
-
|
|
24
|
+
// a or not b
|
|
25
|
+
];
|
|
26
|
+
tests.forEach(function (inOut) {
|
|
26
27
|
it(inOut[0], function () {
|
|
27
|
-
|
|
28
|
-
|
|
28
|
+
const infix = inOut[0];
|
|
29
|
+
const expr = src_1.default(infix);
|
|
29
30
|
assert_1.default.strictEqual(expr.toString(), inOut[1]);
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const roundtripTokens = expr.toString();
|
|
32
|
+
const roundtripExpr = src_1.default(roundtripTokens);
|
|
32
33
|
assert_1.default.strictEqual(roundtripExpr.toString(), inOut[1]);
|
|
33
34
|
});
|
|
34
35
|
});
|
|
@@ -41,11 +42,12 @@ describe('TagExpressionParser', function () {
|
|
|
41
42
|
['a b', 'Syntax error. Expected operator'],
|
|
42
43
|
['( a and b ) )', 'Syntax error. Unmatched )'],
|
|
43
44
|
['( ( a and b )', 'Syntax error. Unmatched ('],
|
|
45
|
+
// a or not b
|
|
44
46
|
].forEach(function (inOut) {
|
|
45
47
|
it(inOut[0] + ' fails', function () {
|
|
46
|
-
|
|
48
|
+
const infix = inOut[0];
|
|
47
49
|
try {
|
|
48
|
-
|
|
50
|
+
src_1.default(infix);
|
|
49
51
|
throw new Error('Expected syntax error');
|
|
50
52
|
}
|
|
51
53
|
catch (expected) {
|
|
@@ -55,24 +57,24 @@ describe('TagExpressionParser', function () {
|
|
|
55
57
|
});
|
|
56
58
|
// evaluation
|
|
57
59
|
it('evaluates not', function () {
|
|
58
|
-
|
|
60
|
+
const expr = src_1.default('not x');
|
|
59
61
|
assert_1.default.strictEqual(expr.evaluate(['x']), false);
|
|
60
62
|
assert_1.default.strictEqual(expr.evaluate(['y']), true);
|
|
61
63
|
});
|
|
62
64
|
it('evaluates and', function () {
|
|
63
|
-
|
|
65
|
+
const expr = src_1.default('x and y');
|
|
64
66
|
assert_1.default.strictEqual(expr.evaluate(['x', 'y']), true);
|
|
65
67
|
assert_1.default.strictEqual(expr.evaluate(['y']), false);
|
|
66
68
|
assert_1.default.strictEqual(expr.evaluate(['x']), false);
|
|
67
69
|
});
|
|
68
70
|
it('evaluates or', function () {
|
|
69
|
-
|
|
71
|
+
const expr = src_1.default(' x or(y) ');
|
|
70
72
|
assert_1.default.strictEqual(expr.evaluate([]), false);
|
|
71
73
|
assert_1.default.strictEqual(expr.evaluate(['y']), true);
|
|
72
74
|
assert_1.default.strictEqual(expr.evaluate(['x']), true);
|
|
73
75
|
});
|
|
74
76
|
it('evaluates expressions with escaped chars', function () {
|
|
75
|
-
|
|
77
|
+
const expr = src_1.default(' x\\(1\\) or(y\\(2\\)) ');
|
|
76
78
|
assert_1.default.strictEqual(expr.evaluate([]), false);
|
|
77
79
|
assert_1.default.strictEqual(expr.evaluate(['y(2)']), true);
|
|
78
80
|
assert_1.default.strictEqual(expr.evaluate(['x(1)']), true);
|
|
@@ -80,7 +82,7 @@ describe('TagExpressionParser', function () {
|
|
|
80
82
|
assert_1.default.strictEqual(expr.evaluate(['x']), false);
|
|
81
83
|
});
|
|
82
84
|
it('evaluates empty expressions to true', function () {
|
|
83
|
-
|
|
85
|
+
const expr = src_1.default('');
|
|
84
86
|
assert_1.default.strictEqual(expr.evaluate([]), true);
|
|
85
87
|
assert_1.default.strictEqual(expr.evaluate(['y']), true);
|
|
86
88
|
assert_1.default.strictEqual(expr.evaluate(['x']), true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tag_expression_parser_test.js","sourceRoot":"","sources":["../../test/tag_expression_parser_test.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"tag_expression_parser_test.js","sourceRoot":"","sources":["../../test/tag_expression_parser_test.ts"],"names":[],"mappings":"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"}
|