UNPKG

kuvio

Version:

Create string patterns and derive things from them, such as regexes

85 lines (83 loc) 1.43 kB
/** * @since 1.0.0 * @category Model */ type Pattern = Disjunction | TermSequence | Term; /** * @since 1.0.0 * @category Model */ type Disjunction = { tag: 'disjunction'; left: Pattern; right: TermSequence | Term; }; /** * @since 1.0.0 * @category Model */ type TermSequence = { tag: 'termSequence'; terms: ReadonlyArray<Term>; }; /** * @since 1.0.0 * @category Model */ type Term = Atom | QuantifiedAtom; /** * @since 1.0.0 * @category Model */ type QuantifiedAtom = { tag: 'quantifiedAtom'; atom: Atom; } & ({ kind: 'star'; greedy: boolean; } | { kind: 'plus'; greedy: boolean; } | { kind: 'question'; } | { kind: 'exactly'; count: number; } | { kind: 'minimum'; min: number; } | { kind: 'between'; min: number; max: number; }); /** * @since 1.0.0 * @category Model */ type CharacterClass = { tag: 'atom'; kind: 'characterClass'; exclude: boolean; ranges: ReadonlyArray<{ lower: number; upper: number; }>; }; /** * @since 1.0.0 * @category Model */ type Atom = CharacterClass | ({ tag: 'atom'; } & ({ kind: 'character'; char: string; } | { kind: 'anything'; } | { kind: 'subgroup'; subpattern: Pattern; })); type Char = string; export { Atom as A, Char as C, Disjunction as D, Pattern as P, QuantifiedAtom as Q, TermSequence as T, CharacterClass as a, Term as b };