aboutsummaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/utils/parser-comb.ts8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/utils/parser-comb.ts b/src/utils/parser-comb.ts
index e0665f6..f682068 100644
--- a/src/utils/parser-comb.ts
+++ b/src/utils/parser-comb.ts
@@ -73,3 +73,11 @@ export const sepBy = <A>(parser: Parser<A>, sepP: Parser<any>): Parser<Array<A>>
Err: _ => Result.Ok({ value: [], input: originalInput }),
})
+export const optional = <A>(parser: Parser<A>): Parser<undefined | A> => input => {
+ const result = parser(input)
+ return match(result, {
+ Ok: _ => result,
+ Err: _ => Result.Ok({ value: undefined, input })
+ })
+}
+