diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-08-25 10:17:21 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-08-25 10:17:21 +0530 |
| commit | 0665e6a2490c9ea770a98908788a1e5d210aa811 (patch) | |
| tree | 307654d37d10ad2055947c0d8ec40c3188f01938 /src | |
| parent | 2f99128e354e5c5334094f072767164c8e4fbd2f (diff) | |
| download | css-everything-0665e6a2490c9ea770a98908788a1e5d210aa811.tar.gz css-everything-0665e6a2490c9ea770a98908788a1e5d210aa811.zip | |
feat: adds try expression for error handlign
Diffstat (limited to '')
| -rw-r--r-- | src/eval.ts | 8 | ||||
| -rw-r--r-- | src/parser.ts | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/eval.ts b/src/eval.ts index 91514b9..0be3de5 100644 --- a/src/eval.ts +++ b/src/eval.ts @@ -322,6 +322,14 @@ const getFunctions = ( return EvalValue.String(dequotify(str || '')) }, + try: async () => { + try { + return await evalExpr(args[0], actions) + } catch (e) { + return evalExpr(args[1], actions) + } + }, + _: () => Promise.reject(new Error(`Not implemented: ${name}`)), }) } diff --git a/src/parser.ts b/src/parser.ts index eeb9acf..216c1bc 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -142,7 +142,7 @@ export const parseDeclarations = (input: string) => ) export const parse = (input: string): Array<Expr> => { - const res = P.many1(exprParser)(input.trim()) + const res = P.sepBy(exprParser, P.or([comma, whitespace]))(input.trim()) return match(res, { Ok: ({ value, input }) => { if (input) { |
