UNPKG

4.59 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5Object.defineProperty(exports, "__esModule", { value: true });
6var assert_1 = __importDefault(require("assert"));
7var RegularExpression_1 = __importDefault(require("../src/RegularExpression"));
8var ParameterTypeRegistry_1 = __importDefault(require("../src/ParameterTypeRegistry"));
9describe('RegularExpression', function () {
10 it('documents match arguments', function () {
11 var parameterRegistry = new ParameterTypeRegistry_1.default();
12 /// [capture-match-arguments]
13 var expr = /I have (\d+) cukes? in my (\w+) now/;
14 var expression = new RegularExpression_1.default(expr, parameterRegistry);
15 var args = expression.match('I have 7 cukes in my belly now');
16 assert_1.default.strictEqual(7, args[0].getValue(null));
17 assert_1.default.strictEqual('belly', args[1].getValue(null));
18 /// [capture-match-arguments]
19 });
20 it('does no transform by default', function () {
21 assert_1.default.deepStrictEqual(match(/(\d\d)/, '22')[0], '22');
22 });
23 it('does not transform anonymous', function () {
24 assert_1.default.deepStrictEqual(match(/(.*)/, '22')[0], '22');
25 });
26 it('transforms negative int', function () {
27 assert_1.default.deepStrictEqual(match(/(-?\d+)/, '-22')[0], -22);
28 });
29 it('transforms positive int', function () {
30 assert_1.default.deepStrictEqual(match(/(\d+)/, '22')[0], 22);
31 });
32 it('transforms float without integer part', function () {
33 assert_1.default.deepStrictEqual(match(new RegExp("(" + ParameterTypeRegistry_1.default.FLOAT_REGEXP.source + ")"), '.22')[0], 0.22);
34 });
35 it('transforms float with sign', function () {
36 assert_1.default.deepStrictEqual(match(new RegExp("(" + ParameterTypeRegistry_1.default.FLOAT_REGEXP.source + ")"), '-1.22')[0], -1.22);
37 });
38 it('returns null when there is no match', function () {
39 assert_1.default.strictEqual(match(/hello/, 'world'), null);
40 });
41 it('matches nested capture group without match', function () {
42 assert_1.default.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user'), [
43 null,
44 ]);
45 });
46 it('matches nested capture group with match', function () {
47 assert_1.default.deepStrictEqual(match(/^a user( named "([^"]*)")?$/, 'a user named "Charlie"'), ['Charlie']);
48 });
49 it('matches capture group nested in optional one', function () {
50 var regexp = /^a (pre-commercial transaction |pre buyer fee model )?purchase(?: for \$(\d+))?$/;
51 assert_1.default.deepStrictEqual(match(regexp, 'a purchase'), [null, null]);
52 assert_1.default.deepStrictEqual(match(regexp, 'a purchase for $33'), [null, 33]);
53 assert_1.default.deepStrictEqual(match(regexp, 'a pre buyer fee model purchase'), [
54 'pre buyer fee model ',
55 null,
56 ]);
57 });
58 it('ignores non capturing groups', function () {
59 assert_1.default.deepStrictEqual(match(/(\S+) ?(can|cannot)? (?:delete|cancel) the (\d+)(?:st|nd|rd|th) (attachment|slide) ?(?:upload)?/, 'I can cancel the 1st slide upload'), ['I', 'can', 1, 'slide']);
60 });
61 it('works with escaped parenthesis', function () {
62 assert_1.default.deepStrictEqual(match(/Across the line\(s\)/, 'Across the line(s)'), []);
63 });
64 it('exposes regexp and source', function () {
65 var regexp = /I have (\d+) cukes? in my (.+) now/;
66 var expression = new RegularExpression_1.default(regexp, new ParameterTypeRegistry_1.default());
67 assert_1.default.deepStrictEqual(expression.regexp, regexp);
68 assert_1.default.deepStrictEqual(expression.source, regexp.source);
69 });
70 it('does not take consider parenthesis in character class as group', function () {
71 var expression = new RegularExpression_1.default(/^drawings: ([A-Z_, ()]+)$/, new ParameterTypeRegistry_1.default());
72 var args = expression.match('drawings: ONE, TWO(ABC)');
73 assert_1.default.strictEqual(args[0].getValue(this), 'ONE, TWO(ABC)');
74 });
75});
76var match = function (regexp, text) {
77 var parameterRegistry = new ParameterTypeRegistry_1.default();
78 var regularExpression = new RegularExpression_1.default(regexp, parameterRegistry);
79 var args = regularExpression.match(text);
80 if (!args) {
81 return null;
82 }
83 return args.map(function (arg) { return arg.getValue(null); });
84};
85//# sourceMappingURL=RegularExpressionTest.js.map
\No newline at end of file