From 260468cf737e9836cf9ac6b7bc274b98e55fdc93 Mon Sep 17 00:00:00 2001 From: Ruben Fiszel Date: Wed, 28 Feb 2024 09:45:05 +0100 Subject: [PATCH] fix: allow eval with return in last line --- .../components/apps/components/helpers/eval.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/frontend/src/lib/components/apps/components/helpers/eval.ts b/frontend/src/lib/components/apps/components/helpers/eval.ts index 19b21a57cc..0f710d51b9 100644 --- a/frontend/src/lib/components/apps/components/helpers/eval.ts +++ b/frontend/src/lib/components/apps/components/helpers/eval.ts @@ -19,6 +19,9 @@ export function computeGlobalContext(world: World | undefined, extraContext: any } function create_context_function_template(eval_string: string, context, noReturn: boolean) { + let lastBreak = eval_string.lastIndexOf('\n') + let lines = lastBreak == -1 ? "" : eval_string.substring(0, lastBreak) + let lastLine = lastBreak == -1 ? eval_string : eval_string.substring(lastBreak + 1) return ` return async function (context, state, goto, setTab, recompute, getAgGrid, setValue, setSelectedIndex, openModal, closeModal, open, close, validate, invalidate, validateAll, clearFiles, showToast) { "use strict"; @@ -27,10 +30,11 @@ ${ ? `let ${Object.keys(context).map((key) => ` ${key} = context['${key}']`)};` : `` } +${lines} ${ noReturn - ? `return ${eval_string.startsWith('return ') ? eval_string.substring(7) : eval_string}` - : eval_string + ? `return ${lastLine.startsWith('return ') ? lastLine.substring(7) : lastLine}` + : lastLine } } ` @@ -60,6 +64,7 @@ function make_context_evaluator( showToast ) => Promise { let template = create_context_function_template(eval_string, context, noReturn) + console.log(template) let functor = Function(template) return functor() @@ -139,8 +144,8 @@ export async function eval_like( } }) let evaluator = make_context_evaluator(text, context, noReturn) - - return await evaluator( + console.log("BAR") + const r = await evaluator( context, proxiedState, async (x, newTab) => { @@ -198,4 +203,7 @@ export async function eval_like( sendUserToast(message, error) } ) + console.log("FOO") + console.log(r) + return r }