/
rules.ts
50 lines (48 loc) · 1005 Bytes
/
rules.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
export const valid: [string, [number, number]][] = [
["1", [0, 1]],
["2", [0, 2]],
["3", [0, 3]],
["5", [0, 5]],
[" 1 ", [0, 1]],
[" 5 ", [0, 5]],
["+2n + 1", [2, 1]],
["-1", [0, -1]],
["-1n + 3", [-1, 3]],
["-1n+3", [-1, 3]],
["-n+2", [-1, 2]],
["-n+3", [-1, 3]],
["0n+3", [0, 3]],
["1n", [1, 0]],
["1n+0", [1, 0]],
["2n", [2, 0]],
["2n + 1", [2, 1]],
["2n+1", [2, 1]],
["3n", [3, 0]],
["3n+0", [3, 0]],
["3n+1", [3, 1]],
["3n+2", [3, 2]],
["3n+3", [3, 3]],
["3n-1", [3, -1]],
["3n-2", [3, -2]],
["3n-3", [3, -3]],
["even", [2, 0]],
["n", [1, 0]],
["n+2", [1, 2]],
["odd", [2, 1]],
// Surprisingly, neither sizzle, qwery or nwmatcher cover these cases
["-4n+13", [-4, 13]],
["-2n + 12", [-2, 12]],
["-n", [-1, 0]],
];
export const invalid = [
"-",
"- 1n",
"-1 n",
"2+0",
"2n+-0",
"an+b",
"asdf",
"b",
"expr",
"odd|even|x",
];