@famibee/skynovel 1.65.0 → 2.0.1

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.
Files changed (176) hide show
  1. package/README.md +3 -3
  2. package/dist/Button.js +131 -163
  3. package/dist/Button.js.map +1 -1
  4. package/dist/CallStack.js +19 -22
  5. package/dist/CallStack.js.map +1 -1
  6. package/dist/CmnInterface.js +91 -0
  7. package/dist/CmnInterface.js.map +1 -0
  8. package/dist/CmnLib.js +94 -0
  9. package/dist/CmnLib.js.map +1 -0
  10. package/dist/Config.js +26 -0
  11. package/dist/Config.js.map +1 -0
  12. package/dist/ConfigBase.js +152 -0
  13. package/dist/ConfigBase.js.map +1 -0
  14. package/dist/DebugMng.js +89 -102
  15. package/dist/DebugMng.js.map +1 -1
  16. package/dist/EventListenerCtn.js +21 -0
  17. package/dist/EventListenerCtn.js.map +1 -0
  18. package/dist/EventMng.js +1435 -1577
  19. package/dist/EventMng.js.map +1 -1
  20. package/dist/Grammar.js +194 -0
  21. package/dist/Grammar.js.map +1 -0
  22. package/dist/GrpLayer.js +163 -195
  23. package/dist/GrpLayer.js.map +1 -1
  24. package/dist/Layer.js +260 -0
  25. package/dist/Layer.js.map +1 -0
  26. package/dist/LayerMng.js +810 -991
  27. package/dist/LayerMng.js.map +1 -1
  28. package/dist/Main.js +144 -393
  29. package/dist/Main.js.map +1 -1
  30. package/dist/PropParser.js +936 -834
  31. package/dist/PropParser.js.map +1 -1
  32. package/dist/Reading.js +917 -786
  33. package/dist/Reading.js.map +1 -1
  34. package/dist/RubySpliter.js +59 -92
  35. package/dist/RubySpliter.js.map +1 -1
  36. package/dist/ScriptIterator.js +805 -1034
  37. package/dist/ScriptIterator.js.map +1 -1
  38. package/dist/SndBuf.js +1097 -1332
  39. package/dist/SndBuf.js.map +1 -1
  40. package/dist/SoundMng.js +124 -135
  41. package/dist/SoundMng.js.map +1 -1
  42. package/dist/SpritesMng.js +220 -232
  43. package/dist/SpritesMng.js.map +1 -1
  44. package/dist/SysBase.js +1729 -0
  45. package/dist/SysBase.js.map +1 -0
  46. package/dist/TxtLayer.js +1212 -1397
  47. package/dist/TxtLayer.js.map +1 -1
  48. package/dist/Variable.js +398 -466
  49. package/dist/Variable.js.map +1 -1
  50. package/dist/chunk.js +18 -0
  51. package/dist/gamepad.js +723 -511
  52. package/dist/gamepad.js.map +1 -1
  53. package/dist/pixi.js +13422 -0
  54. package/dist/pixi.js.map +1 -0
  55. package/dist/platform.js +424 -369
  56. package/dist/platform.js.map +1 -1
  57. package/dist/sn/AnalyzeTagArg.d.ts +1 -1
  58. package/dist/sn/AnalyzeTagArg.d.ts.map +1 -1
  59. package/dist/sn/CmnInterface.d.ts +3 -1
  60. package/dist/sn/CmnInterface.d.ts.map +1 -1
  61. package/dist/sn/CmnLib.d.ts.map +1 -1
  62. package/dist/sn/CmnTween.d.ts +3 -3
  63. package/dist/sn/CmnTween.d.ts.map +1 -1
  64. package/dist/sn/EventMng.d.ts.map +1 -1
  65. package/dist/sn/Grammar.d.ts +1 -1
  66. package/dist/sn/Grammar.d.ts.map +1 -1
  67. package/dist/sn/PropParser.d.ts +2 -2
  68. package/dist/sn/PropParser.d.ts.map +1 -1
  69. package/dist/sn/Reading.d.ts +6 -0
  70. package/dist/sn/Reading.d.ts.map +1 -1
  71. package/dist/sn/ScriptIterator.d.ts.map +1 -1
  72. package/dist/sn/SndBuf.d.ts +27 -16
  73. package/dist/sn/SndBuf.d.ts.map +1 -1
  74. package/dist/sn/SoundMng.d.ts +4 -1
  75. package/dist/sn/SoundMng.d.ts.map +1 -1
  76. package/dist/sn/SysBase.d.ts.map +1 -1
  77. package/dist/sn/TxtStage.d.ts +2 -1
  78. package/dist/sn/TxtStage.d.ts.map +1 -1
  79. package/dist/test/ValTest.d.ts +1 -1
  80. package/dist/test/ValTest.d.ts.map +1 -1
  81. package/dist/web.js +653 -8
  82. package/dist/web.js.map +1 -1
  83. package/dist_app/Button.js +131 -163
  84. package/dist_app/Button.js.map +1 -1
  85. package/dist_app/CallStack.js +19 -22
  86. package/dist_app/CallStack.js.map +1 -1
  87. package/dist_app/CmnInterface.js +91 -0
  88. package/dist_app/CmnInterface.js.map +1 -0
  89. package/dist_app/CmnLib.js +94 -0
  90. package/dist_app/CmnLib.js.map +1 -0
  91. package/dist_app/Config.js +26 -0
  92. package/dist_app/Config.js.map +1 -0
  93. package/dist_app/ConfigBase.js +152 -0
  94. package/dist_app/ConfigBase.js.map +1 -0
  95. package/dist_app/DebugMng.js +92 -0
  96. package/dist_app/DebugMng.js.map +1 -0
  97. package/dist_app/EventListenerCtn.js +21 -0
  98. package/dist_app/EventListenerCtn.js.map +1 -0
  99. package/dist_app/EventMng.js +1435 -1577
  100. package/dist_app/EventMng.js.map +1 -1
  101. package/dist_app/Grammar.js +194 -0
  102. package/dist_app/Grammar.js.map +1 -0
  103. package/dist_app/GrpLayer.js +163 -195
  104. package/dist_app/GrpLayer.js.map +1 -1
  105. package/dist_app/Layer.js +260 -0
  106. package/dist_app/Layer.js.map +1 -0
  107. package/dist_app/LayerMng.js +810 -991
  108. package/dist_app/LayerMng.js.map +1 -1
  109. package/dist_app/Main.js +144 -392
  110. package/dist_app/Main.js.map +1 -1
  111. package/dist_app/PropParser.js +936 -834
  112. package/dist_app/PropParser.js.map +1 -1
  113. package/dist_app/Reading.js +917 -786
  114. package/dist_app/Reading.js.map +1 -1
  115. package/dist_app/RubySpliter.js +59 -92
  116. package/dist_app/RubySpliter.js.map +1 -1
  117. package/dist_app/ScriptIterator.js +805 -1033
  118. package/dist_app/ScriptIterator.js.map +1 -1
  119. package/dist_app/SndBuf.js +1097 -1332
  120. package/dist_app/SndBuf.js.map +1 -1
  121. package/dist_app/SoundMng.js +124 -135
  122. package/dist_app/SoundMng.js.map +1 -1
  123. package/dist_app/SpritesMng.js +220 -231
  124. package/dist_app/SpritesMng.js.map +1 -1
  125. package/dist_app/SysBase.js +1729 -0
  126. package/dist_app/SysBase.js.map +1 -0
  127. package/dist_app/TxtLayer.js +1212 -1396
  128. package/dist_app/TxtLayer.js.map +1 -1
  129. package/dist_app/Variable.js +398 -466
  130. package/dist_app/Variable.js.map +1 -1
  131. package/dist_app/app.js +211 -8
  132. package/dist_app/app.js.map +1 -1
  133. package/dist_app/appMain.js +20 -21
  134. package/dist_app/appMain.js.map +1 -1
  135. package/dist_app/chunk.js +18 -0
  136. package/dist_app/gamepad.js +723 -511
  137. package/dist_app/gamepad.js.map +1 -1
  138. package/dist_app/pixi.js +11181 -0
  139. package/dist_app/pixi.js.map +1 -0
  140. package/dist_app/platform.js +424 -369
  141. package/dist_app/platform.js.map +1 -1
  142. package/dist_app/preload.js +2 -2
  143. package/dist_app/preload.js.map +1 -1
  144. package/dist_app/sn/AnalyzeTagArg.d.ts +1 -1
  145. package/dist_app/sn/AnalyzeTagArg.d.ts.map +1 -1
  146. package/dist_app/sn/CmnInterface.d.ts +3 -1
  147. package/dist_app/sn/CmnInterface.d.ts.map +1 -1
  148. package/dist_app/sn/CmnLib.d.ts.map +1 -1
  149. package/dist_app/sn/CmnTween.d.ts +3 -3
  150. package/dist_app/sn/CmnTween.d.ts.map +1 -1
  151. package/dist_app/sn/EventMng.d.ts.map +1 -1
  152. package/dist_app/sn/Grammar.d.ts +1 -1
  153. package/dist_app/sn/Grammar.d.ts.map +1 -1
  154. package/dist_app/sn/PropParser.d.ts +2 -2
  155. package/dist_app/sn/PropParser.d.ts.map +1 -1
  156. package/dist_app/sn/Reading.d.ts +6 -0
  157. package/dist_app/sn/Reading.d.ts.map +1 -1
  158. package/dist_app/sn/ScriptIterator.d.ts.map +1 -1
  159. package/dist_app/sn/SndBuf.d.ts +27 -16
  160. package/dist_app/sn/SndBuf.d.ts.map +1 -1
  161. package/dist_app/sn/SoundMng.d.ts +4 -1
  162. package/dist_app/sn/SoundMng.d.ts.map +1 -1
  163. package/dist_app/sn/SysBase.d.ts.map +1 -1
  164. package/dist_app/sn/TxtStage.d.ts +2 -1
  165. package/dist_app/sn/TxtStage.d.ts.map +1 -1
  166. package/dist_app/test/ValTest.d.ts +1 -1
  167. package/dist_app/test/ValTest.d.ts.map +1 -1
  168. package/package.json +23 -13
  169. package/dist/CmnTween.js +0 -1005
  170. package/dist/CmnTween.js.map +0 -1
  171. package/dist/web2.js +0 -21644
  172. package/dist/web2.js.map +0 -1
  173. package/dist_app/CmnTween.js +0 -1005
  174. package/dist_app/CmnTween.js.map +0 -1
  175. package/dist_app/app2.js +0 -18547
  176. package/dist_app/app2.js.map +0 -1
@@ -1,93 +1,60 @@
1
- class o {
2
- static #s = "ヽ";
3
- static setting(t) {
4
- t.sesame && (o.#s = t.sesame);
5
- }
6
- static getSesame() {
7
- return o.#s;
8
- }
9
- static destroy() {
10
- o.#s = "ヽ";
11
- }
12
- #t = () => {
13
- };
14
- init(t) {
15
- this.#t = t;
16
- }
17
- /*
18
- ★Unicodeで「漢字」の正規表現 ものかの http://tama-san.com/kanji-regex/
19
- 2E80..2FDF CJK部首補助+康熙部首
20
- 3005 々(漢字の踊り字)
21
- 3007 〇(漢数字のゼロ)
22
- 303B 〻(漢字の踊り字)
23
- 3400..4DBF CJK統合漢字拡張A
24
- 4E00..9FFF CJK統合漢字
25
- F900..FAFF CJK互換漢字
26
- 20000..2FFFF CJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで
27
-
28
- [\x{2E80}-\x{2FDF}々〇〻\x{3400}-\x{4DBF}\x{4E00}-\x{9FFF}\x{F900}-\x{FAFF}\x{20000}-\x{2FFFF}]
29
- [\u2E80-\u2FDF々〇〻\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\u20000-\u2FFFF]
30
- [⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\u20000-\u2FFFF] // 含まれない文字がある
31
- [⺀-⿟々〇〻㐀-鿿豈-﫿\u20000-\u2FFFF] // ヽ--30FD が変に引っかかる。多分\u2000-\u2FFF解釈
32
- \\u{20000}-\\u{2FFFF} // 五桁だとエラー
33
-
34
- 【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683
35
- > このHiraganaプロパティ、長音記号は含まれていません。
36
- > \p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ
37
-
38
- ・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php
39
- */
40
- static #n;
41
- static setEscape(t) {
42
- o.#n = new RegExp(
43
- (t ? `(?<ce>\\${t}\\S)|` : "") + "|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\n])《(?<kan_ruby>[^》\\n]+)》)|(?<txt>[\uD800-\uDBFF][\uDC00-\uDFFF]|[^|《》]+?|.)",
44
- "gs"
45
- );
46
- }
47
- putTxt(t) {
48
- for (const { groups: s } of t.matchAll(o.#n)) {
49
- if (!s) break;
50
- const { ruby: c, kan_ruby: e, kan: a = "", ce: i, txt: r = "", str: n = "" } = s;
51
- if (c) {
52
- this.putTxtRb(decodeURIComponent(n), c);
53
- continue;
54
- }
55
- if (e) {
56
- this.putTxtRb(a, e);
57
- continue;
58
- }
59
- if (i) {
60
- this.#t(i.slice(1), "");
61
- continue;
62
- }
63
- for (const f of Array.from(r)) this.#t(f, "");
64
- }
65
- }
66
- putTxtRb(t, s) {
67
- if (/^\w+|{"/.test(s)) {
68
- this.#t(t, s);
69
- return;
70
- }
71
- const c = Array.from(t), e = c.length;
72
- if (/^\*.?$/.test(s)) {
73
- const n = "center|" + (s === "*" ? o.#s : s.charAt(1));
74
- for (const f of c) this.#t(f, n);
75
- return;
76
- }
77
- if (e === 1 || !s.includes(" ")) {
78
- this.#t(t, decodeURIComponent(s));
79
- return;
80
- }
81
- const a = s.split(" "), i = a.length, r = i > e ? i : e;
82
- for (let n = 0; n < r; ++n) this.#t(
83
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
84
- n < e ? c[n] : "",
85
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
86
- n < i ? decodeURIComponent(a[n]) : ""
87
- );
88
- }
89
- }
90
- export {
91
- o as R
1
+ var RubySpliter = class e {
2
+ static #e = "ヽ";
3
+ static setting(t) {
4
+ t.sesame && (e.#e = t.sesame);
5
+ }
6
+ static getSesame() {
7
+ return e.#e;
8
+ }
9
+ static destroy() {
10
+ e.#e = "ヽ";
11
+ }
12
+ #t = () => {};
13
+ init(e) {
14
+ this.#t = e;
15
+ }
16
+ static #n;
17
+ static setEscape(t) {
18
+ e.#n = RegExp((t ? `(?<ce>\\${t}\\S)|` : "") + "|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\n])《(?<kan_ruby>[^》\\n]+)》)|(?<txt>[�d800-�dbff][�dc00-�dfff]|[^|《》]+?|.)", "gs");
19
+ }
20
+ putTxt(t) {
21
+ for (let { groups: n } of t.matchAll(e.#n)) {
22
+ if (!n) break;
23
+ let { ruby: e, kan_ruby: t, kan: r = "", ce: i, txt: a = "", str: o = "" } = n;
24
+ if (e) {
25
+ this.putTxtRb(decodeURIComponent(o), e);
26
+ continue;
27
+ }
28
+ if (t) {
29
+ this.putTxtRb(r, t);
30
+ continue;
31
+ }
32
+ if (i) {
33
+ this.#t(i.slice(1), "");
34
+ continue;
35
+ }
36
+ for (let e of Array.from(a)) this.#t(e, "");
37
+ }
38
+ }
39
+ putTxtRb(t, n) {
40
+ if (/^\w+|{"/.test(n)) {
41
+ this.#t(t, n);
42
+ return;
43
+ }
44
+ let r = Array.from(t), i = r.length;
45
+ if (/^\*.?$/.test(n)) {
46
+ let t = "center|" + (n === "*" ? e.#e : n.charAt(1));
47
+ for (let e of r) this.#t(e, t);
48
+ return;
49
+ }
50
+ if (i === 1 || !n.includes(" ")) {
51
+ this.#t(t, decodeURIComponent(n));
52
+ return;
53
+ }
54
+ let a = n.split(" "), o = a.length, s = o > i ? o : i;
55
+ for (let e = 0; e < s; ++e) this.#t(e < i ? r[e] : "", e < o ? decodeURIComponent(a[e]) : "");
56
+ }
92
57
  };
93
- //# sourceMappingURL=RubySpliter.js.map
58
+ export { RubySpliter as t };
59
+
60
+ //# sourceMappingURL=RubySpliter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RubySpliter.js","sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* eslint-disable no-irregular-whitespace */\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 type {TArg} from './Grammar';\nimport type {T_PutCh} from './CmnInterface';\n\nexport type IAutoPage = (idx: number, str: string) => void;\n\n\nexport class RubySpliter {\n\tstatic\t#sesame\t\t= 'ヽ';\n\tstatic\tsetting(hArg: TArg) {if (hArg.sesame) RubySpliter.#sesame = hArg.sesame}\n\tstatic\tgetSesame() {return RubySpliter.#sesame}\n\n\tstatic\tdestroy() {RubySpliter.#sesame = 'ヽ'}\n\n\t#putCh\t: T_PutCh\t= ()=> { /* empty */ };\n\tinit(putCh: T_PutCh) {this.#putCh = putCh}\n\n/*\n\t\t★Unicodeで「漢字」の正規表現 – ものかの http://tama-san.com/kanji-regex/\n\t\t2E80..2FDF\tCJK部首補助+康熙部首\n\t\t3005\t\t々(漢字の踊り字)\n\t\t3007\t\t〇(漢数字のゼロ)\n\t\t303B\t\t〻(漢字の踊り字)\n\t\t3400..4DBF\t\tCJK統合漢字拡張A\n\t\t4E00..9FFF\t\tCJK統合漢字\n\t\tF900..FAFF\t\tCJK互換漢字\n\t\t20000..2FFFF\tCJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで\n\n\t\t[\\x{2E80}-\\x{2FDF}々〇〻\\x{3400}-\\x{4DBF}\\x{4E00}-\\x{9FFF}\\x{F900}-\\x{FAFF}\\x{20000}-\\x{2FFFF}]\n\t\t[\\u2E80-\\u2FDF々〇〻\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF\\u20000-\\u2FFFF]\n\t\t[⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\\u20000-\\u2FFFF]\t\t// 含まれない文字がある\n\t\t[⺀-⿟々〇〻㐀-鿿豈-﫿\\u20000-\\u2FFFF]\t\t\t// ヽ--30FD が変に引っかかる。多分\\u2000-\\u2FFF解釈\n\t\t\\\\u{20000}-\\\\u{2FFFF}\t// 五桁だとエラー\n\n\t\t【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683\n\t\t\t> このHiraganaプロパティ、長音記号は含まれていません。\n\t\t\t> \\p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ\n\n\t\t・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php\n*/\n\tstatic\t#REG_RUBY\t: RegExp;\n\tstatic\tsetEscape(ce: string) {\n\t\t// 830 match 11293 step(1.7ms) PCRE2 https://regex101.com/r/BBrQtC/1\n\t\t/*\n(?<txt4>\\\\\\S)\n|\t|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》\n|\t(?: (?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+ [ぁ-ヿ]* | [^ |《》\\n])\n\t\t《(?<kan_ruby>[^》\\n]+)》)\n|\t(?<txt>\n\t[\\xD800-\\xDBFF][\\xDC00-\\xDFFF]\n|\t[^|《》]+?\n|\t.)\n\t\t*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\tRubySpliter.#REG_RUBY = new RegExp(\n\t\t\t(ce ?`(?<ce>\\\\${ce}\\\\S)|` :'')+\n\t\t\t'|(?<str>[^《\\\\n]+)《(?<ruby>[^》\\\\n]+)》'+\n\t\t\t'|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\\\n])'+\n\t\t\t'《(?<kan_ruby>[^》\\\\n]+)》)'+\n\t\t\t'|(?<txt>'+\n\t\t\t'[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]'+\t// 上位 + 下位サロゲート\n\t\t\t'|[^|《》]+?'+\t\t// 不要だが細切れにしないほうが後々効率で有利\n\t\t\t'|.)',\n\t\t\t'gs'\n\t\t);\n\t}\n\n\tputTxt(text: string) {\n\t\tfor (const {groups} of text.matchAll(RubySpliter.#REG_RUBY)) {\n\t\t\tif (! groups) break;\n\t\t\tconst {ruby, kan_ruby, kan='', ce, txt='', str=''} = groups;\n\t\t\tif (ruby) {this.putTxtRb(decodeURIComponent(str), ruby); continue}\n\n\t\t\tif (kan_ruby) {this.putTxtRb(kan, kan_ruby); continue}\n\t\t\tif (ce) {this.#putCh(ce.slice(1), ''); continue}\n\n\t\t\tfor (const v of Array.from(txt)) this.#putCh(v, '');\n\t\t\t\t// txt.split('')や [...txt] はサロゲートペアで問題\n\t\t}\n\t}\n\n\tputTxtRb(text: string, ruby: string) {\t// テスト用にpublic\n\t\t// 自動区切りを行わない(内部的 json文法)\n\t\tif (/^\\w+|{\"/.test(ruby)) {this.#putCh(text, ruby); return}\n\n\t\tconst a: string[] = Array.from(text);\n\t\tconst len = a.length;\n\t\tif (/^\\*.?$/.test(ruby)) {\t// 傍点文法\n\t\t\tconst rb_ses = 'center|'+ (ruby === '*' ?RubySpliter.#sesame :ruby.charAt(1));\n\t\t\tfor (const s of a) this.#putCh(s, rb_ses);\n\t\t\treturn;\n\t\t}\n\n\t\t// 自動区切りを行わない(単漢字など)\n\t\tif (len === 1 || ! ruby.includes(' ')) {\n\t\t\tthis.#putCh(text, decodeURIComponent(ruby));\n\t\t\treturn;\n\t\t}\n\n\t\t// 空白がある場合はユーザが区切りを指定しているものと見なす\n\t\tconst aR = ruby.split(' ');\n\t\tconst lenR = aR.length;\n\t\tconst len_max = lenR > len ?lenR :len;\n\t\tfor (let i=0; i<len_max; ++i) this.#putCh(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < len ? a[i]! : '',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < lenR ? decodeURIComponent(aR[i]!) : ''\n\t\t);\n\t}\n\n}\n"],"names":["RubySpliter","#sesame","hArg","#putCh","putCh","#REG_RUBY","ce","text","groups","ruby","kan_ruby","kan","txt","str","v","a","len","rb_ses","s","aR","lenR","len_max","i"],"mappings":"AAcO,MAAMA,EAAY;AAAA,EACxB,OAAOC,KAAW;AAAA,EAClB,OAAO,QAAQC,GAAY;AAAC,IAAIA,EAAK,WAAQF,EAAYC,KAAUC,EAAK;AAAA,EAAM;AAAA,EAC9E,OAAO,YAAY;AAAC,WAAOF,EAAYC;AAAA,EAAO;AAAA,EAE9C,OAAO,UAAU;AAAC,IAAAD,EAAYC,KAAU;AAAA,EAAG;AAAA,EAE3CE,KAAmB,MAAK;AAAA,EAAc;AAAA,EACtC,KAAKC,GAAgB;AAAC,SAAKD,KAASC;AAAA,EAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBzC,OAAOC;AAAA,EACP,OAAO,UAAUC,GAAY;AAa5B,IAAAN,EAAYK,KAAY,IAAI;AAAA,OAC1BC,IAAI,WAAWA,CAAE,UAAS,MAC3B;AAAA,MAOA;AAAA,IAAA;AAAA,EAEF;AAAA,EAEA,OAAOC,GAAc;AACpB,eAAW,EAAC,QAAAC,OAAWD,EAAK,SAASP,EAAYK,EAAS,GAAG;AAC5D,UAAI,CAAEG,EAAQ;AACd,YAAM,EAAC,MAAAC,GAAM,UAAAC,GAAU,KAAAC,IAAI,IAAI,IAAAL,GAAI,KAAAM,IAAI,IAAI,KAAAC,IAAI,GAAA,IAAML;AACrD,UAAIC,GAAM;AAAC,aAAK,SAAS,mBAAmBI,CAAG,GAAGJ,CAAI;AAAG;AAAA,MAAQ;AAEjE,UAAIC,GAAU;AAAC,aAAK,SAASC,GAAKD,CAAQ;AAAG;AAAA,MAAQ;AACrD,UAAIJ,GAAI;AAAC,aAAKH,GAAOG,EAAG,MAAM,CAAC,GAAG,EAAE;AAAG;AAAA,MAAQ;AAE/C,iBAAWQ,KAAK,MAAM,KAAKF,CAAG,EAAG,MAAKT,GAAOW,GAAG,EAAE;AAAA,IAEnD;AAAA,EACD;AAAA,EAEA,SAASP,GAAcE,GAAc;AAEpC,QAAI,UAAU,KAAKA,CAAI,GAAG;AAAC,WAAKN,GAAOI,GAAME,CAAI;AAAG;AAAA,IAAM;AAE1D,UAAMM,IAAc,MAAM,KAAKR,CAAI,GAC7BS,IAAMD,EAAE;AACd,QAAI,SAAS,KAAKN,CAAI,GAAG;AACxB,YAAMQ,IAAS,aAAYR,MAAS,MAAKT,EAAYC,KAASQ,EAAK,OAAO,CAAC;AAC3E,iBAAWS,KAAKH,EAAG,MAAKZ,GAAOe,GAAGD,CAAM;AACxC;AAAA,IACD;AAGA,QAAID,MAAQ,KAAK,CAAEP,EAAK,SAAS,GAAG,GAAG;AACtC,WAAKN,GAAOI,GAAM,mBAAmBE,CAAI,CAAC;AAC1C;AAAA,IACD;AAGA,UAAMU,IAAKV,EAAK,MAAM,GAAG,GACnBW,IAAOD,EAAG,QACVE,IAAUD,IAAOJ,IAAKI,IAAMJ;AAClC,aAASM,IAAE,GAAGA,IAAED,GAAS,EAAEC,EAAG,MAAKnB;AAAA;AAAA,MAElCmB,IAAIN,IAAMD,EAAEO,CAAC,IAAK;AAAA;AAAA,MAElBA,IAAIF,IAAO,mBAAmBD,EAAGG,CAAC,CAAE,IAAI;AAAA,IAAA;AAAA,EAE1C;AAED;"}
1
+ {"version":3,"file":"RubySpliter.js","names":["#sesame","#putCh","#REG_RUBY","a: string[]"],"sources":["../src/sn/RubySpliter.ts"],"sourcesContent":["/* eslint-disable no-irregular-whitespace */\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 type {TArg} from './Grammar';\nimport type {T_PutCh} from './CmnInterface';\n\nexport type IAutoPage = (idx: number, str: string) => void;\n\n\nexport class RubySpliter {\n\tstatic\t#sesame\t\t= 'ヽ';\n\tstatic\tsetting(hArg: TArg) {if (hArg.sesame) RubySpliter.#sesame = hArg.sesame}\n\tstatic\tgetSesame() {return RubySpliter.#sesame}\n\n\tstatic\tdestroy() {RubySpliter.#sesame = 'ヽ'}\n\n\t#putCh\t: T_PutCh\t= ()=> { /* empty */ };\n\tinit(putCh: T_PutCh) {this.#putCh = putCh}\n\n/*\n\t\t★Unicodeで「漢字」の正規表現 – ものかの http://tama-san.com/kanji-regex/\n\t\t2E80..2FDF\tCJK部首補助+康熙部首\n\t\t3005\t\t々(漢字の踊り字)\n\t\t3007\t\t〇(漢数字のゼロ)\n\t\t303B\t\t〻(漢字の踊り字)\n\t\t3400..4DBF\t\tCJK統合漢字拡張A\n\t\t4E00..9FFF\t\tCJK統合漢字\n\t\tF900..FAFF\t\tCJK互換漢字\n\t\t20000..2FFFF\tCJK統合漢字拡張B〜F+CJK互換漢字追加+念のためU+2FFFFまで\n\n\t\t[\\x{2E80}-\\x{2FDF}々〇〻\\x{3400}-\\x{4DBF}\\x{4E00}-\\x{9FFF}\\x{F900}-\\x{FAFF}\\x{20000}-\\x{2FFFF}]\n\t\t[\\u2E80-\\u2FDF々〇〻\\u3400-\\u4DBF\\u4E00-\\u9FFF\\uF900-\\uFAFF\\u20000-\\u2FFFF]\n\t\t[⺀-⿟々〇〻㐀-䶿一-鿿豈-﫿\\u20000-\\u2FFFF]\t\t// 含まれない文字がある\n\t\t[⺀-⿟々〇〻㐀-鿿豈-﫿\\u20000-\\u2FFFF]\t\t\t// ヽ--30FD が変に引っかかる。多分\\u2000-\\u2FFF解釈\n\t\t\\\\u{20000}-\\\\u{2FFFF}\t// 五桁だとエラー\n\n\t\t【2022/10/03】ruby正規表現のUnicode プロパティ(とPOSIX文字クラス) - Qiita https://qiita.com/Takayuki_Nakano/items/8d38beaddb84b488d683\n\t\t\t> このHiraganaプロパティ、長音記号は含まれていません。\n\t\t\t> \\p{Han}…簡体字や繁体字、韓国語の漢字…ベトナム語の漢字にもマッチ\n\n\t\t・Unicode文字一覧表 - instant tools https://tools.m-bsys.com/ex/unicode_table.php\n*/\n\tstatic\t#REG_RUBY\t: RegExp;\n\tstatic\tsetEscape(ce: string) {\n\t\t// 830 match 11293 step(1.7ms) PCRE2 https://regex101.com/r/BBrQtC/1\n\t\t/*\n(?<txt4>\\\\\\S)\n|\t|(?<str>[^《\\n]+)《(?<ruby>[^》\\n]+)》\n|\t(?: (?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+ [ぁ-ヿ]* | [^ |《》\\n])\n\t\t《(?<kan_ruby>[^》\\n]+)》)\n|\t(?<txt>\n\t[\\xD800-\\xDBFF][\\xDC00-\\xDFFF]\n|\t[^|《》]+?\n|\t.)\n\t\t*/\n\t\t// (new RegExp(\"~\")) の場合は、バックスラッシュは2つ必要\n\t\tRubySpliter.#REG_RUBY = new RegExp(\n\t\t\t(ce ?`(?<ce>\\\\${ce}\\\\S)|` :'')+\n\t\t\t'|(?<str>[^《\\\\n]+)《(?<ruby>[^》\\\\n]+)》'+\n\t\t\t'|(?:(?<kan>[⺀-⿟々〇〻㐀-鿿豈-﫿]+[ぁ-ヿ]*|[^ |《》\\\\n])'+\n\t\t\t'《(?<kan_ruby>[^》\\\\n]+)》)'+\n\t\t\t'|(?<txt>'+\n\t\t\t'[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]'+\t// 上位 + 下位サロゲート\n\t\t\t'|[^|《》]+?'+\t\t// 不要だが細切れにしないほうが後々効率で有利\n\t\t\t'|.)',\n\t\t\t'gs'\n\t\t);\n\t}\n\n\tputTxt(text: string) {\n\t\tfor (const {groups} of text.matchAll(RubySpliter.#REG_RUBY)) {\n\t\t\tif (! groups) break;\n\t\t\tconst {ruby, kan_ruby, kan='', ce, txt='', str=''} = groups;\n\t\t\tif (ruby) {this.putTxtRb(decodeURIComponent(str), ruby); continue}\n\n\t\t\tif (kan_ruby) {this.putTxtRb(kan, kan_ruby); continue}\n\t\t\tif (ce) {this.#putCh(ce.slice(1), ''); continue}\n\n\t\t\tfor (const v of Array.from(txt)) this.#putCh(v, '');\n\t\t\t\t// txt.split('')や [...txt] はサロゲートペアで問題\n\t\t}\n\t}\n\n\tputTxtRb(text: string, ruby: string) {\t// テスト用にpublic\n\t\t// 自動区切りを行わない(内部的 json文法)\n\t\tif (/^\\w+|{\"/.test(ruby)) {this.#putCh(text, ruby); return}\n\n\t\tconst a: string[] = Array.from(text);\n\t\tconst len = a.length;\n\t\tif (/^\\*.?$/.test(ruby)) {\t// 傍点文法\n\t\t\tconst rb_ses = 'center|'+ (ruby === '*' ?RubySpliter.#sesame :ruby.charAt(1));\n\t\t\tfor (const s of a) this.#putCh(s, rb_ses);\n\t\t\treturn;\n\t\t}\n\n\t\t// 自動区切りを行わない(単漢字など)\n\t\tif (len === 1 || ! ruby.includes(' ')) {\n\t\t\tthis.#putCh(text, decodeURIComponent(ruby));\n\t\t\treturn;\n\t\t}\n\n\t\t// 空白がある場合はユーザが区切りを指定しているものと見なす\n\t\tconst aR = ruby.split(' ');\n\t\tconst lenR = aR.length;\n\t\tconst len_max = lenR > len ?lenR :len;\n\t\tfor (let i=0; i<len_max; ++i) this.#putCh(\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < len ? a[i]! : '',\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\ti < lenR ? decodeURIComponent(aR[i]!) : ''\n\t\t);\n\t}\n\n}\n"],"mappings":"AAcA,IAAa,cAAb,MAAa,EAAY;CACxB,QAAA,IAAkB;CAClB,OAAO,QAAQ,GAAY;AAAC,EAAI,EAAK,WAAQ,GAAA,IAAsB,EAAK;;CACxE,OAAO,YAAY;AAAC,SAAO,GAAA;;CAE3B,OAAO,UAAU;AAAC,KAAA,IAAsB;;CAExC,WAAwB;CACxB,KAAK,GAAgB;AAAC,QAAA,IAAc;;CAyBpC,QAAA;CACA,OAAO,UAAU,GAAY;AAa5B,KAAA,IAA4B,QAC1B,IAAI,WAAW,EAAG,SAAQ,MAC3B,0JAOA,KACA;;CAGF,OAAO,GAAc;AACpB,OAAK,IAAM,EAAC,eAAW,EAAK,SAAS,GAAA,EAAsB,EAAE;AAC5D,OAAI,CAAE,EAAQ;GACd,IAAM,EAAC,SAAM,aAAU,SAAI,IAAI,OAAI,SAAI,IAAI,SAAI,OAAM;AACrD,OAAI,GAAM;AAAC,SAAK,SAAS,mBAAmB,EAAI,EAAE,EAAK;AAAE;;AAEzD,OAAI,GAAU;AAAC,SAAK,SAAS,GAAK,EAAS;AAAE;;AAC7C,OAAI,GAAI;AAAC,UAAA,EAAY,EAAG,MAAM,EAAE,EAAE,GAAG;AAAE;;AAEvC,QAAK,IAAM,KAAK,MAAM,KAAK,EAAI,CAAE,OAAA,EAAY,GAAG,GAAG;;;CAKrD,SAAS,GAAc,GAAc;AAEpC,MAAI,UAAU,KAAK,EAAK,EAAE;AAAC,SAAA,EAAY,GAAM,EAAK;AAAE;;EAEpD,IAAMG,IAAc,MAAM,KAAK,EAAK,EAC9B,IAAM,EAAE;AACd,MAAI,SAAS,KAAK,EAAK,EAAE;GACxB,IAAM,IAAS,aAAY,MAAS,MAAK,GAAA,IAAqB,EAAK,OAAO,EAAE;AAC5E,QAAK,IAAM,KAAK,EAAG,OAAA,EAAY,GAAG,EAAO;AACzC;;AAID,MAAI,MAAQ,KAAK,CAAE,EAAK,SAAS,IAAI,EAAE;AACtC,SAAA,EAAY,GAAM,mBAAmB,EAAK,CAAC;AAC3C;;EAID,IAAM,IAAK,EAAK,MAAM,IAAI,EACpB,IAAO,EAAG,QACV,IAAU,IAAO,IAAK,IAAM;AAClC,OAAK,IAAI,IAAE,GAAG,IAAE,GAAS,EAAE,EAAG,OAAA,EAE7B,IAAI,IAAM,EAAE,KAAM,IAElB,IAAI,IAAO,mBAAmB,EAAG,GAAI,GAAG,GACxC"}