23
23
24
24
<script setup lang="ts">
25
25
import { ref } from ' vue' ;
26
- import { utils , errors } from ' @syuilo/aiscript' ;
27
- import type { Interpreter , Parser } from ' @syuilo/aiscript' ;
26
+ import { Parser , Interpreter , utils , errors } from ' @syuilo/aiscript' ;
28
27
29
28
const props = defineProps <{
30
29
code: string ;
@@ -36,9 +35,6 @@ const logs = ref<{
36
35
}[]>([]);
37
36
const loading = ref (false );
38
37
39
- let ParserClass: typeof Parser | null = null ;
40
- let InterpreterClass: typeof Interpreter | null = null ;
41
-
42
38
let parser: Parser | null = null ;
43
39
let interpreter: Interpreter | null = null ;
44
40
@@ -55,27 +51,16 @@ async function run() {
55
51
type: ' info' ,
56
52
}];
57
53
58
- if (! ParserClass || ! InterpreterClass ) {
59
- const [
60
- { Parser, Interpreter },
61
- ] = await Promise .all ([
62
- import (' @syuilo/aiscript' ),
63
- new Promise ((resolve ) => setTimeout (resolve , 250 )), // あまりにも高速に切り替わると実行できてるのかわかりにくいので、最低250msはロード画面を挟む
64
- ]);
65
- ParserClass = Parser ;
66
- InterpreterClass = Interpreter ;
67
- } else {
68
- await new Promise ((resolve ) => setTimeout (resolve , 250 )); // あまりにも高速に切り替わると実行できてるのかわかりにくいので、最低250msはロード画面を挟む
69
- }
54
+ await new Promise ((resolve ) => setTimeout (resolve , 250 )); // あまりにも高速に切り替わると実行できてるのかわかりにくいので、最低250msはロード画面を挟む
70
55
71
56
if (! parser ) {
72
- parser = new ParserClass ();
57
+ parser = new Parser ();
73
58
}
74
59
if (interpreter ) {
75
60
interpreter .abort ();
76
61
}
77
62
78
- interpreter = new InterpreterClass ({}, {
63
+ interpreter = new Interpreter ({}, {
79
64
out : (value ) => {
80
65
logs .value .push ({
81
66
text: value .type === ' num' ? value .value .toString () : value .type === ' str' ? ` "${value .value }" ` : JSON .stringify (utils .valToJs (value ), null , 2 ) ?? ' ' ,
0 commit comments