aboutsummaryrefslogtreecommitdiff
path: root/src/client/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/util')
-rw-r--r--src/client/util/ScriptManager.ts25
-rw-r--r--src/client/util/Scripting.ts14
2 files changed, 35 insertions, 4 deletions
diff --git a/src/client/util/ScriptManager.ts b/src/client/util/ScriptManager.ts
index 5bddb44ca..c87fdf5fd 100644
--- a/src/client/util/ScriptManager.ts
+++ b/src/client/util/ScriptManager.ts
@@ -2,7 +2,8 @@ import { Doc, DocListCast } from "../../fields/Doc";
import { List } from "../../fields/List";
import { Docs } from "../documents/Documents";
import { Scripting, ScriptParam } from "./Scripting";
-import { StrCast } from "../../fields/Types";
+import { StrCast, Cast } from "../../fields/Types";
+import { listSpec } from "../../fields/Schema";
export class ScriptManager {
@@ -38,6 +39,10 @@ export class ScriptManager {
}
public deleteScript(scriptDoc: Doc): boolean {
+
+ if (scriptDoc.funcName) {
+ Scripting.removeGlobal(StrCast(scriptDoc.funcName));
+ }
const scriptList = ScriptManager.Instance.getAllScripts();
const index = ScriptManager.Instance.getAllScripts().indexOf(scriptDoc);
if (index > -1) {
@@ -55,9 +60,23 @@ const scriptList = ScriptManager.Instance.getAllScripts();
scriptList.forEach((scriptDoc: Doc) => {
- const p = scriptDoc.compileParams?.reduce((o: ScriptParam, p: string) => { o[p] = "any"; return o; }, {} as ScriptParam);
+ const params = Cast(scriptDoc.compileParams, listSpec("string"), []);
+ const p = params.reduce((o: ScriptParam, p: string) => { o[p] = "any"; return o; }, {} as ScriptParam);
const f = new Function(...Array.from(Object.keys(p)), StrCast(scriptDoc.rawScript));
- Scripting.addGlobal(f, StrCast(scriptDoc.description), StrCast(p), StrCast(scriptDoc.name));
+ let parameters = "(";
+ params.forEach((element: string, i: number) => {
+ if (i === params.length - 1) {
+ parameters = parameters + element + ")";
+ } else {
+ parameters = parameters + element + ", ";
+ }
+ });
+
+ if (parameters === "(") {
+ Scripting.addGlobal(f, StrCast(scriptDoc.description), StrCast(scriptDoc.funcName));
+ } else {
+ Scripting.addGlobal(f, StrCast(scriptDoc.description), parameters, StrCast(scriptDoc.funcName));
+ }
}); \ No newline at end of file
diff --git a/src/client/util/Scripting.ts b/src/client/util/Scripting.ts
index 5619b22b0..16012eb5a 100644
--- a/src/client/util/Scripting.ts
+++ b/src/client/util/Scripting.ts
@@ -65,7 +65,11 @@ export namespace Scripting {
obj = [nameOrGlobal];
obj.push(global);
if (params) {
- obj.push(params);
+ if (params.indexOf("(") > 0) {
+ obj.push(params);
+ } else {
+ n = params;
+ }
}
if (name) {
n = name;
@@ -93,6 +97,14 @@ export namespace Scripting {
scriptingGlobals = globals;
}
+ export function removeGlobal(name: string) {
+ if (_scriptingGlobals.hasKey(name)) {
+ delete _scriptingGlobals.container[name];
+ return true;
+ }
+ return false;
+ }
+
export function resetScriptingGlobals() {
scriptingGlobals = _scriptingGlobals;
}