diff --git a/packages/core/event-handler.js b/packages/core/event-handler.js index 907f45f..d893aca 100644 --- a/packages/core/event-handler.js +++ b/packages/core/event-handler.js @@ -220,25 +220,43 @@ function evaluateServerScript(html) { Object.assign(setupMap, new evalStore()) }) - const regex = /{{(.*?)}}/g + const regex = /\{\{(.*?)\}\}/g let match while ((match = regex.exec(html))) { - let [key, value] = match - value = value.replace(/\s/g, '') - // nested objects + let [key, rawValue] = match + + const value = rawValue.replace(/\s/g, '') + console.log('>>> value', rawValue) const keys = value.split('.') let finalValue = '' let setupCopy = setupMap - keys.forEach((i) => { - finalValue = setupCopy[i] - setupCopy = finalValue + // if not in the server script, it could be a js expression + if (!(keys[0] in setupMap)) { + try { + console.log('>>> trying to evaluate', rawValue) + finalValue = eval(rawValue) + } catch (e) { + console.error('ERR! Failed to evaluate expression', e) + } + } + + // nested objects + keys.forEach((key) => { + if (key in setupCopy) { + finalValue = setupCopy[key] + setupCopy = finalValue + } }) - html = html.replace(key, finalValue) + html = html.replace(key, finalValue ?? '') + regex.lastIndex = -1 } + console.log('setupMap', setupMap) + console.log('________') + return html } diff --git a/site/src/pages/demo.html b/site/src/pages/demo.html index 49ac3a0..3c1a856 100644 --- a/site/src/pages/demo.html +++ b/site/src/pages/demo.html @@ -17,6 +17,9 @@ function sum(x, y) { return x + y; } + + const hey = 'hey' + const world = 'world'
@@ -26,6 +29,7 @@