Skip to content

Commit 942b7b8

Browse files
refactor: remove one component (#34)
1 parent 4ed7a56 commit 942b7b8

File tree

4 files changed

+9
-40
lines changed

4 files changed

+9
-40
lines changed

src/components/__tests__/quantifiers.test.tsx

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
import { buildRegex } from '../../builders';
22
import { digit } from '../character-class';
3-
import { one, oneOrMore, optionally, zeroOrMore } from '../quantifiers';
3+
import { oneOrMore, optionally, zeroOrMore } from '../quantifiers';
44

55
test('`oneOrMore` quantifier', () => {
66
expect(oneOrMore('a')).toHavePattern('a+');
77
expect(oneOrMore('ab')).toHavePattern('(?:ab)+');
88
});
99

10-
test('`one` quantifier', () => {
11-
expect(one('a')).toHavePattern('a');
12-
expect(one('ab')).toHavePattern('ab');
13-
});
14-
1510
test('`optionally` quantifier', () => {
1611
expect(optionally('a')).toHavePattern('a?');
1712
expect(optionally('ab')).toHavePattern('(?:ab)?');
@@ -28,12 +23,6 @@ test('`oneOrMore` does not generate capture when grouping', () => {
2823
expect(groups).toEqual(['aa']);
2924
});
3025

31-
test('`one` does not generate capture when grouping', () => {
32-
const regex = buildRegex(one('aa'));
33-
const groups = [...'aa'.match(regex)!];
34-
expect(groups).toEqual(['aa']);
35-
});
36-
3726
test('`optionally` does not generate capture when grouping', () => {
3827
const regex = buildRegex(optionally('aa'));
3928
const groups = [...'aa'.match(regex)!];
@@ -47,7 +36,6 @@ test('`zeroOrMore` does not generate capture when grouping', () => {
4736
});
4837

4938
test('base quantifiers optimize grouping for atoms', () => {
50-
expect(one(digit)).toHavePattern('\\d');
5139
expect(oneOrMore(digit)).toHavePattern('\\d+');
5240
expect(optionally(digit)).toHavePattern('\\d?');
5341
expect(zeroOrMore(digit)).toHavePattern('\\d*');

src/components/quantifiers.ts

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
import { encodeAtom, encodeSequence } from '../encoder/encoder';
1+
import { encodeAtom } from '../encoder/encoder';
22
import type { EncodeOutput } from '../encoder/types';
33
import { asNodeArray } from '../utils/nodes';
44
import type { RegexElement, RegexNode } from '../types';
55

6-
export interface One extends RegexElement {
7-
type: 'one';
8-
children: RegexNode[];
9-
}
10-
116
export interface OneOrMore extends RegexElement {
127
type: 'oneOrMore';
138
children: RegexNode[];
@@ -23,14 +18,6 @@ export interface ZeroOrMore extends RegexElement {
2318
children: RegexNode[];
2419
}
2520

26-
export function one(nodes: RegexNode | RegexNode[]): One {
27-
return {
28-
type: 'one',
29-
children: asNodeArray(nodes),
30-
encode: encodeOne,
31-
};
32-
}
33-
3421
export function oneOrMore(nodes: RegexNode | RegexNode[]): OneOrMore {
3522
return {
3623
type: 'oneOrMore',
@@ -55,10 +42,6 @@ export function zeroOrMore(nodes: RegexNode | RegexNode[]): ZeroOrMore {
5542
};
5643
}
5744

58-
function encodeOne(this: One) {
59-
return encodeSequence(this.children);
60-
}
61-
6245
function encodeOneOrMore(this: OneOrMore): EncodeOutput {
6346
return {
6447
precedence: 'sequence',

src/encoder/__tests__/encoder.test.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import { buildPattern, buildRegex } from '../../builders';
22
import {
3-
one,
43
oneOrMore,
54
optionally,
65
zeroOrMore,
@@ -26,7 +25,7 @@ test('basic quantifies', () => {
2625

2726
expect([optionally('a'), 'b']).toHavePattern('a?b');
2827

29-
expect([optionally('a'), 'b', one('d')]).toHavePattern('a?bd');
28+
expect([optionally('a'), 'b', oneOrMore('d')]).toHavePattern('a?bd+');
3029
});
3130

3231
test('regex constructor', () => {

src/index.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,18 @@ export type * from './types';
22

33
export { buildPattern, buildRegex } from './builders';
44

5+
export { startOfString, endOfString } from './components/anchors';
56
export { capture } from './components/capture';
67
export {
78
any,
8-
anyOf,
99
digit,
1010
whitespace,
1111
word,
12+
anyOf,
13+
characterRange,
14+
characterClass,
15+
inverted,
1216
} from './components/character-class';
1317
export { choiceOf } from './components/choice-of';
14-
export {
15-
one,
16-
oneOrMore,
17-
optionally,
18-
zeroOrMore,
19-
} from './components/quantifiers';
18+
export { oneOrMore, optionally, zeroOrMore } from './components/quantifiers';
2019
export { repeat } from './components/repeat';

0 commit comments

Comments
 (0)