diff options
| author | syuilo <syuilotan@yahoo.co.jp> | 2020-04-12 19:38:19 +0900 |
|---|---|---|
| committer | syuilo <syuilotan@yahoo.co.jp> | 2020-04-12 19:38:19 +0900 |
| commit | f07047d1e89586a3bcaf36d6d2667e89e1a49d1e (patch) | |
| tree | 03986214247ed3750e780ac8568e4d4f38adbf5a /src/client/scripts | |
| parent | 12.30.0 (diff) | |
| download | sharkey-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.ts | 28 |
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); + }), + }; +} |