@famibee/skynovel 1.64.11 → 1.64.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CmnTween.js +118 -125
- package/dist/CmnTween.js.map +1 -1
- package/dist/EventMng.js +91 -92
- package/dist/EventMng.js.map +1 -1
- package/dist/GrpLayer.js +16 -11
- package/dist/GrpLayer.js.map +1 -1
- package/dist/LayerMng.js +92 -93
- package/dist/LayerMng.js.map +1 -1
- package/dist/Main.js.map +1 -1
- package/dist/PropParser.js +60 -58
- package/dist/PropParser.js.map +1 -1
- package/dist/Reading.js +5 -4
- package/dist/Reading.js.map +1 -1
- package/dist/ScriptIterator.js +97 -97
- package/dist/ScriptIterator.js.map +1 -1
- package/dist/SndBuf.js +37 -35
- package/dist/SndBuf.js.map +1 -1
- package/dist/Variable.js +89 -94
- package/dist/Variable.js.map +1 -1
- package/dist/sn/CmnTween.d.ts +4 -15
- package/dist/sn/CmnTween.d.ts.map +1 -1
- package/dist/sn/EventMng.d.ts.map +1 -1
- package/dist/sn/GrpLayer.d.ts +1 -1
- package/dist/sn/GrpLayer.d.ts.map +1 -1
- package/dist/sn/Layer.d.ts +1 -1
- package/dist/sn/Layer.d.ts.map +1 -1
- package/dist/sn/LayerMng.d.ts.map +1 -1
- package/dist/sn/Main.d.ts.map +1 -1
- package/dist/sn/PropParser.d.ts +7 -4
- package/dist/sn/PropParser.d.ts.map +1 -1
- package/dist/sn/Reading.d.ts +1 -1
- package/dist/sn/Reading.d.ts.map +1 -1
- package/dist/sn/ScriptIterator.d.ts.map +1 -1
- package/dist/sn/SndBuf.d.ts.map +1 -1
- package/dist/sn/Variable.d.ts.map +1 -1
- package/dist/web2.js +3 -3
- package/dist/web2.js.map +1 -1
- package/dist_app/CmnTween.js +118 -125
- package/dist_app/CmnTween.js.map +1 -1
- package/dist_app/EventMng.js +244 -245
- package/dist_app/EventMng.js.map +1 -1
- package/dist_app/GrpLayer.js +16 -11
- package/dist_app/GrpLayer.js.map +1 -1
- package/dist_app/LayerMng.js +59 -60
- package/dist_app/LayerMng.js.map +1 -1
- package/dist_app/Main.js.map +1 -1
- package/dist_app/PropParser.js +37 -35
- package/dist_app/PropParser.js.map +1 -1
- package/dist_app/Reading.js +5 -4
- package/dist_app/Reading.js.map +1 -1
- package/dist_app/ScriptIterator.js +151 -151
- package/dist_app/ScriptIterator.js.map +1 -1
- package/dist_app/SndBuf.js +37 -35
- package/dist_app/SndBuf.js.map +1 -1
- package/dist_app/Variable.js +89 -94
- package/dist_app/Variable.js.map +1 -1
- package/dist_app/app2.js +3 -3
- package/dist_app/app2.js.map +1 -1
- package/dist_app/sn/CmnTween.d.ts +4 -15
- package/dist_app/sn/CmnTween.d.ts.map +1 -1
- package/dist_app/sn/EventMng.d.ts.map +1 -1
- package/dist_app/sn/GrpLayer.d.ts +1 -1
- package/dist_app/sn/GrpLayer.d.ts.map +1 -1
- package/dist_app/sn/Layer.d.ts +1 -1
- package/dist_app/sn/Layer.d.ts.map +1 -1
- package/dist_app/sn/LayerMng.d.ts.map +1 -1
- package/dist_app/sn/Main.d.ts.map +1 -1
- package/dist_app/sn/PropParser.d.ts +7 -4
- package/dist_app/sn/PropParser.d.ts.map +1 -1
- package/dist_app/sn/Reading.d.ts +1 -1
- package/dist_app/sn/Reading.d.ts.map +1 -1
- package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
- package/dist_app/sn/SndBuf.d.ts.map +1 -1
- package/dist_app/sn/Variable.d.ts.map +1 -1
- package/package.json +5 -5
package/dist_app/Main.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Main.js","sources":["../src/sn/Config.ts","../src/sn/AnalyzeTagArg.ts","../src/sn/Grammar.ts","../src/sn/Main.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib} from './CmnLib';\nimport type {SysBase} from './SysBase';\nimport {ConfigBase, SEARCH_PATH_ARG_EXT, type T_CFG_RAW} from './ConfigBase';\n\nexport const PROTOCOL_USERDATA\t= 'userdata:/';\nexport const PROTOCOL_DL\t\t= 'downloads:/';\n\n\nexport class Config extends ConfigBase {\n\tstatic\tasync\tgenerate(sys: SysBase) {\n\t\tconst c = new Config(sys);\n\t\tconst fn = sys.arg.cur +'prj.json';\n\t\tconst res = await sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst dec = await sys.dec(fn, await res.text());\n\t\tawait c.load(<T_CFG_RAW>JSON.parse(dec));\n\t\treturn c;\n\t}\n\n\tprotected\tconstructor(override readonly sys: SysBase) {super(sys)}\n\n\tprotected\toverride\tasync load(oCfg: T_CFG_RAW) {\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tCmnLib.stageW = oCfg.window.width;\n\t\tCmnLib.stageH = oCfg.window.height;\n\t\tCmnLib.debugLog = oCfg.debug.debugLog;\n\t\tawait CmnLib.init();\n\n\t\treturn super.load(oCfg);\n\t}\n\n\toverride\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (fn.startsWith(PROTOCOL_DL)) {\n\t\t\treturn this.sys.path_downloads + fn.slice(11);\n\t\t}\n\t\tif (fn.startsWith(PROTOCOL_USERDATA)) {\n\t\t\treturn this.sys.path_userdata + 'storage/'+ fn.slice(10);\n\t\t}\n\n\t\treturn super.searchPath(fn, extptn);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nexport type PRM = {\n\tval\t\t: string;\n\tdef?\t: string;\n}\nexport type HPRM = {\n\t[key: string]: PRM,\n}\n\nexport type PRM_RANGE = {\n\tk_ln\t: number;\n\tk_ch\t: number;\n\tv_ln\t: number;\n\tv_ch\t: number;\n\tv_len\t: number;\n}\n\nexport function idx2LnCol(sSn: string, idx: number, lenNm = 0, ln = 0, ch = 0): {ln: number; ch: number;} {\n\tconst sBefore = sSn.slice(0, idx);\n\tconst a = sBefore.split('\\n');\n\tconst len = a.length;\n\treturn {\n\t\tln\t: ln +len -1,\n\t\tch\t: len < 2 ?ch +1+lenNm +idx :a.at(-1)?.length ?? 0,\n\t};\n}\n\n\nexport class AnalyzeTagArg {\n\t// 87 match 2725 step(0.5ms) PCRE2 https://regex101.com/r/aeN57J/1\n\t/*\n;[^\\n]*\n|\t(?<key>[^\\s=\"'#|;]+)\n\t(?: \\s | ;[^\\n]*\\n)*\n\t=\n\t(?: \\s | ;[^\\n]*\\n)*\n\t(?:\t(?<val> [^\\s\"'#|;]+)\n\t|\t([\"'#]) (?<val2>.*?) \\3 )\n\t(?: \\|\n\t\t(?: (?<def> [^\\s\"'#;]+)\n\t|\t([\"'#]) (?<def2>.*?) \\6 ) )?\n|\t(?<literal>[^\\s;]+)\n\t*/\n\treadonly\t#REG_TAGARG\t= /;[^\\n]*|(?<key>[^\\s=\"'#|;]+)(?:\\s|;[^\\n]*\\n)*=(?:\\s|;[^\\n]*\\n)*(?:(?<val>[^\\s\"'#|;]+)|([\"'#])(?<val2>.*?)\\3)(?:\\|(?:(?<def>[^\\s\"'#;]+)|([\"'#])(?<def2>.*?)\\6))?|(?<literal>[^\\s;]+)/g;\n\n\t// 【属性 = 値 | 省略値】の分析\n\tparse(args: string): void {\n\t\tthis.#hPrm = {};\n\t\tthis.#isKomeParam = false;\n\t\tfor (const {groups} of args.matchAll(this.#REG_TAGARG)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2, def, def2, literal} = groups!;\n\t\t\tif (key) this.#hPrm[key] = {\n\t\t\t\tval: val ?? val2 ?? '',\n\t\t\t\tdef: def ?? def2\n\t\t\t};\n\t\t\telse if (literal) {\n\t\t\t\tif (literal === '*') this.#isKomeParam = true;\n\t\t\t\telse this.#hPrm[literal] = {val: '1'};\n\t\t\t}\n\t\t}\n\t}\n\n\t// 属性と値の位置をまとめて返す\n\tparseinDetail(token: string, lenNm: number, ln: number, ch: number): {[key: string]: PRM_RANGE} {\n\t\tconst hRng: {[key: string]: PRM_RANGE} = {};\n\n\t\tconst sSn = token.slice(1+lenNm, -1);\n\t\tfor (const {groups, index, 0: z} of sSn.matchAll(this.#REG_TAGARG)) {\n\t\t\tif (! index) continue;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2='', literal} = groups!;\n\t\t\tif (literal) {\n\t\t\t\tif (literal.endsWith('=')) {\n\t\t\t\t\tconst lenVnm = literal.length -1;\n\t\t\t\t\tconst {ch: k_ch} = idx2LnCol(sSn, index +lenVnm, lenNm, ln, ch);\n\t\t\t\t\thRng[literal.slice(0, -1)] = {\n\t\t\t\t\t\tk_ln: ln,\n\t\t\t\t\t\tk_ch: k_ch -lenVnm,\n\t\t\t\t\t\tv_ln: ln,\n\t\t\t\t\t\tv_ch: k_ch +1,\n\t\t\t\t\t//\tv_ch: ch +1+lenNm +literal.length +1,\n\t\t\t\t\t\tv_len: 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (! key) continue;\n\n\t\t\tconst {ln: k_ln, ch: k_ch} = idx2LnCol(sSn, index, lenNm, ln, ch);\n\t\t\tconst {ln: v_ln, ch: v_ch} = idx2LnCol(sSn, index +z.lastIndexOf(val ?? val2) -(val ?0 :1), lenNm, ln, ch);\n\t\t\thRng[key] = {k_ln, k_ch, v_ln, v_ch, v_len: val ?val.length :val2.length +2};\n\t\t}\n\n\t\treturn hRng;\n\t}\n\n\t#hPrm: HPRM\t= {};\n\tget hPrm() {return this.#hPrm}\n\n\t#isKomeParam\t= false;\n\tget isKomeParam() {return this.#isKomeParam}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {AnalyzeTagArg} from './AnalyzeTagArg';\nimport {getFn} from './CmnLib';\nimport {type T_Config, SEARCH_PATH_ARG_EXT} from './ConfigBase';\n\n\nexport type TArg = {\n\t':タグ名'?\t: string;\n\tcanskip?\t: boolean;\n\n\tlayer?\t: string;\t// レイヤ系\n\tclass?\t: string;\n\tindex?\t: number;\n\tdive?\t: string;\n\tpage?\t: string;\n\talpha?\t: number;\n\tpivot_x?: number;\n\tpivot_y?: number;\n\trotation?\t: number;\n\tscale_x?: number;\n\tscale_y?: number;\n\tvisible?: boolean;\n\tblendmode?\t: string;\n\n\tleft?\t: number;\n\ttop?\t: number;\n\twidth?\t: number;\n\theight?\t: number;\n\tpl?\t\t: number;\n\tpr?\t\t: number;\n\tpt?\t\t: number;\n\tpb?\t\t: number;\n\n\trotate?\t: number;\n\tin_style?\t: string;\n\tout_style?\t: string;\n\tffs?\t: string;\n\tnoffs?\t: string;\n\tkinsoku_sol?\t: string;\n\tkinsoku_eol?\t: string;\n\tkinsoku_dns?\t: string;\n\tkinsoku_bura?\t: string;\n\tbura?\t: boolean;\n\tbreak_fixed?\t\t: boolean;\n\tbreak_fixed_left?\t: number;\n\tbreak_fixed_top?\t: number;\n\n\ttime?\t: number;\n\trule?\t: string;\n\tglsl?\t: string;\n\trender?\t: boolean;\n\n\tpos?\t: string;\n\ttext?\t: string;\n\twait?\t: number;\n\trecord?\t: boolean;\n\tpic?\t: string;\n\tenabled?: boolean;\n\thint?\t\t: string;\n\thint_style?\t: string;\n\thint_opt?\t: string;\n\tclickse?\t: string;\n\tenterse?\t: string;\n\tleavese?\t: string;\n\tclicksebuf?\t: string;\n\tentersebuf?\t: string;\n\tleavesebuf?\t: string;\n\tonenter?\t: string;\n\tonleave?\t: string;\n\n\tt?\t: string;\n\tr?\t: string;\n\texp?\t: string;\n\tchar?\t: string;\n\tsesame?\t: string;\n\tcast?\t: string;\n\tval?\t: string;\n\tflags?\t: string;\n\treg?\t: string;\n\tlen?\t: string;\n\turl?\t: string;\n\tformat?\t: string;\n\tchain?\t: string;\n\tpath?\t: string;\n\n\tfn?\t\t: string;\n\tface?\t: string;\n\tlabel?\t: string;\n\tcall?\t: boolean;\n\tglobal?\t: boolean;\n\tname?\t: string;\n\tclear_local_event?\t: boolean;\n\n\tstyle?\t\t\t: string;\n\tstyle_hover?\t: string;\n\tstyle_clicked?\t: string;\n\tr_style?\t\t: string;\n\tr_style_hover?\t: string;\n\tr_style_clicked?: string;\n\tr_align?\t: string;\n\n\tb_width?\t: string;\n\tb_height?\t: string;\n\tb_color?\t: string;\n\tb_alpha?\t: number;\n\tb_alpha_isfixed?\t: boolean;\n\tb_pic?\t\t: string;\n\tback_clear?\t: string;\n\n\tmax_col?\t: string;\n\tmax_row?\t: string;\n\tbura_col?\t: string;\n\tchk_overrow?\t: string;\n\n\tdx?\t: number;\n\tdy?\t: number;\n\n\tkey?\t: string;\n\ttype?\t: string;\t// 3Dレイヤで使用\n\tcamera_target?\t: string;\n\n\targ?\t: TArg;\n\tfnc?\t: ()=> void;\n\n\tfilter?\t: string;\n\tmatrix?\t: string;\n\tclear_filter?\t: boolean;\n\tenable_filter?\t: boolean;\n\n\tease?\t: string;\n\n\tcentering?\t:boolean;\n\tx?\t\t: number | string;\n\ty?\t\t: number | string;\n\n\tid?\t\t\t: string;\n\tsrc?\t\t: string;\n\tvar_name?\t: string;\n\tset_fnc?\t: string;\n\tbreak_fnc?\t: string;\n\n\tfrom?\t: number;\n\tto?\t\t: number | string;\n\tplace?\t: number;\n\tadd?\t: string;\n\tdel?\t: string;\n\n\tbuf?\t: string;\t// 音系\n\tbuf2?\t: string;\n\tloop?\t: boolean;\n\tvolume?\t: number;\n\tret_ms?\t: number;\n\tend_ms?\t: number;\n\tjoin?\t: boolean;\n\tdo_rec?\t: boolean;\n\tpan?\t: number;\n\tstop?\t: boolean;\n\n\tclear?\t: boolean;\n\n\t// デザインモード\n\t':id_dc'?\t: string;\n\t':id_tag'?\t: string;\n\t':path'?\t: string;\n\t':ln'?\t\t: number;\n\t':col_s'?\t: number;\n\t':col_e'?\t: number;\n\t':idx_tkn'?\t: number;\n\t':token'?\t: string;\n\t':redraw'?\t: boolean;\n\tdesign_unit?: boolean;\t// デザインモードでこのマクロへの引数変更とするか(内部をサーチさせない)\n\n//\tstepin?\t\t: boolean;\t\t// 拡張機能のみ使用:false指定でステップインしない\n//\tnowarn_unused?\t: boolean;\t// 拡張機能のみ使用:未使用警告を出さない\n}\nexport type TTag = (hArg: TArg) => boolean;\nexport type T_HTag = {\n// 変数操作\n\tclearsysvar\t\t\t: TTag;\t// システム変数の全消去\n\tclearvar\t\t\t: TTag;\t// ゲーム変数の全消去\n\tlet_abs\t\t\t\t: TTag;\t// 絶対値\n\tlet_char_at\t\t\t: TTag;\t// 文字列から一字取りだし\n\tlet_index_of\t\t: TTag;\t// 文字列で検索\n\tlet_length\t\t\t: TTag;\t// 文字列の長さ\n\tlet_ml\t\t\t\t: TTag;\t// インラインテキスト代入\n\tlet_replace\t\t\t: TTag;\t// 正規表現で置換\n\tlet_round\t\t\t: TTag;\t// 四捨五入\n\tlet_search\t\t\t: TTag;\t// 正規表現で検索\n\tlet_substr\t\t\t: TTag;\t// 文字列から抜きだし\n\tlet\t\t\t\t\t: TTag;\t// 変数代入・演算\n\n// レイヤ共通\n\tadd_lay\t\t\t\t: TTag;\t// レイヤを追加する\n\tclear_lay\t\t\t: TTag;\t// レイヤ設定の消去\n\tfinish_trans\t\t: TTag;\t// トランス強制終了\n\tlay\t\t\t\t\t: TTag;\t// レイヤ設定\n\ttrans\t\t\t\t: TTag;\t// ページ裏表を交換\n\twt\t\t\t\t\t: TTag;\t// トランス終了待ち\n\tadd_filter\t\t\t: TTag;\t// フィルター追加\n\tclear_filter\t\t: TTag;\t// フィルター全削除\n\tenable_filter\t\t: TTag;\t// フィルター個別切替\n\n// トゥイーンアニメ\n\tpause_tsy\t\t\t: TTag;\t// 一時停止\n\tresume_tsy\t\t\t: TTag;\t// 一時停止再開\n\tstop_tsy\t\t\t: TTag;\t// トゥイーン中断\n\ttsy\t\t\t\t\t: TTag;\t// トゥイーン開始\n\twait_tsy\t\t\t: TTag;\t// トゥイーン終了待ち\n\n// 文字・文字レイヤ\n\tautowc\t\t\t\t: TTag;\t// 文字ごとのウェイト\n\tch\t\t\t\t\t: TTag;\t// 文字を追加する\n\tch_in_style\t\t\t: TTag;\t// 文字出現演出定義\n\tch_out_style\t\t: TTag;\t// 文字消去演出定義\n\tclear_text\t\t\t: TTag;\t// 文字消去\n\tcurrent\t\t\t\t: TTag;\t// デフォルト文字レイヤ設定\n\tendlet_ml\t\t\t: TTag;\t// インラインテキスト代入の終端\n\tendlink\t\t\t\t: TTag;\t// ハイパーリンクの終了\n\ter\t\t\t\t\t: TTag;\t// ページ両面の文字消去\n\tgraph\t\t\t\t: TTag;\t// インライン画像表示\n\tlink\t\t\t\t: TTag;\t// ハイパーリンク\n\tr\t\t\t\t\t: TTag;\t// 改行\n\trec_ch\t\t\t\t: TTag;\t// 履歴書き込み\n\trec_r\t\t\t\t: TTag;\t// 履歴改行\n\treset_rec\t\t\t: TTag;\t// 履歴リセット\n\truby2\t\t\t\t: TTag;\t// 文字列と複数ルビの追加\n\tset_focus\t\t\t: TTag;\t// フォーカス移動\n\tspan\t\t\t\t: TTag;\t// インラインスタイル設定\n\ttcy\t\t\t\t\t: TTag;\t// 縦中横を表示する\n\n// 画像・画像レイヤ\n\tadd_face\t\t\t: TTag;\t// 差分名称の定義\n\twv\t\t\t\t\t: TTag;\t// 動画再生終了待ち\n\n// HTMLフレーム\n\tadd_frame\t\t\t: TTag;\t// フレーム追加\n\tframe\t\t\t\t: TTag;\t// フレームに設定\n\tlet_frame\t\t\t: TTag;\t// フレーム変数を取得\n\tset_frame\t\t\t: TTag;\t// フレーム変数に設定\n\ttsy_frame\t\t\t: TTag;\t// フレームをトゥイーン開始\n\n// イベント\n\tclear_event\t\t\t: TTag;\t// イベントを全消去\n\tenable_event\t\t: TTag;\t// イベント有無の切替\n\tevent\t\t\t\t: TTag;\t// イベントを予約\n\tl\t\t\t\t\t: TTag;\t// 行末クリック待ち\n\tp\t\t\t\t\t: TTag;\t// 改ページクリック待ち\n\ts\t\t\t\t\t: TTag;\t// 停止する\n\tset_cancel_skip\t\t: TTag;\t// スキップ中断予約\n\twait\t\t\t\t: TTag;\t// ウェイトを入れる\n\twaitclick\t\t\t: TTag;\t// クリックを待つ\n\n// BGM・効果音\n\tfadebgm\t\t\t\t: TTag;\t// BGMのフェード\n\tfadeoutbgm\t\t\t: TTag;\t// BGMのフェードアウト\n\tfadeoutse\t\t\t: TTag;\t// 効果音のフェードアウト\n\tfadese\t\t\t\t: TTag;\t// 効果音のフェード\n\tplaybgm\t\t\t\t: TTag;\t// BGM の演奏\n\tplayse\t\t\t\t: TTag;\t// 効果音の再生\n\tstop_allse\t\t\t: TTag;\t// 全効果音再生の停止\n\tstopbgm\t\t\t\t: TTag;\t// BGM 演奏の停止\n\tstopfadese\t\t\t: TTag;\t// 音声フェードの停止\n\tstopse\t\t\t\t: TTag;\t// 効果音再生の停止\n\tvolume\t\t\t\t: TTag;\t// BGMや効果音の音量を指定\n\twb\t\t\t\t\t: TTag;\t// BGM フェードの終了待ち\n\twf\t\t\t\t\t: TTag;\t// 効果音フェードの終了待ち\n\twl\t\t\t\t\t: TTag;\t// BGM 再生の終了待ち\n\tws\t\t\t\t\t: TTag;\t// 効果音再生の終了待ち\n\txchgbuf\t\t\t\t: TTag;\t\t// サウンドバッファの交換\n\n// 条件分岐\n\telse\t\t\t\t: TTag;\t// その他ifブロック開始\n\telsif\t\t\t\t: TTag;\t// 別条件のifブロック開始\n\tendif\t\t\t\t: TTag;\t// ifブロックの終端\n\tif\t\t\t\t\t: TTag;\t// ifブロックの開始\n\n// ラベル・ジャンプ\n\tbutton\t\t\t\t: TTag;\t// ボタンを表示\n\tcall\t\t\t\t: TTag;\t// サブルーチンコール\n\tjump\t\t\t\t: TTag;\t// シナリオジャンプ\n\tpage\t\t\t\t: TTag;\t// ページ移動\n\tpop_stack\t\t\t: TTag;\t// コールスタック破棄\n\treturn\t\t\t\t: TTag;\t// サブルーチンから戻る\n\n// マクロ\n\tbracket2macro\t\t: TTag;\t// 括弧マクロの定義\n\tchar2macro\t\t\t: TTag;\t// 一文字マクロの定義\n\tendmacro\t\t\t: TTag;\t// マクロ定義の終了\n\tmacro\t\t\t\t: TTag;\t// マクロ定義の開始\n\n// しおり\n\tcopybookmark\t\t: TTag;\t// しおりの複写\n\terasebookmark\t\t: TTag;\t// しおりの消去\n\tload\t\t\t\t: TTag;\t// しおりの読込\n\trecord_place\t\t: TTag;\t// セーブポイント指定\n\treload_script\t\t: TTag;\t// スクリプト再読込\n\tsave\t\t\t\t: TTag;\t// しおりの保存\n\n// 画面揺らし\n\tquake\t\t\t\t: TTag;\t// 画面を揺らす\n\tstop_quake\t\t\t: TTag;\t// 画面揺らし中断\n\twq\t\t\t\t\t: TTag;\t// 画面揺らし終了待ち\n\n// システム\n\tclose\t\t\t\t: TTag;\t// アプリの終了\n\texport\t\t\t\t: TTag;\t// プレイデータをエクスポート\n\timport\t\t\t\t: TTag;\t// プレイデータをインポート\n\tloadplugin\t\t\t: TTag;\t// プラグインの読み込み\n\tnavigate_to\t\t\t: TTag;\t// URLを開く\n\tsnapshot\t\t\t: TTag;\t// スナップショット\n\ttitle\t\t\t\t: TTag;\t// タイトル指定\n\ttoggle_full_screen\t: TTag;\t// 全画面状態切替\n\tupdate_check\t\t: TTag;\t// 更新チェック機能\n\twindow\t\t\t\t: TTag;\t// アプリウインドウ設定\n\n// デバッグ・その他\n\tdump_lay\t\t\t: TTag;\t// レイヤのダンプ\n\tdump_script\t\t\t: TTag;\t// 外部へスクリプトを表示\n\tdump_stack\t\t\t: TTag;\t// スタックのダンプ\n\tdump_val\t\t\t: TTag;\t// 変数のダンプ\n\tlog\t\t\t\t\t: TTag;\t// ログ出力\n\ttrace\t\t\t\t: TTag;\t// デバッグ表示へ出力\n}\n\n\nexport type Script = {\n\taToken\t: string[];\t\t// トークン群\n\tlen\t\t: number;\t\t// トークン数\n\taLNum\t: number[];\t\t// トークンの行番号\n};\n\n\nexport const\tREG_TAG\t= /(?<name>[^\\s;\\]]+)/;\t// test用にexport\nexport function\ttagToken2Name_Args(token: string): [name: string, args: string] {\n\tconst e = REG_TAG.exec(token.slice(1, -1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\tconst nm = g.name!;\n\treturn [nm, token.slice(1 +nm.length, -1)];\n}\nexport function\ttagToken2Name(token: string): string {\n\tconst e = REG_TAG.exec(token.slice(1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\treturn g.name!;\n}\n\nexport function\tsplitAmpersand(token: string): {\n\t\tname: string;\n\t\ttext: string;\n\t\tcast: string | undefined;\n} {\t// テスト用にpublic\n\tconst equa = token.replaceAll('==', '=').replaceAll('!=', '≠').split('=');\n\t\t// != を弾けないので中途半端ではある\n\tconst cnt_equa = equa.length;\n\tif (cnt_equa < 2 || cnt_equa > 3) throw '「&計算」書式では「=」指定が一つか二つ必要です';\n\n\tconst [e0, e1, e2] = equa;\n\tif (e1!.startsWith('&')) throw '「&計算」書式では「&」指定が不要です';\n\treturn {\n\t\tname: e0!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\ttext: e1!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\tcast: cnt_equa === 3 ?e2!.trim() :undefined\n\t};\n}\n\n\nexport class Grammar {\n\tconstructor(private readonly cfg: T_Config) {this.setEscape('')}\n\n\t#REG_TOKEN\t: RegExp;\n\tsetEscape(ce: string) {\n\t\tif (this.#hC2M && ce in this.#hC2M) throw '[エスケープ文字] char【'+ ce +'】が登録済みの括弧マクロまたは一文字マクロです';\n\n\t\t// 1083 matches (14577 step, 9.9ms) https://regex101.com/r/dP0tAY/1\n\t\t/*\n\\\\\\S |\n \\n+\n| \\t+\n|\t\\[let_ml \\s+ [^\\]]+ ]\n\t.+? (?=\\[endlet_ml [\\]\\s])\n| \\[ (?: [^\"'#;\\]]+\n\t| ([\"'#]).*?\\1\n\t| ;[^\\n]* ) *? ]\n| ;[^\\n]*\n| &[^&\\n]+&\n| &&?(?: [^\"'#;\\n&]+ | ([\"'#]).*?\\2 )+\n| ^\\*[^\\s\\[&;\\\\]+\n| [^\\n\\t\\[;\\\\]+\n\t\t*/\n/*\n\t[^\"'#;\\]]++\n\t| ([\"'\\#]).*?\\1\n\t\t\t++ にしたいところだが、jsは未サポートらしい(2022/10/16)\n*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\t\t// https://qiita.com/ue5963/items/bd8e32ac9e6b12aa7fab\n\t\tthis.#REG_TOKEN = new RegExp(\n\t\t(ce\t?`\\\\${ce}\\\\S|` :'')+\t// エスケープシーケンス\n\t\t'\\\\n+'+\t\t\t\t// 改行\n\t\t'|\\\\t+'+\t\t\t// タブ文字\n\t\t'|\\\\[let_ml\\\\s+[^\\\\]]+\\\\]'+\n\t\t\t'.+?'+\t\t\t// [let_ml]〜[endlet_ml]間のテキスト\n\t\t'(?=\\\\[endlet_ml[\\\\]\\\\s])'+\n\t\t'|\\\\[(?:'+\n\t\t\t'[^\"\\'#;\\\\]]+|'+\t// タグ\n\t\t\t'([\"\\'#]).*?\\\\1' +\n\t\t\t\t// . は (?:\\\\${ ce??'\\\\' }.|[^\\\\1]) でなくてよさげ\n\t\t'|;[^\\\\n]*)*?]'+\n\t\t'|;[^\\\\n]*'+\t\t// コメント\n\t\t'|&[^&\\\\n]+&'+\t\t// &表示&\n\t\t'|&&?(?:[^\"\\'#;\\\\n&]+|([\"\\'#]).*?\\\\2)+'+\t// &代入\n\t\t'|^\\\\*[^\\\\s\\\\[&;\\\\\\\\]+'+\t// ラベル\n\t\t`|[^\\\\n\\\\t\\\\[;${ce ?`\\\\${ce}` :''}]+`,\t\t// 本文\n\t\t'gs');\n\t\tthis.#REG_CANTC2M = new RegExp(`[\\\\w\\\\s;[\\\\]*=&|《》${ce ?`\\\\${ce}` :''}]`);\n\t\tthis.#REG_TOKEN_NOTXT = new RegExp(`[\\\\n\\\\t;\\\\[*&${ce ?`\\\\${ce}` :''}]`);\n\t}\n\n\n\t// 括弧マクロの定義\n\tbracket2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {name, text} = hArg;\n\t\tif (! name) throw '[bracket2macro] nameは必須です';\n\t\tif (! text) throw '[bracket2macro] textは必須です';\n\t\tconst op = text.at(0);\n\t\tif (! op) throw '[bracket2macro] textは必須です';\n\t\tif (text.length !== 2) throw '[bracket2macro] textは括弧の前後を示す二文字を指定してください';\n\t\tif (! (name in hTag)) throw `[bracket2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M ??= {};\n\t\tconst cl = text.charAt(1);\n\t\tif (op in this.#hC2M) throw '[bracket2macro] text【'+ op +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (cl in this.#hC2M) throw '[bracket2macro] text【'+ cl +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(op)) throw '[bracket2macro] text【'+ op +'】は括弧マクロに使用できない文字です';\n\t\tif (this.#REG_CANTC2M.test(cl)) throw '[bracket2macro] text【'+ cl +'】は括弧マクロに使用できない文字です';\n\n\t\tthis.#hC2M[cl] = '0';\t// チェック用ダミー\n\t\tthis.#hC2M[op] = `[${name} text=`;\n\n\t\tthis.addC2M(`\\\\${op}[^\\\\${cl}]*\\\\${cl}`, `\\\\${op}\\\\${cl}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t// 一文字マクロの定義\n\tchar2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {char, name} = hArg;\n\t\tif (! char) throw '[char2macro] charは必須です';\n\t\tthis.#hC2M ??= {};\n\t\tif (char in this.#hC2M) throw '[char2macro] char【'+ char +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(char)) throw '[char2macro] char【'+ char +'】は一文字マクロに使用できない文字です';\n\n\t\tif (! name) throw '[char2macro] nameは必須です';\n\t\tif (! (name in hTag)) throw `[char2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M[char] = `[${name}]`;\n\n\t\tthis.addC2M(`\\\\${char}`, `\\\\${char}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t#REG_CANTC2M\t: RegExp;\n\t#REGC2M\t\t\t= new RegExp('');\n\t#regStrC2M\t\t= '';\n\t#regStrC2M4not\t= '';\n\taddC2M(a: string, b: string) {\n\t\tthis.#regStrC2M += `${a}|`;\n\t\tthis.#regStrC2M4not += b;\n\t\tthis.#REGC2M = new RegExp(\n\t\t\t`(${this.#regStrC2M}[^${this.#regStrC2M4not}]+)`, 'g');\n\t}\n\n\n\tresolveScript(txt: string): Script {\n\t\tconst a: string[] = txt\n\t\t.replaceAll(/\\r\\n?/g, '\\n')\n\t\t.match(this.#REG_TOKEN)\n\t\t?.flatMap(tkn=> {\n\t\t\tif (! this.testTagLetml(tkn)) return tkn;\n\n\t\t\tconst r = /^([^\\]]+?])(.*)$/s.exec(tkn);\n\t\t\tif (! r) return tkn;\n\t\t\tconst [, a, b] = r;\n\t\t\treturn [a!, b!];\n\t\t}) ?? [];\n\n\t\tconst scr = {aToken: a, len: a.length, aLNum: []};\n\t\tthis.#replaceScr_C2M(scr);\n\n\t\tthis.#replaceScript_Wildcard(scr);\n\n\t\treturn scr;\n\t}\n\n\n\treadonly #REG_WILDCARD\t= /^\\[(call|loadplugin)\\s/;\n\treadonly #REG_WILDCARD2\t= /\\bfn\\s*=\\s*[^\\s\\]]+/;\n\t#replaceScript_Wildcard(scr: Script) {\n\t\tfor (let i=scr.len -1; i>=0; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (! this.#REG_WILDCARD.test(token)) continue;\n\n\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\tthis.#alzTagArg.parse(args);\n\n\t\t\tconst p_fn = this.#alzTagArg.hPrm.fn;\n\t\t\tif (! p_fn) continue;\n\t\t\tconst {val: fn} = p_fn;\n\t\t\tif (! fn.endsWith('*')) continue;\n\n\t\t\tscr.aToken.splice(i, 1, '\\t', '; '+ token);\n\t\t\tscr.aLNum.splice(i, 1, NaN, NaN);\n\n\t\t\tconst ext = tag_name === 'loadplugin'\n\t\t\t\t? SEARCH_PATH_ARG_EXT.CSS\n\t\t\t\t: SEARCH_PATH_ARG_EXT.SN;\n\t\t\tconst a = this.cfg.matchPath('^'+ fn.slice(0, -1) +'.*', ext);\n\t\t\tfor (const v of a) {\n\t\t\t\tconst nt = token.replace(\n\t\t\t\t\tthis.#REG_WILDCARD2,\n\t\t\t\t\t'fn='+ decodeURIComponent(getFn(v[ext]!))\n\t\t\t\t);\n\t\t\t\t//console.log('\\t='+ nt +'=');\n\t\t\t\tscr.aToken.splice(i, 0, nt);\n\t\t\t\tscr.aLNum.splice(i, 0, NaN);\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\t\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\ttestTagLetml(tkn: string): boolean {return /^\\[let_ml\\s/.test(tkn)}\n\ttestTagEndLetml(tkn: string): boolean {return /^\\[endlet_ml\\s*]/.test(tkn)}\n\n\n\t#hC2M\t: {[char: string]: string} | undefined = undefined;\n\t#REG_TOKEN_NOTXT\t: RegExp;\n\t#replaceScr_C2M(scr: Script, start_idx = 0): void {\n\t\tif (! this.#hC2M) return;\n\n\t\tfor (let i=scr.len- 1; i >= start_idx; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (this.testNoTxt(token.at(0) ?? '\\n')) continue;\n\t\t\t\t// 省略時は #REG_TOKEN_NOTXT に引っかかる \\n に\n\n\t\t\tconst lnum = scr.aLNum[i]!;\n\t\t\tconst a = token.match(this.#REGC2M);\n\t\t\tif (! a) continue;\n\t\t\tlet del = 1;\n\t\t\tfor (let j=a.length -1; j>=0; --j) {\n\t\t\t\tlet ch = a[j]!;\n\t\t\t\tconst macro = this.#hC2M[ch.at(0) ?? ' '];\n\t\t\t\t\t// 省略時は #REG_CANTC2M に引っかかる ' ' に\n\t\t\t\tif (macro) {\n\t\t\t\t\tch = macro +(macro.endsWith(']')\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `'${ch.slice(1, -1)}']`);\n\t\t\t\t\t// 文字列は半角空白を意識して''で囲むが、いずれ変えたい場合がある?\n\t\t\t\t}\n\t\t\t\tscr.aToken.splice(i, del, ch);\n\n\t\t\t\tscr.aLNum.splice(i, del, lnum);\n\t\t\t\tdel = 0;\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\ttestNoTxt(ch: string): boolean {return this.#REG_TOKEN_NOTXT.test(ch)}\t//4tst\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, argChk_Boolean, parseColor} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Main, Scope, T_VAL_BSNU, T_VAL_DATA} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {Config} from './Config';\nimport {splitAmpersand, tagToken2Name_Args} from './Grammar';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {LayerMng} from './LayerMng';\nimport type {EventMng} from './EventMng';\n\nimport {type IApplicationOptions, Application, utils} from 'pixi.js';\n\n\nconst\tSN_ID\t= 'skynovel';\n\nexport class Main implements T_Main {\n\tstatic\tasync generate(sys: SysBase): Promise<Main> {\n\t\tutils.skipHello();\n\n\t\tconst m = new Main(sys);\n\t\tawait m.#init()\n\t\t.catch((e: unknown)=> console.error('Main.generate err e:%o', e));\n\n\t\treturn m;\n\t}\n\n\n\tcvs\t\t\t: HTMLCanvasElement;\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hTag\t\t: T_HTag\t\t= Object.create(null);\t// タグ処理辞書\n\n\t#scrItr\t\t: ScriptIterator;\n\t#layMng\t\t: LayerMng;\n\t#evtMng\t\t: EventMng;\n\n\t#aDest\t\t: (()=> void)[]\t\t= [];\n\n\n\tprivate constructor(private readonly sys: SysBase) {}\n\n\tasync #init() {\n\t\tconst cfg = await Config.generate(this.sys);\n\t\tthis.sys.setMain(this, cfg);\n\n\t\tconst hApp: IApplicationOptions = {\n\t\t\twidth\t\t\t: cfg.oCfg.window.width,\n\t\t\theight\t\t\t: cfg.oCfg.window.height,\n\t\t\tbackgroundColor\t: parseColor(String(cfg.oCfg.init.bg_color)),\n\t\t\t\t// このString()は後方互換性のため必須\n\t\t\tresolution\t\t: globalThis.devicePixelRatio,\n\t\t};\n\n\t\tconst cvs = <HTMLCanvasElement | null>document.getElementById(SN_ID);\n\t\tif (cvs) {\n\t\t\tconst clone_cvs = <HTMLCanvasElement>cvs.cloneNode(true);\n\t\t\tclone_cvs.id = SN_ID;\n\t\t\thApp.view = cvs;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst p = cvs.parentNode!;\n\t\t\tthis.#aDest.unshift(()=> p.appendChild(clone_cvs));\n\t\t}\n\t\telse {\t// 自動的に作ってくれるが、どうも appendChild に遅延があるので\n\t\t\tconst c = document.createElement('canvas');\n\t\t\tc.id = SN_ID;\n\t\t\thApp.view = c;\n\t\t\tdocument.body.appendChild(c);\n\t\t\tthis.#aDest.unshift(()=> document.body.removeChild(c));\n\t\t}\n\n\t\tconst app = new Application(hApp);\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tutils.clearTextureCache();\n\t\t\tthis.sys.destroy();\n\t\t\tapp.destroy(false);\t// remove canvas from DOM が非同期なのでウチがやる\n\t\t});\n\n\t\tthis.cvs = app.view;\n\t\tthis.cvs.id = SN_ID +'_act';\n\t\tif (! cvs) document.body.appendChild(this.cvs);\n\n\n\t\tconst cc = document.createElement('canvas').getContext('2d');\n\t\tif (! cc) throw '#init cc err';\n\t\tCmnLib.cc4ColorName = cc;\n\n\t\tconst [{Variable}, {PropParser}, {SoundMng}, {ScriptIterator}, {LayerMng}, {EventMng}, {Button}] = await Promise.all([\n\t\t\timport('./Variable'),\n\t\t\timport('./PropParser'),\n\t\t\timport('./SoundMng'),\n\t\t\timport('./ScriptIterator'),\n\t\t\timport('./LayerMng'),\n\t\t\timport('./EventMng'),\n\t\t\timport('./Button'),\n\t\t]);\n\n\t\tButton.init(cfg);\n\n\t\t// 変数\n\t\tconst val = new Variable(this.sys, cfg, this.#hTag);\n\t\tconst prpPrs = new PropParser(val, cfg.oCfg.init.escape);\n\t\tthis.#setVal_Nochk = (scope, nm, v, autocast)=> val.setVal_Nochk(scope, nm, v, autocast);\n\t\tthis.#getValAmpersand = v=> prpPrs.getValAmpersand(v);\n\t\tthis.#parse = s=> prpPrs.parse(s);\n\n\t\t// システム\n\t\tawait Promise.allSettled(this.sys.init(this.#hTag, app, val));\t// 変数準備完了\n\n\t\t// BGM・効果音\n\t\tconst sndMng = new SoundMng(cfg, this.#hTag, val, this, this.sys);\n\t\tthis.#aDest.unshift(()=> sndMng.destroy());\n\n\t\t// 条件分岐、ラベル・ジャンプ、マクロ、しおり\n\t\tthis.#scrItr = new ScriptIterator(cfg, this.#hTag, this, val, prpPrs, sndMng, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#scrItr.destroy());\n\n\t\t// デバッグ・その他\n\t\tconst dbgMng = new DebugMng(this.sys, this.#hTag, this.#scrItr);\n\t\tthis.#aDest.unshift(()=> dbgMng.destroy());\n\t\tthis.errScript = (mes: string, isThrow = true)=> {\n\t\t\tthis.stop();\n\t\t\tDebugMng.myTrace(mes);\n\t\t\tif (CmnLib.debugLog) console.log('🍜 SKYNovel err!');\n\t\t\tif (isThrow) throw mes;\n\t\t}\n\n\t\t// レイヤ共通、文字レイヤ、画像レイヤ\n\t\tthis.#layMng = new LayerMng(cfg, this.#hTag, app, val, this, this.#scrItr, this.sys, sndMng, prpPrs);\n\t\tthis.#aDest.unshift(()=> this.#layMng.destroy());\n\n\t\t// イベント\n\t\tthis.#evtMng = new EventMng(cfg, this.#hTag, app, this, this.#layMng, val, sndMng, this.#scrItr, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#evtMng.destroy());\n\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tthis.stop();\n\t\t\tthis.#isLoop = false;\n\n\t\t\tconst fncDummy = ()=> true;\n\t\t\tfor (const key in this.#hTag) this.#hTag[<keyof T_HTag>key] = fncDummy;\n\t\t});\n\t}\n\n\n\tdestroy() {\n\t\tthis.resume = this.destroy = ()=> { /* empty */ };\t// destroy()連打対策\n\n\t\tthis.cvs.parentElement?.removeChild(this.cvs);\n\t\t\t// (ギャラリーで)document.body はエラーになる\n\t\tfor (const f of this.#aDest) f();\n\t\tthis.#aDest = [];\n\t}\n\n\n\terrScript = (_mes: string, _isThrow = true)=> { /* empty */ }\n\n\n\tresumeByJumpOrCall(hArg: TArg) {\n\t\tif (hArg.url) {\n\t\t\tthis.#hTag.navigate_to(hArg);\n\t\t\tthis.#scrItr.jumpJustBefore();\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventArg', String(hArg.arg ?? ''));\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventLabel', hArg.label ?? '');\n// console.log(`📜 %cresumeByJumpOrCall:%o`, 'color:#3B0;', hArg);\n\t\tif (argChk_Boolean(hArg, 'call', false)) {\n\t\t\tthis.#scrItr.subIdxToken();\t// 「コール元の次」に進めず、「コール元」に戻す\n\t\t\tif (this.#hTag.call(hArg)) return;\n\t\t}\n\t\telse {\n\t\t\tthis.#hTag.clear_event({});\n\t\t\tif (this.#hTag.jump(hArg)) return;\n\t\t}\n\t\tthis.resume();\n\t}\n\t\t#setVal_Nochk = (_scope: Scope, _nm: string, _val: T_VAL_BSNU, _autocast = false)=> { /* empty */ }\n\n\tresume() {\n// console.log(`📜🟢 resume!`);\n\t\t// スクリプトが動くとき、ブレイクマークなど消去\n\t\tthis.#layMng.clearBreak();\n\t\tthis.#scrItr.noticeBreak(false);\n\t\tthis.#evtMng.hideHint();\n\n\t\tqueueMicrotask(()=> {void this.#main()});\n\t}\n\treadonly stop = ()=> {\n// console.log(`📜🔴 stop!`);\n\t\tthis.#scrItr.noticeBreak(true);\n\t};\n\n\tsetLoop(isLoop: boolean, mes = '') {\n\t\t///console.log('setLoop:'+ (isLoop ?'resume!' :'stop!') +' mes:'+ mes);\n\t\t// eslint-disable-next-line no-cond-assign\n\t\tif (this.#isLoop = isLoop) this.resume(); else this.stop();\n\t\tthis.sys.setTitleInfo(mes ?` -- ${mes}中` :'');\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#isLoop = true;\n\n\t//MARK: メイン処理(シナリオ解析)\n\tasync #main() {\n\t\tlet errHd = '';\n\t\ttry {\n\t\t\twhile (this.#isLoop) {\n\t\t\t\tlet token = this.#scrItr.nextToken();\n\t\t\t\tif (! token) return;\t// 初期化前に終了した場合向け\n\n\t\t\t\tconst uc = token.charCodeAt(0);\t// TokenTopUnicode\n\t\t\t\t// \\t タブ\n\t\t\t\tif (uc === 9) continue;\n\t\t\t\t// \\n 改行\n\t\t\t\tif (uc === 10) {this.#scrItr.addLineNum(token.length); continue}\n\t\t\t\t// [ タグ開始\n\t\t\t\tif (uc === 91) {\n\t\t\t\t\terrHd = 'タグ開始';\n\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\n\t\t\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\t\t\terrHd = `[${tag_name}]例外`;\n\n\t\t\t\t\tconst cl = (token.match(/\\n/g) ?? []).length;\n\t\t\t\t\tif (cl > 0) this.#scrItr.addLineNum(cl);\n\t\t\t\t\tif (await this.#scrItr.タグ解析(\n\t\t\t\t\t\t<keyof T_HTag>tag_name, args\n\t\t\t\t\t)) {this.stop(); return}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// & 変数操作・変数表示\n\t\t\t\tif (uc === 38) {\n\t\t\t\t\tif (! token.endsWith('&')) {\n\t\t\t\t\t\terrHd = '変数計算';\n\t\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\t\t\t\t\t\tconst o = splitAmpersand(token.slice(1));\n\t\t\t\t\t\to.name = this.#getValAmpersand(o.name);\n\t\t\t\t\t\to.text = String(this.#parse(o.text));\n\t\t\t\t\t\tthis.#hTag.let(o);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\terrHd = '変数操作';\n\t\t\t\t\tif (token.charAt(1) === '&') throw new Error('「&表示&」書式では「&」指定が不要です');\n\t\t\t\t\ttoken = String(this.#parse( token.slice(1, -1) ));\n\t\t\t\t\t\t// -> 文字表示 へ\n\t\t\t\t}\n\t\t\t\t// ; コメント\n\t\t\t\telse if (uc === 59) continue;\n\t\t\t\t// * ラベル\n\t\t\t\telse if (uc === 42 && token.length > 1) continue;\n\n\t\t\t\t// 文字表示\n\t\t\t\terrHd = '文字表示';\n\t\t\t\tthis.#layMng.setNormalChWait();\n\t\t\t\tconst tl = this.#layMng.currentTxtlayForeNeedErr;\n\t\t\t\ttl.tagCh(token);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthis.errScript(`${errHd} ${\n\t\t\t\te instanceof Error ?`mes=${e.message}(${e.name})` :String(e)\n\t\t\t}`, false);\n\t\t}\n\t}\n\t\t#getValAmpersand\t= (_v: string)=> '';\n\t\t#parse\t\t\t\t: (_s: string)=> T_VAL_DATA;\n\n}\n"],"names":["PROTOCOL_USERDATA","PROTOCOL_DL","Config","ConfigBase","sys","c","fn","res","dec","oCfg","CmnLib","extptn","SEARCH_PATH_ARG_EXT","idx2LnCol","sSn","idx","lenNm","ln","ch","len","AnalyzeTagArg","#REG_TAGARG","args","#hPrm","#isKomeParam","groups","key","val","val2","def","def2","literal","token","hRng","index","z","lenVnm","k_ch","k_ln","v_ln","v_ch","REG_TAG","tagToken2Name_Args","g","nm","tagToken2Name","splitAmpersand","equa","cnt_equa","e0","e1","e2","Grammar","cfg","#REG_TOKEN","ce","#hC2M","#REG_CANTC2M","#REG_TOKEN_NOTXT","hArg","hTag","scr","start_idx","name","text","op","cl","#replaceScr_C2M","char","#REGC2M","#regStrC2M","#regStrC2M4not","a","b","txt","tkn","r","#replaceScript_Wildcard","#REG_WILDCARD","#REG_WILDCARD2","i","tag_name","#alzTagArg","p_fn","ext","v","nt","getFn","lnum","del","j","macro","SN_ID","Main","utils.skipHello","m","#init","e","#hTag","#scrItr","#layMng","#evtMng","#aDest","hApp","parseColor","cvs","clone_cvs","p","app","Application","utils.clearTextureCache","cc","Variable","PropParser","SoundMng","ScriptIterator","LayerMng","EventMng","Button","prpPrs","#setVal_Nochk","scope","autocast","#getValAmpersand","#parse","s","sndMng","dbgMng","DebugMng","mes","isThrow","#isLoop","fncDummy","f","_mes","_isThrow","argChk_Boolean","_scope","_nm","_val","_autocast","#main","isLoop","errHd","uc","o","_v"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Main.js","sources":["../src/sn/Config.ts","../src/sn/AnalyzeTagArg.ts","../src/sn/Grammar.ts","../src/sn/Main.ts"],"sourcesContent":["/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib} from './CmnLib';\nimport type {SysBase} from './SysBase';\nimport {ConfigBase, SEARCH_PATH_ARG_EXT, type T_CFG_RAW} from './ConfigBase';\n\nexport const PROTOCOL_USERDATA\t= 'userdata:/';\nexport const PROTOCOL_DL\t\t= 'downloads:/';\n\n\nexport class Config extends ConfigBase {\n\tstatic\tasync\tgenerate(sys: SysBase) {\n\t\tconst c = new Config(sys);\n\t\tconst fn = sys.arg.cur +'prj.json';\n\t\tconst res = await sys.fetch(fn);\n\t\tif (! res.ok) throw Error(res.statusText);\n\n\t\tconst dec = await sys.dec(fn, await res.text());\n\t\tawait c.load(<T_CFG_RAW>JSON.parse(dec));\n\t\treturn c;\n\t}\n\n\tprotected\tconstructor(override readonly sys: SysBase) {super(sys)}\n\n\tprotected\toverride\tasync load(oCfg: T_CFG_RAW) {\n\t\toCfg.window ??= {width: 300, height: 300};\n\t\tCmnLib.stageW = oCfg.window.width;\n\t\tCmnLib.stageH = oCfg.window.height;\n\t\tCmnLib.debugLog = oCfg.debug.debugLog;\n\t\tawait CmnLib.init();\n\n\t\treturn super.load(oCfg);\n\t}\n\n\toverride\tsearchPath(fn: string, extptn: SEARCH_PATH_ARG_EXT = SEARCH_PATH_ARG_EXT.DEFAULT): string {\n\t\tif (fn.startsWith(PROTOCOL_DL)) {\n\t\t\treturn this.sys.path_downloads + fn.slice(11);\n\t\t}\n\t\tif (fn.startsWith(PROTOCOL_USERDATA)) {\n\t\t\treturn this.sys.path_userdata + 'storage/'+ fn.slice(10);\n\t\t}\n\n\t\treturn super.searchPath(fn, extptn);\n\t}\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nexport type PRM = {\n\tval\t\t: string;\n\tdef?\t: string;\n}\nexport type HPRM = {\n\t[key: string]: PRM,\n}\n\nexport type PRM_RANGE = {\n\tk_ln\t: number;\n\tk_ch\t: number;\n\tv_ln\t: number;\n\tv_ch\t: number;\n\tv_len\t: number;\n}\n\nexport function idx2LnCol(sSn: string, idx: number, lenNm = 0, ln = 0, ch = 0): {ln: number; ch: number;} {\n\tconst sBefore = sSn.slice(0, idx);\n\tconst a = sBefore.split('\\n');\n\tconst len = a.length;\n\treturn {\n\t\tln\t: ln +len -1,\n\t\tch\t: len < 2 ?ch +1+lenNm +idx :a.at(-1)?.length ?? 0,\n\t};\n}\n\n\nexport class AnalyzeTagArg {\n\t// 87 match 2725 step(0.5ms) PCRE2 https://regex101.com/r/aeN57J/1\n\t/*\n;[^\\n]*\n|\t(?<key>[^\\s=\"'#|;]+)\n\t(?: \\s | ;[^\\n]*\\n)*\n\t=\n\t(?: \\s | ;[^\\n]*\\n)*\n\t(?:\t(?<val> [^\\s\"'#|;]+)\n\t|\t([\"'#]) (?<val2>.*?) \\3 )\n\t(?: \\|\n\t\t(?: (?<def> [^\\s\"'#;]+)\n\t|\t([\"'#]) (?<def2>.*?) \\6 ) )?\n|\t(?<literal>[^\\s;]+)\n\t*/\n\treadonly\t#REG_TAGARG\t= /;[^\\n]*|(?<key>[^\\s=\"'#|;]+)(?:\\s|;[^\\n]*\\n)*=(?:\\s|;[^\\n]*\\n)*(?:(?<val>[^\\s\"'#|;]+)|([\"'#])(?<val2>.*?)\\3)(?:\\|(?:(?<def>[^\\s\"'#;]+)|([\"'#])(?<def2>.*?)\\6))?|(?<literal>[^\\s;]+)/g;\n\n\t// 【属性 = 値 | 省略値】の分析\n\tparse(args: string): void {\n\t\tthis.#hPrm = {};\n\t\tthis.#isKomeParam = false;\n\t\tfor (const {groups} of args.matchAll(this.#REG_TAGARG)) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2, def, def2, literal} = groups!;\n\t\t\tif (key) this.#hPrm[key] = {\n\t\t\t\tval: val ?? val2 ?? '',\n\t\t\t\tdef: def ?? def2\n\t\t\t};\n\t\t\telse if (literal) {\n\t\t\t\tif (literal === '*') this.#isKomeParam = true;\n\t\t\t\telse this.#hPrm[literal] = {val: '1'};\n\t\t\t}\n\t\t}\n\t}\n\n\t// 属性と値の位置をまとめて返す\n\tparseinDetail(token: string, lenNm: number, ln: number, ch: number): {[key: string]: PRM_RANGE} {\n\t\tconst hRng: {[key: string]: PRM_RANGE} = {};\n\n\t\tconst sSn = token.slice(1+lenNm, -1);\n\t\tfor (const {groups, index, 0: z} of sSn.matchAll(this.#REG_TAGARG)) {\n\t\t\tif (! index) continue;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst {key, val, val2='', literal} = groups!;\n\t\t\tif (literal) {\n\t\t\t\tif (literal.endsWith('=')) {\n\t\t\t\t\tconst lenVnm = literal.length -1;\n\t\t\t\t\tconst {ch: k_ch} = idx2LnCol(sSn, index +lenVnm, lenNm, ln, ch);\n\t\t\t\t\thRng[literal.slice(0, -1)] = {\n\t\t\t\t\t\tk_ln: ln,\n\t\t\t\t\t\tk_ch: k_ch -lenVnm,\n\t\t\t\t\t\tv_ln: ln,\n\t\t\t\t\t\tv_ch: k_ch +1,\n\t\t\t\t\t//\tv_ch: ch +1+lenNm +literal.length +1,\n\t\t\t\t\t\tv_len: 0,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (! key) continue;\n\n\t\t\tconst {ln: k_ln, ch: k_ch} = idx2LnCol(sSn, index, lenNm, ln, ch);\n\t\t\tconst {ln: v_ln, ch: v_ch} = idx2LnCol(sSn, index +z.lastIndexOf(val ?? val2) -(val ?0 :1), lenNm, ln, ch);\n\t\t\thRng[key] = {k_ln, k_ch, v_ln, v_ch, v_len: val ?val.length :val2.length +2};\n\t\t}\n\n\t\treturn hRng;\n\t}\n\n\t#hPrm: HPRM\t= {};\n\tget hPrm() {return this.#hPrm}\n\n\t#isKomeParam\t= false;\n\tget isKomeParam() {return this.#isKomeParam}\n\n}\n","/* eslint-disable @typescript-eslint/no-non-null-assertion */\n/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2019-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {AnalyzeTagArg} from './AnalyzeTagArg';\nimport {getFn} from './CmnLib';\nimport {type T_Config, SEARCH_PATH_ARG_EXT} from './ConfigBase';\n\n\nexport type TArg = {\n\t':タグ名'?\t: string;\n\tcanskip?\t: boolean;\n\n\tlayer?\t: string;\t// レイヤ系\n\tclass?\t: string;\n\tindex?\t: number;\n\tdive?\t: string;\n\tpage?\t: string;\n\talpha?\t: number;\n\tpivot_x?: number;\n\tpivot_y?: number;\n\trotation?\t: number;\n\tscale_x?: number;\n\tscale_y?: number;\n\tvisible?: boolean;\n\tblendmode?\t: string;\n\n\tleft?\t: number;\n\ttop?\t: number;\n\twidth?\t: number;\n\theight?\t: number;\n\tpl?\t\t: number;\n\tpr?\t\t: number;\n\tpt?\t\t: number;\n\tpb?\t\t: number;\n\n\trotate?\t: number;\n\tin_style?\t: string;\n\tout_style?\t: string;\n\tffs?\t: string;\n\tnoffs?\t: string;\n\tkinsoku_sol?\t: string;\n\tkinsoku_eol?\t: string;\n\tkinsoku_dns?\t: string;\n\tkinsoku_bura?\t: string;\n\tbura?\t: boolean;\n\tbreak_fixed?\t\t: boolean;\n\tbreak_fixed_left?\t: number;\n\tbreak_fixed_top?\t: number;\n\n\ttime?\t: number;\n\trule?\t: string;\n\tglsl?\t: string;\n\trender?\t: boolean;\n\n\tpos?\t: string;\n\ttext?\t: string;\n\twait?\t: number;\n\trecord?\t: boolean;\n\tpic?\t: string;\n\tenabled?: boolean;\n\thint?\t\t: string;\n\thint_style?\t: string;\n\thint_opt?\t: string;\n\tclickse?\t: string;\n\tenterse?\t: string;\n\tleavese?\t: string;\n\tclicksebuf?\t: string;\n\tentersebuf?\t: string;\n\tleavesebuf?\t: string;\n\tonenter?\t: string;\n\tonleave?\t: string;\n\n\tt?\t: string;\n\tr?\t: string;\n\texp?\t: string;\n\tchar?\t: string;\n\tsesame?\t: string;\n\tcast?\t: string;\n\tval?\t: string;\n\tflags?\t: string;\n\treg?\t: string;\n\tlen?\t: string;\n\turl?\t: string;\n\tformat?\t: string;\n\tchain?\t: string;\n\tpath?\t: string;\n\n\tfn?\t\t: string;\n\tface?\t: string;\n\tlabel?\t: string;\n\tcall?\t: boolean;\n\tglobal?\t: boolean;\n\tname?\t: string;\n\tclear_local_event?\t: boolean;\n\n\tstyle?\t\t\t: string;\n\tstyle_hover?\t: string;\n\tstyle_clicked?\t: string;\n\tr_style?\t\t: string;\n\tr_style_hover?\t: string;\n\tr_style_clicked?: string;\n\tr_align?\t: string;\n\n\tb_width?\t: string;\n\tb_height?\t: string;\n\tb_color?\t: string;\n\tb_alpha?\t: number;\n\tb_alpha_isfixed?\t: boolean;\n\tb_pic?\t\t: string;\n\tback_clear?\t: string;\n\n\tmax_col?\t: string;\n\tmax_row?\t: string;\n\tbura_col?\t: string;\n\tchk_overrow?\t: string;\n\n\tdx?\t: number;\n\tdy?\t: number;\n\n\tkey?\t: string;\n\ttype?\t: string;\t// 3Dレイヤで使用\n\tcamera_target?\t: string;\n\n\targ?\t: TArg;\n\tfnc?\t: ()=> void;\n\n\tfilter?\t: string;\n\tmatrix?\t: string;\n\tclear_filter?\t: boolean;\n\tenable_filter?\t: boolean;\n\n\tease?\t: string;\n\n\tcentering?\t:boolean;\n\tx?\t\t: number | string;\n\ty?\t\t: number | string;\n\n\tid?\t\t\t: string;\n\tsrc?\t\t: string;\n\tvar_name?\t: string;\n\tset_fnc?\t: string;\n\tbreak_fnc?\t: string;\n\n\tfrom?\t: number;\n\tto?\t\t: number | string;\n\tplace?\t: number;\n\tadd?\t: string;\n\tdel?\t: string;\n\n\tbuf?\t: string;\t// 音系\n\tbuf2?\t: string;\n\tloop?\t: boolean;\n\tvolume?\t: number;\n\tret_ms?\t: number;\n\tend_ms?\t: number;\n\tjoin?\t: boolean;\n\tdo_rec?\t: boolean;\n\tpan?\t: number;\n\tstop?\t: boolean;\n\n\tclear?\t: boolean;\n\n\t// デザインモード\n\t':id_dc'?\t: string;\n\t':id_tag'?\t: string;\n\t':path'?\t: string;\n\t':ln'?\t\t: number;\n\t':col_s'?\t: number;\n\t':col_e'?\t: number;\n\t':idx_tkn'?\t: number;\n\t':token'?\t: string;\n\t':redraw'?\t: boolean;\n\tdesign_unit?: boolean;\t// デザインモードでこのマクロへの引数変更とするか(内部をサーチさせない)\n\n//\tstepin?\t\t: boolean;\t\t// 拡張機能のみ使用:false指定でステップインしない\n//\tnowarn_unused?\t: boolean;\t// 拡張機能のみ使用:未使用警告を出さない\n}\nexport type TTag = (hArg: TArg) => boolean;\nexport type T_HTag = {\n// 変数操作\n\tclearsysvar\t\t\t: TTag;\t// システム変数の全消去\n\tclearvar\t\t\t: TTag;\t// ゲーム変数の全消去\n\tlet_abs\t\t\t\t: TTag;\t// 絶対値\n\tlet_char_at\t\t\t: TTag;\t// 文字列から一字取りだし\n\tlet_index_of\t\t: TTag;\t// 文字列で検索\n\tlet_length\t\t\t: TTag;\t// 文字列の長さ\n\tlet_ml\t\t\t\t: TTag;\t// インラインテキスト代入\n\tlet_replace\t\t\t: TTag;\t// 正規表現で置換\n\tlet_round\t\t\t: TTag;\t// 四捨五入\n\tlet_search\t\t\t: TTag;\t// 正規表現で検索\n\tlet_substr\t\t\t: TTag;\t// 文字列から抜きだし\n\tlet\t\t\t\t\t: TTag;\t// 変数代入・演算\n\n// レイヤ共通\n\tadd_lay\t\t\t\t: TTag;\t// レイヤを追加する\n\tclear_lay\t\t\t: TTag;\t// レイヤ設定の消去\n\tfinish_trans\t\t: TTag;\t// トランス強制終了\n\tlay\t\t\t\t\t: TTag;\t// レイヤ設定\n\ttrans\t\t\t\t: TTag;\t// ページ裏表を交換\n\twt\t\t\t\t\t: TTag;\t// トランス終了待ち\n\tadd_filter\t\t\t: TTag;\t// フィルター追加\n\tclear_filter\t\t: TTag;\t// フィルター全削除\n\tenable_filter\t\t: TTag;\t// フィルター個別切替\n\n// トゥイーンアニメ\n\tpause_tsy\t\t\t: TTag;\t// 一時停止\n\tresume_tsy\t\t\t: TTag;\t// 一時停止再開\n\tstop_tsy\t\t\t: TTag;\t// トゥイーン中断\n\ttsy\t\t\t\t\t: TTag;\t// トゥイーン開始\n\twait_tsy\t\t\t: TTag;\t// トゥイーン終了待ち\n\n// 文字・文字レイヤ\n\tautowc\t\t\t\t: TTag;\t// 文字ごとのウェイト\n\tch\t\t\t\t\t: TTag;\t// 文字を追加する\n\tch_in_style\t\t\t: TTag;\t// 文字出現演出定義\n\tch_out_style\t\t: TTag;\t// 文字消去演出定義\n\tclear_text\t\t\t: TTag;\t// 文字消去\n\tcurrent\t\t\t\t: TTag;\t// デフォルト文字レイヤ設定\n\tendlet_ml\t\t\t: TTag;\t// インラインテキスト代入の終端\n\tendlink\t\t\t\t: TTag;\t// ハイパーリンクの終了\n\ter\t\t\t\t\t: TTag;\t// ページ両面の文字消去\n\tgraph\t\t\t\t: TTag;\t// インライン画像表示\n\tlink\t\t\t\t: TTag;\t// ハイパーリンク\n\tr\t\t\t\t\t: TTag;\t// 改行\n\trec_ch\t\t\t\t: TTag;\t// 履歴書き込み\n\trec_r\t\t\t\t: TTag;\t// 履歴改行\n\treset_rec\t\t\t: TTag;\t// 履歴リセット\n\truby2\t\t\t\t: TTag;\t// 文字列と複数ルビの追加\n\tset_focus\t\t\t: TTag;\t// フォーカス移動\n\tspan\t\t\t\t: TTag;\t// インラインスタイル設定\n\ttcy\t\t\t\t\t: TTag;\t// 縦中横を表示する\n\n// 画像・画像レイヤ\n\tadd_face\t\t\t: TTag;\t// 差分名称の定義\n\twv\t\t\t\t\t: TTag;\t// 動画再生終了待ち\n\n// HTMLフレーム\n\tadd_frame\t\t\t: TTag;\t// フレーム追加\n\tframe\t\t\t\t: TTag;\t// フレームに設定\n\tlet_frame\t\t\t: TTag;\t// フレーム変数を取得\n\tset_frame\t\t\t: TTag;\t// フレーム変数に設定\n\ttsy_frame\t\t\t: TTag;\t// フレームをトゥイーン開始\n\n// イベント\n\tclear_event\t\t\t: TTag;\t// イベントを全消去\n\tenable_event\t\t: TTag;\t// イベント有無の切替\n\tevent\t\t\t\t: TTag;\t// イベントを予約\n\tl\t\t\t\t\t: TTag;\t// 行末クリック待ち\n\tp\t\t\t\t\t: TTag;\t// 改ページクリック待ち\n\ts\t\t\t\t\t: TTag;\t// 停止する\n\tset_cancel_skip\t\t: TTag;\t// スキップ中断予約\n\twait\t\t\t\t: TTag;\t// ウェイトを入れる\n\twaitclick\t\t\t: TTag;\t// クリックを待つ\n\n// BGM・効果音\n\tfadebgm\t\t\t\t: TTag;\t// BGMのフェード\n\tfadeoutbgm\t\t\t: TTag;\t// BGMのフェードアウト\n\tfadeoutse\t\t\t: TTag;\t// 効果音のフェードアウト\n\tfadese\t\t\t\t: TTag;\t// 効果音のフェード\n\tplaybgm\t\t\t\t: TTag;\t// BGM の演奏\n\tplayse\t\t\t\t: TTag;\t// 効果音の再生\n\tstop_allse\t\t\t: TTag;\t// 全効果音再生の停止\n\tstopbgm\t\t\t\t: TTag;\t// BGM 演奏の停止\n\tstopfadese\t\t\t: TTag;\t// 音声フェードの停止\n\tstopse\t\t\t\t: TTag;\t// 効果音再生の停止\n\tvolume\t\t\t\t: TTag;\t// BGMや効果音の音量を指定\n\twb\t\t\t\t\t: TTag;\t// BGM フェードの終了待ち\n\twf\t\t\t\t\t: TTag;\t// 効果音フェードの終了待ち\n\twl\t\t\t\t\t: TTag;\t// BGM 再生の終了待ち\n\tws\t\t\t\t\t: TTag;\t// 効果音再生の終了待ち\n\txchgbuf\t\t\t\t: TTag;\t\t// サウンドバッファの交換\n\n// 条件分岐\n\telse\t\t\t\t: TTag;\t// その他ifブロック開始\n\telsif\t\t\t\t: TTag;\t// 別条件のifブロック開始\n\tendif\t\t\t\t: TTag;\t// ifブロックの終端\n\tif\t\t\t\t\t: TTag;\t// ifブロックの開始\n\n// ラベル・ジャンプ\n\tbutton\t\t\t\t: TTag;\t// ボタンを表示\n\tcall\t\t\t\t: TTag;\t// サブルーチンコール\n\tjump\t\t\t\t: TTag;\t// シナリオジャンプ\n\tpage\t\t\t\t: TTag;\t// ページ移動\n\tpop_stack\t\t\t: TTag;\t// コールスタック破棄\n\treturn\t\t\t\t: TTag;\t// サブルーチンから戻る\n\n// マクロ\n\tbracket2macro\t\t: TTag;\t// 括弧マクロの定義\n\tchar2macro\t\t\t: TTag;\t// 一文字マクロの定義\n\tendmacro\t\t\t: TTag;\t// マクロ定義の終了\n\tmacro\t\t\t\t: TTag;\t// マクロ定義の開始\n\n// しおり\n\tcopybookmark\t\t: TTag;\t// しおりの複写\n\terasebookmark\t\t: TTag;\t// しおりの消去\n\tload\t\t\t\t: TTag;\t// しおりの読込\n\trecord_place\t\t: TTag;\t// セーブポイント指定\n\treload_script\t\t: TTag;\t// スクリプト再読込\n\tsave\t\t\t\t: TTag;\t// しおりの保存\n\n// 画面揺らし\n\tquake\t\t\t\t: TTag;\t// 画面を揺らす\n\tstop_quake\t\t\t: TTag;\t// 画面揺らし中断\n\twq\t\t\t\t\t: TTag;\t// 画面揺らし終了待ち\n\n// システム\n\tclose\t\t\t\t: TTag;\t// アプリの終了\n\texport\t\t\t\t: TTag;\t// プレイデータをエクスポート\n\timport\t\t\t\t: TTag;\t// プレイデータをインポート\n\tloadplugin\t\t\t: TTag;\t// プラグインの読み込み\n\tnavigate_to\t\t\t: TTag;\t// URLを開く\n\tsnapshot\t\t\t: TTag;\t// スナップショット\n\ttitle\t\t\t\t: TTag;\t// タイトル指定\n\ttoggle_full_screen\t: TTag;\t// 全画面状態切替\n\tupdate_check\t\t: TTag;\t// 更新チェック機能\n\twindow\t\t\t\t: TTag;\t// アプリウインドウ設定\n\n// デバッグ・その他\n\tdump_lay\t\t\t: TTag;\t// レイヤのダンプ\n\tdump_script\t\t\t: TTag;\t// 外部へスクリプトを表示\n\tdump_stack\t\t\t: TTag;\t// スタックのダンプ\n\tdump_val\t\t\t: TTag;\t// 変数のダンプ\n\tlog\t\t\t\t\t: TTag;\t// ログ出力\n\ttrace\t\t\t\t: TTag;\t// デバッグ表示へ出力\n}\n\n\nexport type Script = {\n\taToken\t: string[];\t\t// トークン群\n\tlen\t\t: number;\t\t// トークン数\n\taLNum\t: number[];\t\t// トークンの行番号\n};\n\n\nexport const\tREG_TAG\t= /(?<name>[^\\s;\\]]+)/;\t// test用にexport\nexport function\ttagToken2Name_Args(token: string): [name: string, args: string] {\n\tconst e = REG_TAG.exec(token.slice(1, -1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\tconst nm = g.name!;\n\treturn [nm, token.slice(1 +nm.length, -1)];\n}\nexport function\ttagToken2Name(token: string): string {\n\tconst e = REG_TAG.exec(token.slice(1));\n\tconst g = e?.groups;\n\tif (! g) throw `タグ記述【${token}】異常です(タグ解析)`;\n\n\treturn g.name!;\n}\n\nexport function\tsplitAmpersand(token: string): {\n\t\tname: string;\n\t\ttext: string;\n\t\tcast: string | undefined;\n} {\t// テスト用にpublic\n\tconst equa = token.replaceAll('==', '=').replaceAll('!=', '≠').split('=');\n\t\t// != を弾けないので中途半端ではある\n\tconst cnt_equa = equa.length;\n\tif (cnt_equa < 2 || cnt_equa > 3) throw '「&計算」書式では「=」指定が一つか二つ必要です';\n\n\tconst [e0, e1, e2] = equa;\n\tif (e1!.startsWith('&')) throw '「&計算」書式では「&」指定が不要です';\n\treturn {\n\t\tname: e0!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\ttext: e1!.replaceAll('=', '==').replaceAll('≠', '!='),\n\t\tcast: cnt_equa === 3 ?e2!.trim() :undefined\n\t};\n}\n\n\nexport class Grammar {\n\tconstructor(private readonly cfg: T_Config) {this.setEscape('')}\n\n\t#REG_TOKEN\t: RegExp;\n\tsetEscape(ce: string) {\n\t\tif (this.#hC2M && ce in this.#hC2M) throw '[エスケープ文字] char【'+ ce +'】が登録済みの括弧マクロまたは一文字マクロです';\n\n\t\t// 1083 matches (14577 step, 9.9ms) https://regex101.com/r/dP0tAY/1\n\t\t/*\n\\\\\\S |\n \\n+\n| \\t+\n|\t\\[let_ml \\s+ [^\\]]+ ]\n\t.+? (?=\\[endlet_ml [\\]\\s])\n| \\[ (?: [^\"'#;\\]]+\n\t| ([\"'#]).*?\\1\n\t| ;[^\\n]* ) *? ]\n| ;[^\\n]*\n| &[^&\\n]+&\n| &&?(?: [^\"'#;\\n&]+ | ([\"'#]).*?\\2 )+\n| ^\\*[^\\s\\[&;\\\\]+\n| [^\\n\\t\\[;\\\\]+\n\t\t*/\n/*\n\t[^\"'#;\\]]++\n\t| ([\"'\\#]).*?\\1\n\t\t\t++ にしたいところだが、jsは未サポートらしい(2022/10/16)\n*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\t\t// https://qiita.com/ue5963/items/bd8e32ac9e6b12aa7fab\n\t\tthis.#REG_TOKEN = new RegExp(\n\t\t(ce\t?`\\\\${ce}\\\\S|` :'')+\t// エスケープシーケンス\n\t\t'\\\\n+'+\t\t\t\t// 改行\n\t\t'|\\\\t+'+\t\t\t// タブ文字\n\t\t'|\\\\[let_ml\\\\s+[^\\\\]]+\\\\]'+\n\t\t\t'.+?'+\t\t\t// [let_ml]〜[endlet_ml]間のテキスト\n\t\t'(?=\\\\[endlet_ml[\\\\]\\\\s])'+\n\t\t'|\\\\[(?:'+\n\t\t\t'[^\"\\'#;\\\\]]+|'+\t// タグ\n\t\t\t'([\"\\'#]).*?\\\\1' +\n\t\t\t\t// . は (?:\\\\${ ce??'\\\\' }.|[^\\\\1]) でなくてよさげ\n\t\t'|;[^\\\\n]*)*?]'+\n\t\t'|;[^\\\\n]*'+\t\t// コメント\n\t\t'|&[^&\\\\n]+&'+\t\t// &表示&\n\t\t'|&&?(?:[^\"\\'#;\\\\n&]+|([\"\\'#]).*?\\\\2)+'+\t// &代入\n\t\t'|^\\\\*[^\\\\s\\\\[&;\\\\\\\\]+'+\t// ラベル\n\t\t`|[^\\\\n\\\\t\\\\[;${ce ?`\\\\${ce}` :''}]+`,\t\t// 本文\n\t\t'gs');\n\t\tthis.#REG_CANTC2M = new RegExp(`[\\\\w\\\\s;[\\\\]*=&|《》${ce ?`\\\\${ce}` :''}]`);\n\t\tthis.#REG_TOKEN_NOTXT = new RegExp(`[\\\\n\\\\t;\\\\[*&${ce ?`\\\\${ce}` :''}]`);\n\t}\n\n\n\t// 括弧マクロの定義\n\tbracket2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {name, text} = hArg;\n\t\tif (! name) throw '[bracket2macro] nameは必須です';\n\t\tif (! text) throw '[bracket2macro] textは必須です';\n\t\tconst op = text.at(0);\n\t\tif (! op) throw '[bracket2macro] textは必須です';\n\t\tif (text.length !== 2) throw '[bracket2macro] textは括弧の前後を示す二文字を指定してください';\n\t\tif (! (name in hTag)) throw `[bracket2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M ??= {};\n\t\tconst cl = text.charAt(1);\n\t\tif (op in this.#hC2M) throw '[bracket2macro] text【'+ op +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (cl in this.#hC2M) throw '[bracket2macro] text【'+ cl +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(op)) throw '[bracket2macro] text【'+ op +'】は括弧マクロに使用できない文字です';\n\t\tif (this.#REG_CANTC2M.test(cl)) throw '[bracket2macro] text【'+ cl +'】は括弧マクロに使用できない文字です';\n\n\t\tthis.#hC2M[cl] = '0';\t// チェック用ダミー\n\t\tthis.#hC2M[op] = `[${name} text=`;\n\n\t\tthis.addC2M(`\\\\${op}[^\\\\${cl}]*\\\\${cl}`, `\\\\${op}\\\\${cl}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t// 一文字マクロの定義\n\tchar2macro(hArg: TArg, hTag: T_HTag, scr: Script, start_idx: number) {\n\t\tconst {char, name} = hArg;\n\t\tif (! char) throw '[char2macro] charは必須です';\n\t\tthis.#hC2M ??= {};\n\t\tif (char in this.#hC2M) throw '[char2macro] char【'+ char +'】が登録済みの括弧マクロまたは一文字マクロです';\n\t\tif (this.#REG_CANTC2M.test(char)) throw '[char2macro] char【'+ char +'】は一文字マクロに使用できない文字です';\n\n\t\tif (! name) throw '[char2macro] nameは必須です';\n\t\tif (! (name in hTag)) throw `[char2macro] 未定義のタグ又はマクロ[${name}]です`;\n\n\t\tthis.#hC2M[char] = `[${name}]`;\n\n\t\tthis.addC2M(`\\\\${char}`, `\\\\${char}`);\n\n\t\tthis.#replaceScr_C2M(scr, start_idx);\n\t}\n\t#REG_CANTC2M\t: RegExp;\n\t#REGC2M\t\t\t= new RegExp('');\n\t#regStrC2M\t\t= '';\n\t#regStrC2M4not\t= '';\n\taddC2M(a: string, b: string) {\n\t\tthis.#regStrC2M += `${a}|`;\n\t\tthis.#regStrC2M4not += b;\n\t\tthis.#REGC2M = new RegExp(\n\t\t\t`(${this.#regStrC2M}[^${this.#regStrC2M4not}]+)`, 'g');\n\t}\n\n\n\tresolveScript(txt: string): Script {\n\t\tconst a: string[] = txt\n\t\t.replaceAll(/\\r\\n?/g, '\\n')\n\t\t.match(this.#REG_TOKEN)\n\t\t?.flatMap(tkn=> {\n\t\t\tif (! this.testTagLetml(tkn)) return tkn;\n\n\t\t\tconst r = /^([^\\]]+?])(.*)$/s.exec(tkn);\n\t\t\tif (! r) return tkn;\n\t\t\tconst [, a, b] = r;\n\t\t\treturn [a!, b!];\n\t\t}) ?? [];\n\n\t\tconst scr = {aToken: a, len: a.length, aLNum: []};\n\t\tthis.#replaceScr_C2M(scr);\n\n\t\tthis.#replaceScript_Wildcard(scr);\n\n\t\treturn scr;\n\t}\n\n\n\treadonly #REG_WILDCARD\t= /^\\[(call|loadplugin)\\s/;\n\treadonly #REG_WILDCARD2\t= /\\bfn\\s*=\\s*[^\\s\\]]+/;\n\t#replaceScript_Wildcard(scr: Script) {\n\t\tfor (let i=scr.len -1; i>=0; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (! this.#REG_WILDCARD.test(token)) continue;\n\n\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\tthis.#alzTagArg.parse(args);\n\n\t\t\tconst p_fn = this.#alzTagArg.hPrm.fn;\n\t\t\tif (! p_fn) continue;\n\t\t\tconst {val: fn} = p_fn;\n\t\t\tif (! fn.endsWith('*')) continue;\n\n\t\t\tscr.aToken.splice(i, 1, '\\t', '; '+ token);\n\t\t\tscr.aLNum.splice(i, 1, NaN, NaN);\n\n\t\t\tconst ext = tag_name === 'loadplugin'\n\t\t\t\t? SEARCH_PATH_ARG_EXT.CSS\n\t\t\t\t: SEARCH_PATH_ARG_EXT.SN;\n\t\t\tconst a = this.cfg.matchPath('^'+ fn.slice(0, -1) +'.*', ext);\n\t\t\tfor (const v of a) {\n\t\t\t\tconst nt = token.replace(\n\t\t\t\t\tthis.#REG_WILDCARD2,\n\t\t\t\t\t'fn='+ decodeURIComponent(getFn(v[ext]!))\n\t\t\t\t);\n\t\t\t\t//console.log('\\t='+ nt +'=');\n\t\t\t\tscr.aToken.splice(i, 0, nt);\n\t\t\t\tscr.aLNum.splice(i, 0, NaN);\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\t\treadonly\t#alzTagArg\t= new AnalyzeTagArg;\n\n\n\ttestTagLetml(tkn: string): boolean {return /^\\[let_ml\\s/.test(tkn)}\n\ttestTagEndLetml(tkn: string): boolean {return /^\\[endlet_ml\\s*]/.test(tkn)}\n\n\n\t#hC2M\t: {[char: string]: string} | undefined = undefined;\n\t#REG_TOKEN_NOTXT\t: RegExp;\n\t#replaceScr_C2M(scr: Script, start_idx = 0): void {\n\t\tif (! this.#hC2M) return;\n\n\t\tfor (let i=scr.len- 1; i >= start_idx; --i) {\n\t\t\tconst token = scr.aToken[i]!;\n\t\t\tif (this.testNoTxt(token.at(0) ?? '\\n')) continue;\n\t\t\t\t// 省略時は #REG_TOKEN_NOTXT に引っかかる \\n に\n\n\t\t\tconst lnum = scr.aLNum[i]!;\n\t\t\tconst a = token.match(this.#REGC2M);\n\t\t\tif (! a) continue;\n\t\t\tlet del = 1;\n\t\t\tfor (let j=a.length -1; j>=0; --j) {\n\t\t\t\tlet ch = a[j]!;\n\t\t\t\tconst macro = this.#hC2M[ch.at(0) ?? ' '];\n\t\t\t\t\t// 省略時は #REG_CANTC2M に引っかかる ' ' に\n\t\t\t\tif (macro) {\n\t\t\t\t\tch = macro +(macro.endsWith(']')\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `'${ch.slice(1, -1)}']`);\n\t\t\t\t\t// 文字列は半角空白を意識して''で囲むが、いずれ変えたい場合がある?\n\t\t\t\t}\n\t\t\t\tscr.aToken.splice(i, del, ch);\n\n\t\t\t\tscr.aLNum.splice(i, del, lnum);\n\t\t\t\tdel = 0;\n\t\t\t}\n\t\t}\n\t\tscr.len = scr.aToken.length;\n\t}\n\ttestNoTxt(ch: string): boolean {return this.#REG_TOKEN_NOTXT.test(ch)}\t//4tst\n\n}\n","/* ***** BEGIN LICENSE BLOCK *****\n\tCopyright (c) 2018-2025 Famibee (famibee.blog38.fc2.com)\n\n\tThis software is released under the MIT License.\n\thttp://opensource.org/licenses/mit-license.php\n** ***** END LICENSE BLOCK ***** */\n\nimport {CmnLib, argChk_Boolean, parseColor} from './CmnLib';\nimport type {T_HTag, TArg} from './Grammar';\nimport type {T_Main, Scope, T_VAL_BSNU, T_VAL_DATA} from './CmnInterface';\nimport type {SysBase} from './SysBase';\nimport {DebugMng} from './DebugMng';\nimport {Config} from './Config';\nimport {splitAmpersand, tagToken2Name_Args} from './Grammar';\nimport type {ScriptIterator} from './ScriptIterator';\nimport type {LayerMng} from './LayerMng';\nimport type {EventMng} from './EventMng';\n\nimport {type IApplicationOptions, Application, utils} from 'pixi.js';\n\n\nconst\tSN_ID\t= 'skynovel';\n\nexport class Main implements T_Main {\n\tstatic\tasync generate(sys: SysBase): Promise<Main> {\n\t\tutils.skipHello();\n\n\t\tconst m = new Main(sys);\n\t\tawait m.#init()\n\t\t.catch((e: unknown)=> console.error('Main.generate err e:%o', e));\n\n\t\treturn m;\n\t}\n\n\n\tcvs\t\t\t: HTMLCanvasElement;\n\n\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t#hTag\t\t: T_HTag\t\t= Object.create(null);\t// タグ処理辞書\n\n\t#scrItr\t\t: ScriptIterator;\n\t#layMng\t\t: LayerMng;\n\t#evtMng\t\t: EventMng;\n\n\t#aDest\t\t: (()=> void)[]\t\t= [];\n\n\n\tprivate constructor(private readonly sys: SysBase) {}\n\n\tasync #init() {\n\t\tconst cfg = await Config.generate(this.sys);\n\t\tthis.sys.setMain(this, cfg);\n\n\t\tconst hApp: IApplicationOptions = {\n\t\t\twidth\t\t\t: cfg.oCfg.window.width,\n\t\t\theight\t\t\t: cfg.oCfg.window.height,\n\t\t\tbackgroundColor\t: parseColor(String(cfg.oCfg.init.bg_color)),\n\t\t\t\t// このString()は後方互換性のため必須\n\t\t\tresolution\t\t: globalThis.devicePixelRatio,\n\t\t};\n\n\t\tconst cvs = <HTMLCanvasElement | null>document.getElementById(SN_ID);\n\t\tif (cvs) {\n\t\t\tconst clone_cvs = <HTMLCanvasElement>cvs.cloneNode(true);\n\t\t\tclone_cvs.id = SN_ID;\n\t\t\thApp.view = cvs;\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst p = cvs.parentNode!;\n\t\t\tthis.#aDest.unshift(()=> p.appendChild(clone_cvs));\n\t\t}\n\t\telse {\t// 自動的に作ってくれるが、どうも appendChild に遅延があるので\n\t\t\tconst c = document.createElement('canvas');\n\t\t\tc.id = SN_ID;\n\t\t\thApp.view = c;\n\t\t\tdocument.body.appendChild(c);\n\t\t\tthis.#aDest.unshift(()=> document.body.removeChild(c));\n\t\t}\n\n\t\tconst app = new Application(hApp);\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tutils.clearTextureCache();\n\t\t\tthis.sys.destroy();\n\t\t\tapp.destroy(false);\t// remove canvas from DOM が非同期なのでウチがやる\n\t\t});\n\n\t\tthis.cvs = app.view;\n\t\tthis.cvs.id = SN_ID +'_act';\n\t\tif (! cvs) document.body.appendChild(this.cvs);\n\n\n\t\tconst cc = document.createElement('canvas').getContext('2d');\n\t\tif (! cc) throw '#init cc err';\n\t\tCmnLib.cc4ColorName = cc;\n\n\t\tconst [{Variable}, {PropParser}, {SoundMng}, {ScriptIterator}, {LayerMng}, {EventMng}, {Button}] = await Promise.all([\n\t\t\timport('./Variable'),\n\t\t\timport('./PropParser'),\n\t\t\timport('./SoundMng'),\n\t\t\timport('./ScriptIterator'),\n\t\t\timport('./LayerMng'),\n\t\t\timport('./EventMng'),\n\t\t\timport('./Button'),\n\t\t]);\n\n\t\tButton.init(cfg);\n\n\t\t// 変数\n\t\tconst val = new Variable(this.sys, cfg, this.#hTag);\n\t\tconst prpPrs = new PropParser(val, cfg.oCfg.init.escape);\n\t\tthis.#setVal_Nochk = (scope, nm, v, autocast)=> val.setVal_Nochk(scope, nm, v, autocast);\n\t\tthis.#getValAmpersand = v=> prpPrs.getValAmpersand(v);\n\t\tthis.#parse = s=> prpPrs.parse(s);\n\n\t\t// システム\n\t\tawait Promise.allSettled(this.sys.init(this.#hTag, app, val));\t// 変数準備完了\n\n\t\t// BGM・効果音\n\t\tconst sndMng = new SoundMng(cfg, this.#hTag, val, this, this.sys);\n\t\tthis.#aDest.unshift(()=> sndMng.destroy());\n\n\t\t// 条件分岐、ラベル・ジャンプ、マクロ、しおり\n\t\tthis.#scrItr = new ScriptIterator(cfg, this.#hTag, this, val, prpPrs, sndMng, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#scrItr.destroy());\n\n\t\t// デバッグ・その他\n\t\tconst dbgMng = new DebugMng(this.sys, this.#hTag, this.#scrItr);\n\t\tthis.#aDest.unshift(()=> dbgMng.destroy());\n\t\tthis.errScript = (mes: string, isThrow = true)=> {\n\t\t\tthis.stop();\n\t\t\tDebugMng.myTrace(mes);\n\t\t\tif (CmnLib.debugLog) console.log('🍜 SKYNovel err!');\n\t\t\tif (isThrow) throw mes;\n\t\t}\n\n\t\t// レイヤ共通、文字レイヤ、画像レイヤ\n\t\tthis.#layMng = new LayerMng(cfg, this.#hTag, app, val, this, this.#scrItr, this.sys, sndMng, prpPrs);\n\t\tthis.#aDest.unshift(()=> this.#layMng.destroy());\n\n\t\t// イベント\n\t\tthis.#evtMng = new EventMng(cfg, this.#hTag, app, this, this.#layMng, val, sndMng, this.#scrItr, this.sys);\n\t\tthis.#aDest.unshift(()=> this.#evtMng.destroy());\n\n\t\tthis.#aDest.unshift(()=> {\n\t\t\tthis.stop();\n\t\t\tthis.#isLoop = false;\n\n\t\t\tconst fncDummy = ()=> true;\n\t\t\tfor (const key in this.#hTag) this.#hTag[<keyof T_HTag>key] = fncDummy;\n\t\t});\n\t}\n\n\n\tdestroy() {\n\t\tthis.resume = this.destroy = ()=> { /* empty */ };\t// destroy()連打対策\n\n\t\tthis.cvs.parentElement?.removeChild(this.cvs);\n\t\t\t// (ギャラリーで)document.body はエラーになる\n\t\tfor (const f of this.#aDest) f();\n\t\tthis.#aDest = [];\n\t}\n\n\n\terrScript = (_mes: string, _isThrow = true)=> { /* empty */ }\n\n\n\tresumeByJumpOrCall(hArg: TArg) {\n\t\tif (hArg.url) {\n\t\t\tthis.#hTag.navigate_to(hArg);\n\t\t\tthis.#scrItr.jumpJustBefore();\n\t\t\treturn;\n\t\t}\n\n\t\t// eslint-disable-next-line @typescript-eslint/no-base-to-string\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventArg', String(hArg.arg ?? ''));\n\t\tthis.#setVal_Nochk('tmp', 'sn.eventLabel', hArg.label ?? '');\n// console.log(`📜 %cresumeByJumpOrCall:%o`, 'color:#3B0;', hArg);\n\t\tif (argChk_Boolean(hArg, 'call', false)) {\n\t\t\tthis.#scrItr.subIdxToken();\t// 「コール元の次」に進めず、「コール元」に戻す\n\t\t\tif (this.#hTag.call(hArg)) return;\n\t\t}\n\t\telse {\n\t\t\tthis.#hTag.clear_event({});\n\t\t\tif (this.#hTag.jump(hArg)) return;\n\t\t}\n\t\tthis.resume();\n\t}\n\t\t#setVal_Nochk = (_scope: Scope, _nm: string, _val: T_VAL_BSNU, _autocast = false)=> { /* empty */ }\n\n\tresume() {\n// console.log(`📜🟢 resume!`);\n\t\t// スクリプトが動くとき、ブレイクマークなど消去\n\t\tthis.#layMng.clearBreak();\n\t\tthis.#scrItr.noticeBreak(false);\n\t\tthis.#evtMng.hideHint();\n\n\t\tqueueMicrotask(()=> {void this.#main()});\n\t}\n\treadonly stop = ()=> {\n// console.log(`📜🔴 stop!`);\n\t\tthis.#scrItr.noticeBreak(true);\n\t};\n\n\tsetLoop(isLoop: boolean, mes = '') {\n\t\t///console.log('setLoop:'+ (isLoop ?'resume!' :'stop!') +' mes:'+ mes);\n\t\t// eslint-disable-next-line no-cond-assign\n\t\tif (this.#isLoop = isLoop) this.resume(); else this.stop();\n\t\tthis.sys.setTitleInfo(mes ?` -- ${mes}中` :'');\n\t}\n\t// oxlint-disable-next-line no-unused-private-class-members\n\t#isLoop = true;\n\n\t//MARK: メイン処理(シナリオ解析)\n\tasync #main() {\n\t\tlet errHd = '';\n\t\ttry {\n\t\t\twhile (this.#isLoop) {\n\t\t\t\tlet token = this.#scrItr.nextToken();\n\t\t\t\tif (! token) return;\t// 初期化前に終了した場合向け\n\n\t\t\t\tconst uc = token.charCodeAt(0);\t// TokenTopUnicode\n\t\t\t\t// \\t タブ\n\t\t\t\tif (uc === 9) continue;\n\t\t\t\t// \\n 改行\n\t\t\t\tif (uc === 10) {this.#scrItr.addLineNum(token.length); continue}\n\t\t\t\t// [ タグ開始\n\t\t\t\tif (uc === 91) {\n\t\t\t\t\terrHd = 'タグ開始';\n\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\n\t\t\t\t\tconst [tag_name, args] = tagToken2Name_Args(token);\n\t\t\t\t\terrHd = `[${tag_name}]例外`;\n\n\t\t\t\t\tconst cl = (token.match(/\\n/g) ?? []).length;\n\t\t\t\t\tif (cl > 0) this.#scrItr.addLineNum(cl);\n\t\t\t\t\tif (await this.#scrItr.タグ解析(\n\t\t\t\t\t\t<keyof T_HTag>tag_name, args\n\t\t\t\t\t)) {this.stop(); return}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// & 変数操作・変数表示\n\t\t\t\t// an時代・瀬戸愛羅さんより https://famibee.blog.fc2.com/blog-entry-245.html\n\t\t\t\tif (uc === 38) {\n\t\t\t\t\tif (! token.endsWith('&')) {\n\t\t\t\t\t\terrHd = '変数計算';\n\t\t\t\t\t\tif (this.#scrItr.isBreak(token)) return;\n\t\t\t\t\t\tconst o = splitAmpersand(token.slice(1));\n\t\t\t\t\t\to.name = this.#getValAmpersand(o.name);\n\t\t\t\t\t\to.text = String(this.#parse(o.text));\n\t\t\t\t\t\tthis.#hTag.let(o);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\terrHd = '変数操作';\n\t\t\t\t\tif (token.charAt(1) === '&') throw new Error('「&表示&」書式では「&」指定が不要です');\n\t\t\t\t\ttoken = String(this.#parse( token.slice(1, -1) ));\n\t\t\t\t\t\t// -> 文字表示 へ\n\t\t\t\t}\n\t\t\t\t// ; コメント\n\t\t\t\telse if (uc === 59) continue;\n\t\t\t\t// * ラベル\n\t\t\t\telse if (uc === 42 && token.length > 1) continue;\n\n\t\t\t\t// 文字表示\n\t\t\t\terrHd = '文字表示';\n\t\t\t\tthis.#layMng.setNormalChWait();\n\t\t\t\tconst tl = this.#layMng.currentTxtlayForeNeedErr;\n\t\t\t\ttl.tagCh(token);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthis.errScript(`${errHd} ${\n\t\t\t\te instanceof Error ?`mes=${e.message}(${e.name})` :String(e)\n\t\t\t}`, false);\n\t\t}\n\t}\n\t\t#getValAmpersand\t= (_v: string)=> '';\n\t\t#parse\t\t\t\t: (_s: string)=> T_VAL_DATA;\n\n}\n"],"names":["PROTOCOL_USERDATA","PROTOCOL_DL","Config","ConfigBase","sys","c","fn","res","dec","oCfg","CmnLib","extptn","SEARCH_PATH_ARG_EXT","idx2LnCol","sSn","idx","lenNm","ln","ch","len","AnalyzeTagArg","#REG_TAGARG","args","#hPrm","#isKomeParam","groups","key","val","val2","def","def2","literal","token","hRng","index","z","lenVnm","k_ch","k_ln","v_ln","v_ch","REG_TAG","tagToken2Name_Args","g","nm","tagToken2Name","splitAmpersand","equa","cnt_equa","e0","e1","e2","Grammar","cfg","#REG_TOKEN","ce","#hC2M","#REG_CANTC2M","#REG_TOKEN_NOTXT","hArg","hTag","scr","start_idx","name","text","op","cl","#replaceScr_C2M","char","#REGC2M","#regStrC2M","#regStrC2M4not","a","b","txt","tkn","r","#replaceScript_Wildcard","#REG_WILDCARD","#REG_WILDCARD2","i","tag_name","#alzTagArg","p_fn","ext","v","nt","getFn","lnum","del","j","macro","SN_ID","Main","utils.skipHello","m","#init","e","#hTag","#scrItr","#layMng","#evtMng","#aDest","hApp","parseColor","cvs","clone_cvs","p","app","Application","utils.clearTextureCache","cc","Variable","PropParser","SoundMng","ScriptIterator","LayerMng","EventMng","Button","prpPrs","#setVal_Nochk","scope","autocast","#getValAmpersand","#parse","s","sndMng","dbgMng","DebugMng","mes","isThrow","#isLoop","fncDummy","f","_mes","_isThrow","argChk_Boolean","_scope","_nm","_val","_autocast","#main","isLoop","errHd","uc","o","_v"],"mappings":"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"}
|
package/dist_app/PropParser.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { i as dt } from "./app2.js";
|
|
2
|
-
var lt = { exports: {} }, Ht = lt.exports,
|
|
2
|
+
var lt = { exports: {} }, Ht = lt.exports, Lt;
|
|
3
3
|
function Xt() {
|
|
4
|
-
return
|
|
4
|
+
return Lt || (Lt = 1, function(At, e) {
|
|
5
5
|
(function(c, l) {
|
|
6
6
|
At.exports = l();
|
|
7
7
|
})(typeof self < "u" ? self : Ht, function() {
|
|
@@ -154,7 +154,7 @@ function Xt() {
|
|
|
154
154
|
return { status: t.status, index: t.index, value: t.value, furthest: r.furthest, expected: n };
|
|
155
155
|
}
|
|
156
156
|
var nt = {};
|
|
157
|
-
function
|
|
157
|
+
function vt(t, r) {
|
|
158
158
|
if (L(t)) return { offset: r, line: -1, column: -1 };
|
|
159
159
|
t in nt || (nt[t] = {});
|
|
160
160
|
for (var n = nt[t], i = 0, u = 0, s = 0, a = r; a >= 0; ) {
|
|
@@ -184,7 +184,7 @@ function Xt() {
|
|
|
184
184
|
function J(t) {
|
|
185
185
|
if (typeof t != "string") throw new Error("not a string: " + t);
|
|
186
186
|
}
|
|
187
|
-
var kt = 2, qt = 3, R = 8, It = 5 * R, Rt = 4 * R,
|
|
187
|
+
var kt = 2, qt = 3, R = 8, It = 5 * R, Rt = 4 * R, yt = " ";
|
|
188
188
|
function it(t, r) {
|
|
189
189
|
return new Array(r + 1).join(t);
|
|
190
190
|
}
|
|
@@ -192,14 +192,14 @@ function Xt() {
|
|
|
192
192
|
var i = r - t.length;
|
|
193
193
|
return i <= 0 ? t : it(n, i) + t;
|
|
194
194
|
}
|
|
195
|
-
function
|
|
195
|
+
function Et(t, r, n, i) {
|
|
196
196
|
return { from: t - r > 0 ? t - r : 0, to: t + n > i ? i : t + n };
|
|
197
197
|
}
|
|
198
198
|
function Mt(t, r) {
|
|
199
199
|
var n, i, u, s, a, h = r.index, v = h.offset, S = 1;
|
|
200
200
|
if (v === t.length) return "Got the end of the input";
|
|
201
201
|
if (L(t)) {
|
|
202
|
-
var N = v - v % R, k = v - N, _ =
|
|
202
|
+
var N = v - v % R, k = v - N, _ = Et(N, It, Rt + R, t.length), q = O(function(w) {
|
|
203
203
|
return O(function(C) {
|
|
204
204
|
return ot(C.toString(16), 2, "0");
|
|
205
205
|
}, w);
|
|
@@ -216,16 +216,16 @@ function Xt() {
|
|
|
216
216
|
}, q), (a = (8 * (s.to > 0 ? s.to - 1 : s.to)).toString(16).length) < 2 && (a = 2);
|
|
217
217
|
} else {
|
|
218
218
|
var T = t.split(/\r\n|[\n\r\u2028\u2029]/);
|
|
219
|
-
n = h.column - 1, i = h.line - 1, s =
|
|
219
|
+
n = h.column - 1, i = h.line - 1, s = Et(i, kt, qt, T.length), u = T.slice(s.from, s.to), a = s.to.toString().length;
|
|
220
220
|
}
|
|
221
221
|
var Ct = i - s.from;
|
|
222
222
|
return L(t) && (a = (8 * (s.to > 0 ? s.to - 1 : s.to)).toString(16).length) < 2 && (a = 2), x(function(w, C, H) {
|
|
223
|
-
var V, X = H === Ct, Y = X ? "> " :
|
|
224
|
-
return V = L(t) ? ot((8 * (s.from + H)).toString(16), a, "0") : ot((s.from + H + 1).toString(), a, " "), [].concat(w, [Y + V + " | " + C], X ? [
|
|
223
|
+
var V, X = H === Ct, Y = X ? "> " : yt;
|
|
224
|
+
return V = L(t) ? ot((8 * (s.from + H)).toString(16), a, "0") : ot((s.from + H + 1).toString(), a, " "), [].concat(w, [Y + V + " | " + C], X ? [yt + it(" ", a) + " | " + ot("", n, " ") + it("^", S)] : []);
|
|
225
225
|
}, [], u).join(`
|
|
226
226
|
`);
|
|
227
227
|
}
|
|
228
|
-
function
|
|
228
|
+
function wt(t, r) {
|
|
229
229
|
return [`
|
|
230
230
|
`, "-- PARSING FAILED " + it("-", 50), `
|
|
231
231
|
|
|
@@ -239,7 +239,7 @@ function Xt() {
|
|
|
239
239
|
`].join("");
|
|
240
240
|
var n;
|
|
241
241
|
}
|
|
242
|
-
function
|
|
242
|
+
function xt(t) {
|
|
243
243
|
return t.flags !== void 0 ? t.flags : [t.global ? "g" : "", t.ignoreCase ? "i" : "", t.multiline ? "m" : "", t.unicode ? "u" : "", t.sticky ? "y" : ""].join("");
|
|
244
244
|
}
|
|
245
245
|
function ut() {
|
|
@@ -269,7 +269,7 @@ function Xt() {
|
|
|
269
269
|
return s;
|
|
270
270
|
});
|
|
271
271
|
}
|
|
272
|
-
function
|
|
272
|
+
function Nt(t, r) {
|
|
273
273
|
return pt(t, r).or(z([]));
|
|
274
274
|
}
|
|
275
275
|
function pt(t, r) {
|
|
@@ -288,13 +288,13 @@ function Xt() {
|
|
|
288
288
|
function A(t, r) {
|
|
289
289
|
(function(u) {
|
|
290
290
|
if (!(u instanceof RegExp)) throw new Error("not a regexp: " + u);
|
|
291
|
-
for (var s =
|
|
291
|
+
for (var s = xt(u), a = 0; a < s.length; a++) {
|
|
292
292
|
var h = s.charAt(a);
|
|
293
293
|
if (h !== "i" && h !== "m" && h !== "u" && h !== "s") throw new Error('unsupported regexp flag "' + h + '": ' + u);
|
|
294
294
|
}
|
|
295
295
|
})(t), arguments.length >= 2 ? U(r) : r = 0;
|
|
296
296
|
var n = function(u) {
|
|
297
|
-
return RegExp("^(?:" + u.source + ")",
|
|
297
|
+
return RegExp("^(?:" + u.source + ")", xt(u));
|
|
298
298
|
}(t), i = "" + t;
|
|
299
299
|
return o(function(u, s) {
|
|
300
300
|
var a = n.exec(u.slice(s));
|
|
@@ -327,7 +327,7 @@ function Xt() {
|
|
|
327
327
|
if (t instanceof RegExp) return ft(A(t));
|
|
328
328
|
throw new Error("not a string, regexp, or parser: " + t);
|
|
329
329
|
}
|
|
330
|
-
function
|
|
330
|
+
function St(t) {
|
|
331
331
|
return G(t), o(function(r, n) {
|
|
332
332
|
var i = t._(r, n), u = r.slice(n, i.index);
|
|
333
333
|
return i.status ? B(n, 'not "' + u + '"') : b(n, null);
|
|
@@ -339,7 +339,7 @@ function Xt() {
|
|
|
339
339
|
return n < r.length && t(i) ? b(n + 1, i) : B(n, "a character/byte matching " + t);
|
|
340
340
|
});
|
|
341
341
|
}
|
|
342
|
-
function
|
|
342
|
+
function Bt(t, r) {
|
|
343
343
|
arguments.length < 2 && (r = t, t = void 0);
|
|
344
344
|
var n = o(function(i, u) {
|
|
345
345
|
return n._ = r()._, n._(i, u);
|
|
@@ -352,11 +352,11 @@ function Xt() {
|
|
|
352
352
|
f.parse = function(t) {
|
|
353
353
|
if (typeof t != "string" && !L(t)) throw new Error(".parse must be called with a string or Buffer as its argument");
|
|
354
354
|
var r, n = this.skip(gt)._(t, 0);
|
|
355
|
-
return r = n.status ? { status: !0, value: n.value } : { status: !1, index:
|
|
355
|
+
return r = n.status ? { status: !0, value: n.value } : { status: !1, index: vt(t, n.furthest), expected: n.expected }, delete nt[t], r;
|
|
356
356
|
}, f.tryParse = function(t) {
|
|
357
357
|
var r = this.parse(t);
|
|
358
358
|
if (r.status) return r.value;
|
|
359
|
-
var n =
|
|
359
|
+
var n = wt(t, r), i = new Error(n);
|
|
360
360
|
throw i.type = "ParsimmonError", i.result = r, i;
|
|
361
361
|
}, f.assert = function(t, r) {
|
|
362
362
|
return this.chain(function(n) {
|
|
@@ -447,13 +447,13 @@ function Xt() {
|
|
|
447
447
|
return { name: t, value: n, start: r, end: i };
|
|
448
448
|
});
|
|
449
449
|
}, f.sepBy = function(t) {
|
|
450
|
-
return
|
|
450
|
+
return Nt(this, t);
|
|
451
451
|
}, f.sepBy1 = function(t) {
|
|
452
452
|
return pt(this, t);
|
|
453
453
|
}, f.lookahead = function(t) {
|
|
454
454
|
return this.skip(ft(t));
|
|
455
455
|
}, f.notFollowedBy = function(t) {
|
|
456
|
-
return this.skip(
|
|
456
|
+
return this.skip(St(t));
|
|
457
457
|
}, f.desc = function(t) {
|
|
458
458
|
E(t) || (t = [t]);
|
|
459
459
|
var r = this;
|
|
@@ -475,31 +475,31 @@ function Xt() {
|
|
|
475
475
|
});
|
|
476
476
|
}, f.concat = f.or, f.empty = mt, f.of = z, f["fantasy-land/ap"] = f.ap, f["fantasy-land/chain"] = f.chain, f["fantasy-land/concat"] = f.concat, f["fantasy-land/empty"] = f.empty, f["fantasy-land/of"] = f.of, f["fantasy-land/map"] = f.map;
|
|
477
477
|
var Q = o(function(t, r) {
|
|
478
|
-
return b(r,
|
|
478
|
+
return b(r, vt(t, r));
|
|
479
479
|
}), Ft = o(function(t, r) {
|
|
480
480
|
return r >= t.length ? B(r, "any character/byte") : b(r + 1, et(t, r));
|
|
481
481
|
}), zt = o(function(t, r) {
|
|
482
482
|
return b(t.length, t.slice(r));
|
|
483
483
|
}), gt = o(function(t, r) {
|
|
484
484
|
return r < t.length ? B(r, "EOF") : b(r, null);
|
|
485
|
-
}), Vt = A(/[0-9]/).desc("a digit"), Dt = A(/[0-9]*/).desc("optional digits"), Wt = A(/[a-z]/i).desc("a letter"), $t = A(/[a-z]*/i).desc("optional letters"), Gt = A(/\s*/).desc("optional whitespace"), Ut = A(/\s+/).desc("whitespace"),
|
|
486
|
-
`),
|
|
487
|
-
`),
|
|
488
|
-
o.all = zt, o.alt = st, o.any = Ft, o.cr =
|
|
485
|
+
}), Vt = A(/[0-9]/).desc("a digit"), Dt = A(/[0-9]*/).desc("optional digits"), Wt = A(/[a-z]/i).desc("a letter"), $t = A(/[a-z]*/i).desc("optional letters"), Gt = A(/\s*/).desc("optional whitespace"), Ut = A(/\s+/).desc("whitespace"), _t = K("\r"), Pt = K(`
|
|
486
|
+
`), jt = K(`\r
|
|
487
|
+
`), Ot = st(jt, Pt, _t).desc("newline"), Tt = st(Ot, gt);
|
|
488
|
+
o.all = zt, o.alt = st, o.any = Ft, o.cr = _t, o.createLanguage = function(t) {
|
|
489
489
|
var r = {};
|
|
490
490
|
for (var n in t) ({}).hasOwnProperty.call(t, n) && function(i) {
|
|
491
|
-
r[i] =
|
|
491
|
+
r[i] = Bt(function() {
|
|
492
492
|
return t[i](r);
|
|
493
493
|
});
|
|
494
494
|
}(n);
|
|
495
495
|
return r;
|
|
496
|
-
}, o.crlf =
|
|
496
|
+
}, o.crlf = jt, o.custom = function(t) {
|
|
497
497
|
return o(t(b, B));
|
|
498
|
-
}, o.digit = Vt, o.digits = Dt, o.empty = mt, o.end = Tt, o.eof = gt, o.fail = at, o.formatError =
|
|
498
|
+
}, o.digit = Vt, o.digits = Dt, o.empty = mt, o.end = Tt, o.eof = gt, o.fail = at, o.formatError = wt, o.index = Q, o.isParser = d, o.lazy = Bt, o.letter = Wt, o.letters = $t, o.lf = Pt, o.lookahead = ft, o.makeFailure = B, o.makeSuccess = b, o.newline = Ot, o.noneOf = function(t) {
|
|
499
499
|
return ct(function(r) {
|
|
500
500
|
return t.indexOf(r) < 0;
|
|
501
501
|
}).desc("none of '" + t + "'");
|
|
502
|
-
}, o.notFollowedBy =
|
|
502
|
+
}, o.notFollowedBy = St, o.of = z, o.oneOf = function(t) {
|
|
503
503
|
for (var r = t.split(""), n = 0; n < r.length; n++) r[n] = "'" + r[n] + "'";
|
|
504
504
|
return ct(function(i) {
|
|
505
505
|
return t.indexOf(i) >= 0;
|
|
@@ -508,7 +508,7 @@ function Xt() {
|
|
|
508
508
|
return ct(function(n) {
|
|
509
509
|
return t <= n && n <= r;
|
|
510
510
|
}).desc(t + "-" + r);
|
|
511
|
-
}, o.regex = A, o.regexp = A, o.sepBy =
|
|
511
|
+
}, o.regex = A, o.regexp = A, o.sepBy = Nt, o.sepBy1 = pt, o.seq = ut, o.seqMap = F, o.seqObj = function() {
|
|
512
512
|
for (var t, r = {}, n = 0, i = (t = arguments, Array.prototype.slice.call(t)), u = i.length, s = 0; s < u; s += 1) {
|
|
513
513
|
var a = i[s];
|
|
514
514
|
if (!d(a)) {
|
|
@@ -588,7 +588,7 @@ function Xt() {
|
|
|
588
588
|
}(lt)), lt.exports;
|
|
589
589
|
}
|
|
590
590
|
var g = Xt();
|
|
591
|
-
class
|
|
591
|
+
class bt {
|
|
592
592
|
constructor(e, c = "\\") {
|
|
593
593
|
this.val = e;
|
|
594
594
|
function l(m) {
|
|
@@ -762,7 +762,7 @@ class Lt {
|
|
|
762
762
|
// 小なり、以下、大なり、以上
|
|
763
763
|
"==": (e) => {
|
|
764
764
|
const c = this.#t(e.shift()), l = this.#t(e.shift());
|
|
765
|
-
return c == null && l == null
|
|
765
|
+
return c == null && l == null ? c == l : String(c) === String(l);
|
|
766
766
|
},
|
|
767
767
|
"!=": (e) => !this.#r["=="](e),
|
|
768
768
|
"===": (e) => {
|
|
@@ -807,13 +807,15 @@ class Lt {
|
|
|
807
807
|
const l = this.#u.exec(e.trim())?.groups;
|
|
808
808
|
if (!l) return null;
|
|
809
809
|
const { scope: p = "tmp", name: o, at: f = "" } = l;
|
|
810
|
+
if (!bt.#s.includes(p)) throw `[変数に値セット] scopeが異常【${p}】です`;
|
|
810
811
|
return {
|
|
811
812
|
scope: p,
|
|
812
|
-
name:
|
|
813
|
+
name: bt.#a(o),
|
|
813
814
|
at: f
|
|
814
815
|
};
|
|
815
816
|
}
|
|
816
|
-
static #s
|
|
817
|
+
static #s = ["tmp", "sys", "save", "mp"];
|
|
818
|
+
static #a(e) {
|
|
817
819
|
let c = 0, l = 0, p = e;
|
|
818
820
|
for (; ; ) {
|
|
819
821
|
if (c = p.indexOf('["'), c < 0) {
|
|
@@ -828,6 +830,6 @@ class Lt {
|
|
|
828
830
|
}
|
|
829
831
|
}
|
|
830
832
|
export {
|
|
831
|
-
|
|
833
|
+
bt as PropParser
|
|
832
834
|
};
|
|
833
835
|
//# sourceMappingURL=PropParser.js.map
|