diff options
| author | Akshay Nair <phenax5@gmail.com> | 2023-08-25 10:48:55 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2023-08-25 10:48:55 +0530 |
| commit | 8a987f6c3cffd37437adca6c133fab989233a308 (patch) | |
| tree | 5ea691449a2e718a49c7de7c2e23d606e59dd0fd /src | |
| parent | 0e4b002615b360284b43b5ceee6feb3ed8c1b72f (diff) | |
| download | css-everything-8a987f6c3cffd37437adca6c133fab989233a308.tar.gz css-everything-8a987f6c3cffd37437adca6c133fab989233a308.zip | |
feat: adds let bindings
Diffstat (limited to '')
| -rw-r--r-- | src/eval.ts | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/src/eval.ts b/src/eval.ts index 1b5aace..2dde4c1 100644 --- a/src/eval.ts +++ b/src/eval.ts @@ -130,6 +130,13 @@ const getFunctions = ( }) } + const jsEval = async () => { + const js = await evalExprAsString(args[0], actions) + const result = js && (await actions.jsEval(js)) + if (result === undefined || result === null) return EvalValue.Void() + return EvalValue.Value(result) + } + return matchString<Promise<EvalValue>>(name, { 'add-class': async () => { const id = evalValueToString(await evalExpr(args[0], actions)) @@ -161,12 +168,9 @@ const getFunctions = ( num !== undefined ? await actions.delay(num) : undefined return EvalValue.Void() }, - 'js-eval': async () => { - const js = await evalExprAsString(args[0], actions) - const result = js && (await actions.jsEval(js)) - if (result === undefined || result === null) return EvalValue.Void() - return EvalValue.Value(result) - }, + + 'js-eval': jsEval, + 'js-expr': jsEval, 'load-cssx': async () => { const id = evalValueToString(await evalExpr(args[0], actions)) @@ -340,6 +344,16 @@ const getFunctions = ( return result }, + let: async () => { + const varName = await evalExprAsString(args[0], actions) + const result = await evalExpr(args[1], actions) + if (!varName) return EvalValue.Void() + + return actions.evaluateInScope([args[2]], { + [varName]: result, + }) + }, + _: () => Promise.reject(new Error(`Not implemented: ${name}`)), }) } |
