aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Main.tsx2
-rw-r--r--src/util/Scripting.ts22
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