From 3581e398a2fe2f38bee7e6d13cbf609221f61672 Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Mon, 10 Jan 2022 21:29:42 +0530 Subject: feat: adds matchAll function (incomplete) --- src/index.ts | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) (limited to 'src/index.ts') diff --git a/src/index.ts b/src/index.ts index 691d676..db6630c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,17 +1,29 @@ -import { fold, map } from 'fp-ts/lib/Either' -import { identity, pipe } from 'fp-ts/lib/function' -import { find } from './eval' +import { getOrElseW, map } from 'fp-ts/lib/Either' +import { flow, pipe } from 'fp-ts/lib/function' +import {fst} from 'fp-ts/lib/Tuple' +import * as ev from './eval' import { parser } from './parser' +import {ListExpr} from './types' const toSourceString = (r: string | RegExp): string => typeof r === 'string' ? r : r.source -export const filter = (listExp: string | RegExp, list: T[]): T[] => +export const liexp: (r: string | RegExp) => ListExpr = flow( + toSourceString, + parser, + map(fst), + getOrElseW(([e, _]) => { throw new Error(e) }) +) + +export const matchAll = (exp: string | RegExp, list: T[]) => + pipe( + exp, + liexp, + lxp => ev.matchAll(lxp, list), + ) + +export const filter = (exp: string | RegExp, list: T[]): T[] => pipe( - listExp, - toSourceString, - parser, - map(([lxp, _]) => find(lxp, list)), - fold(([err, _]) => { - throw new Error(err) - }, identity), + exp, + liexp, + lxp => ev.find(lxp, list), ) -- cgit v1.3.1