diff --git a/src/components/__tests__/quantifiers.test.tsx b/src/components/__tests__/quantifiers.test.tsx index 22934ff..852cccb 100644 --- a/src/components/__tests__/quantifiers.test.tsx +++ b/src/components/__tests__/quantifiers.test.tsx @@ -1,17 +1,12 @@ import { buildRegex } from '../../builders'; import { digit } from '../character-class'; -import { one, oneOrMore, optionally, zeroOrMore } from '../quantifiers'; +import { oneOrMore, optionally, zeroOrMore } from '../quantifiers'; test('`oneOrMore` quantifier', () => { expect(oneOrMore('a')).toHavePattern('a+'); expect(oneOrMore('ab')).toHavePattern('(?:ab)+'); }); -test('`one` quantifier', () => { - expect(one('a')).toHavePattern('a'); - expect(one('ab')).toHavePattern('ab'); -}); - test('`optionally` quantifier', () => { expect(optionally('a')).toHavePattern('a?'); expect(optionally('ab')).toHavePattern('(?:ab)?'); @@ -28,12 +23,6 @@ test('`oneOrMore` does not generate capture when grouping', () => { expect(groups).toEqual(['aa']); }); -test('`one` does not generate capture when grouping', () => { - const regex = buildRegex(one('aa')); - const groups = [...'aa'.match(regex)!]; - expect(groups).toEqual(['aa']); -}); - test('`optionally` does not generate capture when grouping', () => { const regex = buildRegex(optionally('aa')); const groups = [...'aa'.match(regex)!]; @@ -47,7 +36,6 @@ test('`zeroOrMore` does not generate capture when grouping', () => { }); test('base quantifiers optimize grouping for atoms', () => { - expect(one(digit)).toHavePattern('\\d'); expect(oneOrMore(digit)).toHavePattern('\\d+'); expect(optionally(digit)).toHavePattern('\\d?'); expect(zeroOrMore(digit)).toHavePattern('\\d*'); diff --git a/src/components/quantifiers.ts b/src/components/quantifiers.ts index 93711b6..d379703 100644 --- a/src/components/quantifiers.ts +++ b/src/components/quantifiers.ts @@ -1,13 +1,8 @@ -import { encodeAtom, encodeSequence } from '../encoder/encoder'; +import { encodeAtom } from '../encoder/encoder'; import type { EncodeOutput } from '../encoder/types'; import { asNodeArray } from '../utils/nodes'; import type { RegexElement, RegexNode } from '../types'; -export interface One extends RegexElement { - type: 'one'; - children: RegexNode[]; -} - export interface OneOrMore extends RegexElement { type: 'oneOrMore'; children: RegexNode[]; @@ -23,14 +18,6 @@ export interface ZeroOrMore extends RegexElement { children: RegexNode[]; } -export function one(nodes: RegexNode | RegexNode[]): One { - return { - type: 'one', - children: asNodeArray(nodes), - encode: encodeOne, - }; -} - export function oneOrMore(nodes: RegexNode | RegexNode[]): OneOrMore { return { type: 'oneOrMore', @@ -55,10 +42,6 @@ export function zeroOrMore(nodes: RegexNode | RegexNode[]): ZeroOrMore { }; } -function encodeOne(this: One) { - return encodeSequence(this.children); -} - function encodeOneOrMore(this: OneOrMore): EncodeOutput { return { precedence: 'sequence', diff --git a/src/encoder/__tests__/encoder.test.tsx b/src/encoder/__tests__/encoder.test.tsx index fdd40f0..dbb103e 100644 --- a/src/encoder/__tests__/encoder.test.tsx +++ b/src/encoder/__tests__/encoder.test.tsx @@ -1,6 +1,5 @@ import { buildPattern, buildRegex } from '../../builders'; import { - one, oneOrMore, optionally, zeroOrMore, @@ -26,7 +25,7 @@ test('basic quantifies', () => { expect([optionally('a'), 'b']).toHavePattern('a?b'); - expect([optionally('a'), 'b', one('d')]).toHavePattern('a?bd'); + expect([optionally('a'), 'b', oneOrMore('d')]).toHavePattern('a?bd+'); }); test('regex constructor', () => { diff --git a/src/index.ts b/src/index.ts index df4ad3b..1e3d723 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,19 +2,18 @@ export type * from './types'; export { buildPattern, buildRegex } from './builders'; +export { startOfString, endOfString } from './components/anchors'; export { capture } from './components/capture'; export { any, - anyOf, digit, whitespace, word, + anyOf, + characterRange, + characterClass, + inverted, } from './components/character-class'; export { choiceOf } from './components/choice-of'; -export { - one, - oneOrMore, - optionally, - zeroOrMore, -} from './components/quantifiers'; +export { oneOrMore, optionally, zeroOrMore } from './components/quantifiers'; export { repeat } from './components/repeat';