summaryrefslogtreecommitdiff
path: root/src/client/scripts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-04-12 19:38:19 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-04-12 19:38:19 +0900
commitf07047d1e89586a3bcaf36d6d2667e89e1a49d1e (patch)
tree03986214247ed3750e780ac8568e4d4f38adbf5a /src/client/scripts
parent12.30.0 (diff)
downloadsharkey-f07047d1e89586a3bcaf36d6d2667e89e1a49d1e.tar.gz
sharkey-f07047d1e89586a3bcaf36d6d2667e89e1a49d1e.tar.bz2
sharkey-f07047d1e89586a3bcaf36d6d2667e89e1a49d1e.zip
AiScript関連
Diffstat (limited to 'src/client/scripts')
-rw-r--r--src/client/scripts/aoiscript/evaluator.ts (renamed from src/client/scripts/aiscript/evaluator.ts)12
-rw-r--r--src/client/scripts/aoiscript/index.ts (renamed from src/client/scripts/aiscript/index.ts)2
-rw-r--r--src/client/scripts/aoiscript/type-checker.ts (renamed from src/client/scripts/aiscript/type-checker.ts)2
-rw-r--r--src/client/scripts/create-aiscript-env.ts28
4 files changed, 36 insertions, 8 deletions
diff --git a/src/client/scripts/aiscript/evaluator.ts b/src/client/scripts/aoiscript/evaluator.ts
index 5cdf5e0b84..2e952da404 100644
--- a/src/client/scripts/aiscript/evaluator.ts
+++ b/src/client/scripts/aoiscript/evaluator.ts
@@ -9,7 +9,7 @@ type Fn = {
};
/**
- * AiScript evaluator
+ * AoiScript evaluator
*/
export class ASEvaluator {
private variables: Variable[];
@@ -51,7 +51,7 @@ export class ASEvaluator {
if (pageVar !== undefined) {
pageVar.value = value;
} else {
- throw new AiScriptError(`No such page var '${name}'`);
+ throw new AoiScriptError(`No such page var '${name}'`);
}
}
@@ -206,14 +206,14 @@ export class ASEvaluator {
const fnName = block.type;
const fn = (funcs as any)[fnName];
if (fn == null) {
- throw new AiScriptError(`No such function '${fnName}'`);
+ throw new AoiScriptError(`No such function '${fnName}'`);
} else {
return fn(...block.args.map(x => this.evaluate(x, scope)));
}
}
}
-class AiScriptError extends Error {
+class AoiScriptError extends Error {
public info?: any;
constructor(message: string, info?: any) {
@@ -223,7 +223,7 @@ class AiScriptError extends Error {
// Maintains proper stack trace for where our error was thrown (only available on V8)
if (Error.captureStackTrace) {
- Error.captureStackTrace(this, AiScriptError);
+ Error.captureStackTrace(this, AoiScriptError);
}
}
}
@@ -256,7 +256,7 @@ class Scope {
}
}
- throw new AiScriptError(
+ throw new AoiScriptError(
`No such variable '${name}' in scope '${this.name}'`, {
scope: this.layerdStates
});
diff --git a/src/client/scripts/aiscript/index.ts b/src/client/scripts/aoiscript/index.ts
index 8e7b1f052a..42d67b3fad 100644
--- a/src/client/scripts/aiscript/index.ts
+++ b/src/client/scripts/aoiscript/index.ts
@@ -1,5 +1,5 @@
/**
- * AiScript
+ * AoiScript
*/
import {
diff --git a/src/client/scripts/aiscript/type-checker.ts b/src/client/scripts/aoiscript/type-checker.ts
index 817e549864..93b13c4bda 100644
--- a/src/client/scripts/aiscript/type-checker.ts
+++ b/src/client/scripts/aoiscript/type-checker.ts
@@ -8,7 +8,7 @@ type TypeError = {
};
/**
- * AiScript type checker
+ * AoiScript type checker
*/
export class ASTypeChecker {
public variables: Variable[];
diff --git a/src/client/scripts/create-aiscript-env.ts b/src/client/scripts/create-aiscript-env.ts
new file mode 100644
index 0000000000..75f402e13e
--- /dev/null
+++ b/src/client/scripts/create-aiscript-env.ts
@@ -0,0 +1,28 @@
+import { utils, values } from '@syuilo/aiscript';
+
+export function createAiScriptEnv(vm) {
+ return {
+ USER_ID: values.STR(vm.$store.state.i.id),
+ USER_USERNAME: values.STR(vm.$store.state.i.username),
+ 'Mk:dialog': values.FN_NATIVE(async ([title, text, type]) => {
+ await vm.$root.dialog({
+ type: type ? type.value : 'info',
+ title: title.value,
+ text: text.value,
+ });
+ }),
+ 'Mk:confirm': values.FN_NATIVE(async ([title, text]) => {
+ const confirm = await vm.$root.dialog({
+ type: 'warning',
+ showCancelButton: true,
+ title: title.value,
+ text: text.value,
+ });
+ return confirm.canceled ? values.FALSE : values.TRUE
+ }),
+ 'Mk:api': values.FN_NATIVE(async ([ep, param, token]) => {
+ const res = await vm.$root.api(ep.value, utils.valToJs(param), token || null);
+ return utils.jsToVal(res);
+ }),
+ };
+}