From 136194eba78c0427926cba0be9a11650e6f4be2b Mon Sep 17 00:00:00 2001 From: Tyler Schicke Date: Mon, 4 Feb 2019 18:27:19 -0500 Subject: more scripting stuff --- src/util/Scripting.ts | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'src/util') diff --git a/src/util/Scripting.ts b/src/util/Scripting.ts index bf312918e..ac7d1550a 100644 --- a/src/util/Scripting.ts +++ b/src/util/Scripting.ts @@ -1,7 +1,32 @@ import * as ts from "typescript" import { Opt, Field } from "../fields/Field"; -export class ExecutableScript extends Function { +export interface ExecutableScript { + (): any; + + compiled: boolean; +} + +function ExecScript(script: string, diagnostics: Opt): ExecutableScript { + const compiled = !(diagnostics && diagnostics.some(diag => diag.category == ts.DiagnosticCategory.Error)); + + let func: () => Opt; + if (compiled) { + func = function (): Opt { + let window = undefined; + let document = undefined; + let retVal = eval.call(undefined, script); + + return retVal; + }; + } else { + func = () => undefined; + } + + return Object.assign(func, + { + compiled + }); } export function CompileScript(script: string): ExecutableScript { @@ -10,7 +35,6 @@ export function CompileScript(script: string): ExecutableScript { module: ts.ModuleKind.CommonJS } }) - console.log(result.outputText); - return () => { }; + return ExecScript(result.outputText, result.diagnostics); } \ No newline at end of file -- cgit v1.2.3-70-g09d2