diff options
| -rw-r--r-- | TODO.norg | 5 | ||||
| -rw-r--r-- | examples/clock/style.css | 1 | ||||
| -rw-r--r-- | src/eval.ts | 8 | ||||
| -rw-r--r-- | src/parser.ts | 2 |
4 files changed, 12 insertions, 4 deletions
@@ -4,20 +4,19 @@ - (x) some way to de-quotify values? - (x) re-quotify value - (x) analog + digital clock example + - (x) error handling try - ( ) `has-class` - ( ) `add-class` & `remove-class` should use self if id is not specified? - ( ) Update `--cssx-text` on update - - ( ) fix invalid expr in functions error * Later - - ( ) FFI interface to declare functions - - ( ) `request` error handling - ( ) keyboard events - ( ) Code cleanup - ( ) Additional events - ( ) Improve parser error messages - ( ) Improve eval error messages - ( ) filter for on update on specific properties + - ( ) FFI interface to declare functions * Maybe - ( ) `--cssx-use-properties: --parent-prop;` to trigger nested property update diff --git a/examples/clock/style.css b/examples/clock/style.css index a6f8349..c23e033 100644 --- a/examples/clock/style.css +++ b/examples/clock/style.css @@ -44,6 +44,7 @@ body * { box-sizing: border-box; } --cssx-on-mount: update(--date, call(--get-date)); --cssx-on-update: + update('[data-element=seconds]', --angle, js-eval("360 * new Date().getSeconds() / 60 - 90")), update('[data-element=seconds]', --angle, js-eval("360 * new Date().getSeconds() / 60 - 90")) update('[data-element=minutes]', --angle, js-eval("360 * new Date().getMinutes() / 60 - 90")) update('[data-element=hours]', --angle, 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) { |
