aboutsummaryrefslogtreecommitdiff
path: root/src/eval/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval/index.ts')
-rw-r--r--src/eval/index.ts37
1 files changed, 4 insertions, 33 deletions
diff --git a/src/eval/index.ts b/src/eval/index.ts
index 26a3ec5..3bf0290 100644
--- a/src/eval/index.ts
+++ b/src/eval/index.ts
@@ -137,7 +137,10 @@ const checkExpr = <T>(
}
const groups = getGroups()
- const skips = Math.max(1, getSkips().reduce((a, b) => a + b, -1))
+ const skips = Math.max(
+ 1,
+ getSkips().reduce((a, b) => a + b, -1),
+ )
return pipe(groups, skip(skips))
},
@@ -169,35 +172,3 @@ export const matchAll = <T>(
groups: check(0, list, expr),
}
}
-
-export const find = <T>([startO, expr, endO]: ListExpr, list: T[]): any => {
- const check =
- (expr: Expr) =>
- <T>(x: T, i: number, ls: T[]): boolean => {
- return pipe(
- expr,
- match<boolean, Expr>({
- AnyItem: _ => true,
- AnyNumber: _ => typeof x === 'number',
- AnyString: _ => typeof x === 'string',
- AnyBool: _ => typeof x === 'boolean',
- Truthy: _ => !!x,
- Falsey: _ => !x,
- Group: ({ exprs }) => exprs.every(e => check(e)(x, i, ls)),
- PropertyMatch: ({ name, expr }) =>
- name in x && check(expr)(x[name], i, ls),
- OneOrMore: ({ expr }) => {
- // TODO: Nested quantified expression
- const x = pipe(
- list.slice(i),
- takeLeftWhile(x => check(expr)(x, i, list)),
- )
- return true
- },
- _: _ => false,
- }),
- )
- }
-
- return list.filter((x, i, ls) => check(expr)(x, i, ls))
-}