diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Main.tsx | 2 | ||||
-rw-r--r-- | src/util/Scripting.ts | 22 |
2 files changed, 14 insertions, 10 deletions
diff --git a/src/Main.tsx b/src/Main.tsx index 78e1a8af6..aae35aa36 100644 --- a/src/Main.tsx +++ b/src/Main.tsx @@ -46,7 +46,7 @@ document.addEventListener("pointerdown", action(function (e: PointerEvent) { let doc3 = Documents.ImageDocument("https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg", { x: 450, y: 500, title: "cat 1" }); - console.log(CompileScript("function testFunc(doc: Document): any {return doc.GetNumberField(KeyStore.X, 0)} ")()); + console.log("script: " + CompileScript("(function(doc: Document): any {return doc.GetNumberField(this.KeyStore.X, 0)})")()(doc3)); const schemaDocs = Array.from(Array(5).keys()).map(v => Documents.ImageDocument("https://upload.wikimedia.org/wikipedia/commons/thumb/3/3a/Cat03.jpg/1200px-Cat03.jpg", { x: 50 + 100 * v, y: 50, width: 100, height: 100, title: "cat" + v })); diff --git a/src/util/Scripting.ts b/src/util/Scripting.ts index ac7d1550a..eae138fcd 100644 --- a/src/util/Scripting.ts +++ b/src/util/Scripting.ts @@ -1,5 +1,8 @@ -import * as ts from "typescript" +// import * as ts from "typescript" import { Opt, Field } from "../fields/Field"; +import { Document } from "../fields/Document"; +import { NumberField } from "../fields/NumberField"; +import { KeyStore } from "../fields/Key"; export interface ExecutableScript { (): any; @@ -7,15 +10,20 @@ export interface ExecutableScript { compiled: boolean; } -function ExecScript(script: string, diagnostics: Opt<ts.Diagnostic[]>): ExecutableScript { - const compiled = !(diagnostics && diagnostics.some(diag => diag.category == ts.DiagnosticCategory.Error)); +function ExecScript(script: string, diagnostics: Opt<any[]>): ExecutableScript { + const compiled = !(diagnostics && diagnostics.some(diag => diag.category == 1)); let func: () => Opt<Field>; if (compiled) { func = function (): Opt<Field> { let window = undefined; let document = undefined; - let retVal = eval.call(undefined, script); + let scope = { + Document, + NumberField, + KeyStore + } + let retVal = function () { return eval(script); }.call(scope); return retVal; }; @@ -30,11 +38,7 @@ function ExecScript(script: string, diagnostics: Opt<ts.Diagnostic[]>): Executab } export function CompileScript(script: string): ExecutableScript { - let result = ts.transpileModule(script, { - compilerOptions: { - module: ts.ModuleKind.CommonJS - } - }) + let result = (window as any).ts.transpileModule(script, {}) return ExecScript(result.outputText, result.diagnostics); }
\ No newline at end of file |