yomitan-core 1.0.2 → 1.2.0

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 (198) hide show
  1. package/README.md +8 -1
  2. package/dist/anki-connect-B2UXtiUS.js +6 -0
  3. package/dist/anki-connect-BXvjYYm0.cjs +6 -0
  4. package/dist/{anki-connect-B_YpChhu.cjs → anki-connect-DGx7Gr0H.cjs} +3 -3
  5. package/dist/{anki-connect-B_YpChhu.cjs.map → anki-connect-DGx7Gr0H.cjs.map} +1 -1
  6. package/dist/{anki-connect-697E04LF.js → anki-connect-Dau8nAXZ.js} +3 -3
  7. package/dist/{anki-connect-697E04LF.js.map → anki-connect-Dau8nAXZ.js.map} +1 -1
  8. package/dist/anki.cjs +6 -6
  9. package/dist/anki.d.cts.map +1 -1
  10. package/dist/anki.d.ts +2 -2
  11. package/dist/anki.d.ts.map +1 -1
  12. package/dist/anki.js +6 -6
  13. package/dist/{audio-ZuaDkaUZ.d.ts → audio-DN-FhZ5k.d.ts} +1 -1
  14. package/dist/{audio-ZuaDkaUZ.d.ts.map → audio-DN-FhZ5k.d.ts.map} +1 -1
  15. package/dist/{audio-url-generator-CgTMaTM2.js → audio-url-generator-C7mkxYeq.js} +2 -2
  16. package/dist/{audio-url-generator-CfXaxZ47.cjs → audio-url-generator-CZECihX-.cjs} +2 -2
  17. package/dist/{audio-url-generator-C23AXVj1.cjs → audio-url-generator-CorFRyBU.cjs} +2 -2
  18. package/dist/{audio-url-generator-C23AXVj1.cjs.map → audio-url-generator-CorFRyBU.cjs.map} +1 -1
  19. package/dist/{audio-url-generator-DykdzZJu.js → audio-url-generator-_6Qk0i3T.js} +2 -2
  20. package/dist/{audio-url-generator-DykdzZJu.js.map → audio-url-generator-_6Qk0i3T.js.map} +1 -1
  21. package/dist/audio.cjs +2 -2
  22. package/dist/audio.d.ts +2 -2
  23. package/dist/audio.js +2 -2
  24. package/dist/{batch-processor-CXZZhx5t.js → batch-processor-BR-gB3H3.js} +1 -1
  25. package/dist/{batch-processor-CXZZhx5t.js.map → batch-processor-BR-gB3H3.js.map} +1 -1
  26. package/dist/batch-processor-CSF1acTw.cjs +3 -0
  27. package/dist/{batch-processor-C8pSzqRE.cjs → batch-processor-DFqM_L-_.cjs} +1 -1
  28. package/dist/{batch-processor-C8pSzqRE.cjs.map → batch-processor-DFqM_L-_.cjs.map} +1 -1
  29. package/dist/batch-processor-Quo9jUyf.js +3 -0
  30. package/dist/{core-C_0QjRBI.d.ts → core-CRjMTF7c.d.ts} +1 -1
  31. package/dist/{core-C_0QjRBI.d.ts.map → core-CRjMTF7c.d.ts.map} +1 -1
  32. package/dist/database.d.ts +3 -3
  33. package/dist/debug-I2dyAd2e.cjs +51 -0
  34. package/dist/debug-I2dyAd2e.cjs.map +1 -0
  35. package/dist/debug-hF63AFkq.js +38 -0
  36. package/dist/debug-hF63AFkq.js.map +1 -0
  37. package/dist/{dictionary-CfzEFbXZ.d.ts → dictionary-DdxghSJP.d.ts} +1 -1
  38. package/dist/{dictionary-CfzEFbXZ.d.ts.map → dictionary-DdxghSJP.d.ts.map} +1 -1
  39. package/dist/{dictionary-data-util-BY_72f3u.cjs → dictionary-data-util-DmLJMtGc.cjs} +1 -1
  40. package/dist/{dictionary-data-util-BY_72f3u.cjs.map → dictionary-data-util-DmLJMtGc.cjs.map} +1 -1
  41. package/dist/{dictionary-data-util-CKDT7n2t.js → dictionary-data-util-gUUD9ElK.js} +1 -1
  42. package/dist/{dictionary-data-util-CKDT7n2t.js.map → dictionary-data-util-gUUD9ElK.js.map} +1 -1
  43. package/dist/{dictionary-database-BRAqOF_M.d.ts → dictionary-database-D0lvK2n3.d.ts} +2 -2
  44. package/dist/{dictionary-database-BRAqOF_M.d.ts.map → dictionary-database-D0lvK2n3.d.ts.map} +1 -1
  45. package/dist/{dictionary-importer-C7mNL5CJ.js → dictionary-importer-BPlLeF5R.js} +5 -5
  46. package/dist/{dictionary-importer-C7mNL5CJ.js.map → dictionary-importer-BPlLeF5R.js.map} +1 -1
  47. package/dist/{dictionary-importer-CbMwsqEX.cjs → dictionary-importer-BvgP1Fs9.cjs} +5 -5
  48. package/dist/{dictionary-importer-CbMwsqEX.cjs.map → dictionary-importer-BvgP1Fs9.cjs.map} +1 -1
  49. package/dist/{dictionary-importer-C-AlWsIN.d.ts → dictionary-importer-CDbCAbwG.d.ts} +2 -2
  50. package/dist/{dictionary-importer-C-AlWsIN.d.ts.map → dictionary-importer-CDbCAbwG.d.ts.map} +1 -1
  51. package/dist/dictionary-importer-DEMVqTjR.js +8 -0
  52. package/dist/dictionary-importer-Luz6usUQ.cjs +8 -0
  53. package/dist/{dictionary-update-checker-DE2ymYcs.js → dictionary-update-checker-CLbtQ48X.js} +2 -2
  54. package/dist/{dictionary-update-checker-DE2ymYcs.js.map → dictionary-update-checker-CLbtQ48X.js.map} +1 -1
  55. package/dist/dictionary-update-checker-CsS7MxK_.js +4 -0
  56. package/dist/{dictionary-update-checker-CU3q0aoP.cjs → dictionary-update-checker-DgjPsURI.cjs} +2 -2
  57. package/dist/{dictionary-update-checker-xIwF77-R.cjs → dictionary-update-checker-DmiIUoKw.cjs} +2 -2
  58. package/dist/{dictionary-update-checker-xIwF77-R.cjs.map → dictionary-update-checker-DmiIUoKw.cjs.map} +1 -1
  59. package/dist/{display-generator-vjbG05fn.js → display-generator-BAEJDrHT.js} +9 -7
  60. package/dist/display-generator-BAEJDrHT.js.map +1 -0
  61. package/dist/display-generator-D5fkD0JI.cjs +10 -0
  62. package/dist/display-generator-DZLMaVuP.js +10 -0
  63. package/dist/{display-generator-BhV_MOD1.cjs → display-generator-D_0chBzj.cjs} +9 -7
  64. package/dist/display-generator-D_0chBzj.cjs.map +1 -0
  65. package/dist/{errors-ZI2FcGUl.cjs → errors-0pIJI6N2.cjs} +1 -1
  66. package/dist/{errors-ZI2FcGUl.cjs.map → errors-0pIJI6N2.cjs.map} +1 -1
  67. package/dist/{errors-D2JfYV-C.js → errors-DvKlMRXC.js} +1 -1
  68. package/dist/{errors-D2JfYV-C.js.map → errors-DvKlMRXC.js.map} +1 -1
  69. package/dist/frequency-ranking-BXjfhhUQ.js +3 -0
  70. package/dist/{frequency-ranking-DmNIoxut.cjs → frequency-ranking-Cx1kkIrw.cjs} +1 -1
  71. package/dist/{frequency-ranking-DzbdZghE.js → frequency-ranking-DEJMTMdg.js} +1 -1
  72. package/dist/{frequency-ranking-DzbdZghE.js.map → frequency-ranking-DEJMTMdg.js.map} +1 -1
  73. package/dist/{frequency-ranking-Dm6xCMkY.cjs → frequency-ranking-DVYxTXN-.cjs} +1 -1
  74. package/dist/{frequency-ranking-Dm6xCMkY.cjs.map → frequency-ranking-DVYxTXN-.cjs.map} +1 -1
  75. package/dist/furigana-MU_j_m5i.cjs +5 -0
  76. package/dist/{furigana-BnY7-dJ-.cjs → furigana-SZuBaUyl.cjs} +2 -2
  77. package/dist/{furigana-BnY7-dJ-.cjs.map → furigana-SZuBaUyl.cjs.map} +1 -1
  78. package/dist/furigana-ZCs0Xs0b.js +5 -0
  79. package/dist/{furigana-CI6LUA-6.js → furigana-h18vaQ7a.js} +2 -2
  80. package/dist/{furigana-CI6LUA-6.js.map → furigana-h18vaQ7a.js.map} +1 -1
  81. package/dist/import.cjs +6 -6
  82. package/dist/import.d.ts +3 -3
  83. package/dist/import.js +6 -6
  84. package/dist/index.cjs +44 -18
  85. package/dist/index.cjs.map +1 -1
  86. package/dist/index.d.cts +3 -3
  87. package/dist/index.d.cts.map +1 -1
  88. package/dist/index.d.ts +10 -10
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +44 -18
  91. package/dist/index.js.map +1 -1
  92. package/dist/{japanese-BVV1Ctk-.cjs → japanese-C83fmEfb.cjs} +1 -1
  93. package/dist/{japanese-BVV1Ctk-.cjs.map → japanese-C83fmEfb.cjs.map} +1 -1
  94. package/dist/{japanese-DhmmW35J.js → japanese-OKEGf_i4.js} +2 -2
  95. package/dist/{japanese-DhmmW35J.js.map → japanese-OKEGf_i4.js.map} +1 -1
  96. package/dist/{json-CyQBn52D.cjs → json-Cdj6aIOQ.cjs} +1 -1
  97. package/dist/{json-CyQBn52D.cjs.map → json-Cdj6aIOQ.cjs.map} +1 -1
  98. package/dist/{json-DTq_IXXF.js → json-rIgOFqVY.js} +1 -1
  99. package/dist/{json-DTq_IXXF.js.map → json-rIgOFqVY.js.map} +1 -1
  100. package/dist/{language-DFFp_7nc.d.ts → language-DMwuc2-C.d.ts} +1 -1
  101. package/dist/{language-DFFp_7nc.d.ts.map → language-DMwuc2-C.d.ts.map} +1 -1
  102. package/dist/language.cjs +12 -12
  103. package/dist/language.d.cts +41 -3
  104. package/dist/language.d.cts.map +1 -1
  105. package/dist/language.d.ts +44 -6
  106. package/dist/language.d.ts.map +1 -1
  107. package/dist/language.js +5 -5
  108. package/dist/lookup.cjs +7 -6
  109. package/dist/lookup.d.cts +5 -78
  110. package/dist/lookup.d.cts.map +1 -1
  111. package/dist/lookup.d.ts +8 -81
  112. package/dist/lookup.d.ts.map +1 -1
  113. package/dist/lookup.js +7 -6
  114. package/dist/{media-loader-CMEuD0fn.js → media-loader-C1WZVVaA.js} +1 -1
  115. package/dist/{media-loader-CMEuD0fn.js.map → media-loader-C1WZVVaA.js.map} +1 -1
  116. package/dist/media-loader-CWNb22gc.cjs +3 -0
  117. package/dist/media-loader-CrQnDnSp.js +3 -0
  118. package/dist/{media-loader-DS2ZXpSI.cjs → media-loader-RE32nGs3.cjs} +1 -1
  119. package/dist/{media-loader-DS2ZXpSI.cjs.map → media-loader-RE32nGs3.cjs.map} +1 -1
  120. package/dist/{multi-language-transformer-CjLO0S8V.d.ts → multi-language-transformer-CFu0CVWY.d.ts} +3 -3
  121. package/dist/{multi-language-transformer-CjLO0S8V.d.ts.map → multi-language-transformer-CFu0CVWY.d.ts.map} +1 -1
  122. package/dist/multi-language-transformer-Dk8S4W6j.js +12503 -0
  123. package/dist/multi-language-transformer-Dk8S4W6j.js.map +1 -0
  124. package/dist/{multi-language-transformer-B2133Zg_.cjs → multi-language-transformer-N66Mmb2E.cjs} +9614 -5
  125. package/dist/multi-language-transformer-N66Mmb2E.cjs.map +1 -0
  126. package/dist/{pronunciation-generator-cNtAQi5s.js → pronunciation-generator-BXcwS3By.js} +2 -2
  127. package/dist/{pronunciation-generator-cNtAQi5s.js.map → pronunciation-generator-BXcwS3By.js.map} +1 -1
  128. package/dist/{pronunciation-generator-CPwnr43z.cjs → pronunciation-generator-CP1kjYje.cjs} +1 -1
  129. package/dist/{pronunciation-generator-B8y__W7I.cjs → pronunciation-generator-CeC3LFPU.cjs} +1 -1
  130. package/dist/{pronunciation-generator-B8y__W7I.cjs.map → pronunciation-generator-CeC3LFPU.cjs.map} +1 -1
  131. package/dist/{pronunciation-generator-BvTbUlOy.js → pronunciation-generator-I1xpdJu0.js} +1 -1
  132. package/dist/render.cjs +96 -8
  133. package/dist/render.cjs.map +1 -1
  134. package/dist/render.d.cts +33 -3
  135. package/dist/render.d.cts.map +1 -1
  136. package/dist/render.d.ts +35 -5
  137. package/dist/render.d.ts.map +1 -1
  138. package/dist/render.js +95 -9
  139. package/dist/render.js.map +1 -1
  140. package/dist/{sentence-parser-DUQJ3cTT.cjs → sentence-parser-8i1Y_OGS.cjs} +74 -46
  141. package/dist/sentence-parser-8i1Y_OGS.cjs.map +1 -0
  142. package/dist/{translator-TiTDVbmS.d.cts → sentence-parser-BQpu2oSA.d.cts} +80 -4
  143. package/dist/sentence-parser-BQpu2oSA.d.cts.map +1 -0
  144. package/dist/{sentence-parser-sx7y6Oyh.js → sentence-parser-CXDs4R_c.js} +74 -46
  145. package/dist/sentence-parser-CXDs4R_c.js.map +1 -0
  146. package/dist/{translator-CYvGmODX.d.ts → sentence-parser-CmsHUc_p.d.ts} +81 -5
  147. package/dist/sentence-parser-CmsHUc_p.d.ts.map +1 -0
  148. package/dist/sentence-parser-DQccqSpq.cjs +6 -0
  149. package/dist/sentence-parser-DsleseSI.js +6 -0
  150. package/dist/structured-content-generator-BhEkwa0T.js +4 -0
  151. package/dist/{structured-content-generator-C5Hhaurz.cjs → structured-content-generator-CokLKgrb.cjs} +2 -2
  152. package/dist/{structured-content-generator-C5Hhaurz.cjs.map → structured-content-generator-CokLKgrb.cjs.map} +1 -1
  153. package/dist/{structured-content-generator-D48bLhPA.cjs → structured-content-generator-_z5dJECG.cjs} +2 -2
  154. package/dist/{structured-content-generator-aJieXElq.js → structured-content-generator-gnjtdBcC.js} +2 -2
  155. package/dist/{structured-content-generator-aJieXElq.js.map → structured-content-generator-gnjtdBcC.js.map} +1 -1
  156. package/dist/{text-utilities-CFDC9Bkr.cjs → text-utilities-CTsN1Bq8.cjs} +1 -1
  157. package/dist/{text-utilities-CFDC9Bkr.cjs.map → text-utilities-CTsN1Bq8.cjs.map} +1 -1
  158. package/dist/{text-utilities-D5eno9GK.js → text-utilities-DjLdStjv.js} +1 -1
  159. package/dist/{text-utilities-D5eno9GK.js.map → text-utilities-DjLdStjv.js.map} +1 -1
  160. package/dist/translator-BGI37WRC.js +7 -0
  161. package/dist/translator-Cd1ECBM1.cjs +7 -0
  162. package/dist/{translator-B1uTusjx.cjs → translator-ClzybVmi.cjs} +2 -2
  163. package/dist/{translator-B1uTusjx.cjs.map → translator-ClzybVmi.cjs.map} +1 -1
  164. package/dist/{translator-CrDE1UJW.js → translator-jFVzLjEs.js} +2 -2
  165. package/dist/{translator-CrDE1UJW.js.map → translator-jFVzLjEs.js.map} +1 -1
  166. package/package.json +1 -1
  167. package/dist/anki-connect-D-02BbHi.cjs +0 -6
  168. package/dist/anki-connect-Vn-cnxs8.js +0 -6
  169. package/dist/batch-processor-DItpL6Pp.js +0 -3
  170. package/dist/batch-processor-fiLvFS2_.cjs +0 -3
  171. package/dist/dictionary-importer-B9M3SD2y.js +0 -8
  172. package/dist/dictionary-importer-DnR8Bsai.cjs +0 -8
  173. package/dist/dictionary-update-checker-Cnjz4tQD.js +0 -4
  174. package/dist/display-generator-BhV_MOD1.cjs.map +0 -1
  175. package/dist/display-generator-Cn4vCiSI.js +0 -10
  176. package/dist/display-generator-G2e03o0R.cjs +0 -10
  177. package/dist/display-generator-vjbG05fn.js.map +0 -1
  178. package/dist/frequency-ranking-B-kvnxro.js +0 -3
  179. package/dist/furigana-cpPhFnBv.cjs +0 -5
  180. package/dist/furigana-kZjqnnFC.js +0 -5
  181. package/dist/japanese-DdsS8rT1.d.ts +0 -41
  182. package/dist/japanese-DdsS8rT1.d.ts.map +0 -1
  183. package/dist/japanese-DgmP3i76.d.cts +0 -41
  184. package/dist/japanese-DgmP3i76.d.cts.map +0 -1
  185. package/dist/media-loader-BBTESZXn.cjs +0 -3
  186. package/dist/media-loader-CNKoAjQs.js +0 -3
  187. package/dist/multi-language-transformer-B2133Zg_.cjs.map +0 -1
  188. package/dist/multi-language-transformer-BkwMTV2g.js +0 -2893
  189. package/dist/multi-language-transformer-BkwMTV2g.js.map +0 -1
  190. package/dist/sentence-parser-B-gM8mKk.js +0 -5
  191. package/dist/sentence-parser-Cp3cm_QU.cjs +0 -5
  192. package/dist/sentence-parser-DUQJ3cTT.cjs.map +0 -1
  193. package/dist/sentence-parser-sx7y6Oyh.js.map +0 -1
  194. package/dist/structured-content-generator-Dww8IT7Y.js +0 -4
  195. package/dist/translator-BiTHo9Nm.js +0 -7
  196. package/dist/translator-CYvGmODX.d.ts.map +0 -1
  197. package/dist/translator-TiTDVbmS.d.cts.map +0 -1
  198. package/dist/translator-Y7Haj_qJ.cjs +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentence-parser-DUQJ3cTT.cjs","names":["translator: Translator","text: string","language: string","options: SentenceParserOptions","results: ParsedLine[]","line: string","enabledDictionaryMap: Map<string, FindTermDictionary>","scanLength: number","result: ParsedSegment[]","previousUngroupedSegment: ParsedSegment | null","segments: ParsedSegment[]","originalTextLength","source: string","dictionaryEntries: TermDictionaryEntry[]","trimmed: TermDictionaryEntry[]","headwords: TermHeadword[]","inputMap: Map<string, SentenceParserDictionaryInput>"],"sources":["../src/lookup/sentence-parser.ts"],"sourcesContent":["/*\n * Copyright (C) 2023-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\nimport { distributeFuriganaInflected, isCodePointJapanese } from '../language/ja/japanese';\nimport type { FuriganaSegment } from '../language/ja/japanese';\nimport type { TermDictionaryEntry, TermHeadword } from '../types/dictionary';\nimport type { FindTermDictionary, FindTermsTextReplacements, SearchResolution } from '../types/translation';\nimport type { Translator } from './translator';\n\nexport interface ParsedSegment {\n /** The surface text of this segment. */\n text: string;\n /** The reading (furigana) for this segment, or empty string if no reading. */\n reading: string;\n /** The dictionary form (headword term) matched for this segment, or the surface text if no match. */\n term: string;\n /** The dictionary entries found for this segment. */\n entries: TermDictionaryEntry[];\n /** Furigana distribution for this segment. */\n furigana: FuriganaSegment[];\n}\n\nexport interface ParsedLine {\n /** The parsed segments for this line. */\n segments: ParsedSegment[];\n}\n\nexport interface SentenceParserDictionaryInput {\n index: number;\n priority?: number;\n alias?: string;\n allowSecondarySearches?: boolean;\n partsOfSpeechFilter?: boolean;\n useDeinflections?: boolean;\n}\n\nexport interface SentenceParserOptions {\n /** The enabled dictionary map for lookups. */\n enabledDictionaryMap: Map<string, SentenceParserDictionaryInput>;\n /** Window size used by scanning parser. Defaults to 20. */\n scanLength?: number;\n /** Backward compatibility alias for scanLength. */\n maxLength?: number;\n /** Search resolution for translator. */\n searchResolution?: SearchResolution;\n /** Whether to remove non-Japanese characters in lookups. */\n removeNonJapaneseCharacters?: boolean;\n /** Whether to apply deinflection. */\n deinflect?: boolean;\n /** Text replacements forwarded to translator. */\n textReplacements?: FindTermsTextReplacements;\n}\n\ninterface ParseScanCacheEntry {\n originalTextLength: number;\n segments: ParsedSegment[];\n}\n\n/**\n * Parses text into segments with dictionary lookups using the same\n * scanning-parser model as Yomitan extension (non-MeCab path).\n */\nexport class SentenceParser {\n private _translator: Translator;\n\n constructor(translator: Translator) {\n this._translator = translator;\n }\n\n /**\n * Parses the given text into lines of parsed segments.\n */\n async parseText(text: string, language: string, options: SentenceParserOptions): Promise<ParsedLine[]> {\n const scanLength = options.scanLength ?? options.maxLength ?? 20;\n const enabledDictionaryMap = this._buildFindTermDictionaryMap(options.enabledDictionaryMap);\n\n const lines = text.split('\\n');\n const results: ParsedLine[] = [];\n\n for (const line of lines) {\n const segments = await this._parseLine(line, language, enabledDictionaryMap, scanLength, options);\n results.push({ segments });\n }\n\n return results;\n }\n\n /**\n * Parses a single line using extension-equivalent scanning parser semantics.\n */\n private async _parseLine(\n line: string,\n language: string,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n scanLength: number,\n options: SentenceParserOptions,\n ): Promise<ParsedSegment[]> {\n const findTermsOptions = this._createFindTermsOptions(language, enabledDictionaryMap, options);\n const cache = new Map<string, ParseScanCacheEntry>();\n\n const result: ParsedSegment[] = [];\n let previousUngroupedSegment: ParsedSegment | null = null;\n\n let i = 0;\n const ii = line.length;\n while (i < ii) {\n const codePoint = line.codePointAt(i) as number;\n const character = String.fromCodePoint(codePoint);\n const substring = line.substring(i, i + scanLength);\n\n let cached = cache.get(substring);\n if (!cached) {\n const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(\n 'simple',\n substring,\n findTermsOptions,\n );\n\n let segments: ParsedSegment[] = [];\n\n if (\n dictionaryEntries.length > 0 &&\n originalTextLength > 0 &&\n (originalTextLength !== character.length || isCodePointJapanese(codePoint))\n ) {\n const source = substring.substring(0, originalTextLength);\n segments = this._createMatchedSegments(source, dictionaryEntries);\n }\n\n cached = {\n originalTextLength,\n segments,\n };\n cache.set(substring, cached);\n }\n\n const { originalTextLength, segments } = cached;\n if (segments.length > 0) {\n previousUngroupedSegment = null;\n result.push(...segments);\n i += Math.max(1, originalTextLength);\n } else {\n if (previousUngroupedSegment === null) {\n previousUngroupedSegment = {\n text: character,\n reading: '',\n term: character,\n entries: [],\n furigana: [{ text: character, reading: '' }],\n };\n result.push(previousUngroupedSegment);\n } else {\n previousUngroupedSegment.text += character;\n previousUngroupedSegment.term = previousUngroupedSegment.text;\n previousUngroupedSegment.furigana = [{ text: previousUngroupedSegment.text, reading: '' }];\n }\n i += character.length;\n }\n }\n\n return result;\n }\n\n private _createMatchedSegments(source: string, dictionaryEntries: TermDictionaryEntry[]): ParsedSegment[] {\n if (dictionaryEntries.length === 0) {\n return [];\n }\n\n const firstEntry = dictionaryEntries[0];\n const firstHeadword = firstEntry.headwords[0];\n if (!firstHeadword) {\n return [];\n }\n\n const reading = firstHeadword.reading ?? '';\n const term = firstHeadword.term ?? source;\n\n const furigana = distributeFuriganaInflected(term, reading, source);\n const filteredEntries = this._trimEntriesForSource(dictionaryEntries, source);\n\n return [\n {\n text: source,\n reading,\n term,\n entries: filteredEntries,\n furigana,\n },\n ];\n }\n\n private _trimEntriesForSource(dictionaryEntries: TermDictionaryEntry[], source: string): TermDictionaryEntry[] {\n const trimmed: TermDictionaryEntry[] = [];\n\n for (const entry of dictionaryEntries) {\n const headwords: TermHeadword[] = [];\n for (const headword of entry.headwords) {\n const validSources = headword.sources.filter(\n (src) => src.originalText === source && src.isPrimary && src.matchType === 'exact',\n );\n\n if (validSources.length > 0) {\n headwords.push({ ...headword, sources: validSources });\n }\n }\n\n if (headwords.length > 0) {\n trimmed.push({ ...entry, headwords });\n }\n }\n\n return trimmed.length > 0 ? trimmed : dictionaryEntries;\n }\n\n /**\n * Builds a FindTermDictionary map from the input format.\n */\n private _buildFindTermDictionaryMap(\n inputMap: Map<string, SentenceParserDictionaryInput>,\n ): Map<string, FindTermDictionary> {\n const result = new Map<string, FindTermDictionary>();\n\n for (const [name, config] of inputMap.entries()) {\n result.set(name, {\n index: config.index,\n alias: config.alias ?? name,\n allowSecondarySearches: config.allowSecondarySearches ?? false,\n partsOfSpeechFilter: config.partsOfSpeechFilter ?? true,\n useDeinflections: config.useDeinflections ?? true,\n });\n }\n\n return result;\n }\n\n /**\n * Creates a FindTermsOptions object for scanning parser lookups.\n */\n private _createFindTermsOptions(\n language: string,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n options: SentenceParserOptions,\n ) {\n return {\n matchType: 'exact' as const,\n deinflect: options.deinflect ?? true,\n primaryReading: '',\n mainDictionary: '',\n sortFrequencyDictionary: null,\n sortFrequencyDictionaryOrder: 'descending' as const,\n removeNonJapaneseCharacters:\n options.removeNonJapaneseCharacters ??\n (language === 'ja' || language === 'zh' || language === 'yue' || language === 'ko'),\n textReplacements: options.textReplacements ?? [null],\n enabledDictionaryMap,\n excludeDictionaryDefinitions: null,\n searchResolution: options.searchResolution ?? ('letter' as const),\n language,\n };\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"sentence-parser-sx7y6Oyh.js","names":["translator: Translator","text: string","language: string","options: SentenceParserOptions","results: ParsedLine[]","line: string","enabledDictionaryMap: Map<string, FindTermDictionary>","scanLength: number","result: ParsedSegment[]","previousUngroupedSegment: ParsedSegment | null","segments: ParsedSegment[]","originalTextLength","source: string","dictionaryEntries: TermDictionaryEntry[]","trimmed: TermDictionaryEntry[]","headwords: TermHeadword[]","inputMap: Map<string, SentenceParserDictionaryInput>"],"sources":["../src/lookup/sentence-parser.ts"],"sourcesContent":["/*\n * Copyright (C) 2023-2025 Yomitan Authors\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see <https://www.gnu.org/licenses/>.\n */\n\nimport { distributeFuriganaInflected, isCodePointJapanese } from '../language/ja/japanese';\nimport type { FuriganaSegment } from '../language/ja/japanese';\nimport type { TermDictionaryEntry, TermHeadword } from '../types/dictionary';\nimport type { FindTermDictionary, FindTermsTextReplacements, SearchResolution } from '../types/translation';\nimport type { Translator } from './translator';\n\nexport interface ParsedSegment {\n /** The surface text of this segment. */\n text: string;\n /** The reading (furigana) for this segment, or empty string if no reading. */\n reading: string;\n /** The dictionary form (headword term) matched for this segment, or the surface text if no match. */\n term: string;\n /** The dictionary entries found for this segment. */\n entries: TermDictionaryEntry[];\n /** Furigana distribution for this segment. */\n furigana: FuriganaSegment[];\n}\n\nexport interface ParsedLine {\n /** The parsed segments for this line. */\n segments: ParsedSegment[];\n}\n\nexport interface SentenceParserDictionaryInput {\n index: number;\n priority?: number;\n alias?: string;\n allowSecondarySearches?: boolean;\n partsOfSpeechFilter?: boolean;\n useDeinflections?: boolean;\n}\n\nexport interface SentenceParserOptions {\n /** The enabled dictionary map for lookups. */\n enabledDictionaryMap: Map<string, SentenceParserDictionaryInput>;\n /** Window size used by scanning parser. Defaults to 20. */\n scanLength?: number;\n /** Backward compatibility alias for scanLength. */\n maxLength?: number;\n /** Search resolution for translator. */\n searchResolution?: SearchResolution;\n /** Whether to remove non-Japanese characters in lookups. */\n removeNonJapaneseCharacters?: boolean;\n /** Whether to apply deinflection. */\n deinflect?: boolean;\n /** Text replacements forwarded to translator. */\n textReplacements?: FindTermsTextReplacements;\n}\n\ninterface ParseScanCacheEntry {\n originalTextLength: number;\n segments: ParsedSegment[];\n}\n\n/**\n * Parses text into segments with dictionary lookups using the same\n * scanning-parser model as Yomitan extension (non-MeCab path).\n */\nexport class SentenceParser {\n private _translator: Translator;\n\n constructor(translator: Translator) {\n this._translator = translator;\n }\n\n /**\n * Parses the given text into lines of parsed segments.\n */\n async parseText(text: string, language: string, options: SentenceParserOptions): Promise<ParsedLine[]> {\n const scanLength = options.scanLength ?? options.maxLength ?? 20;\n const enabledDictionaryMap = this._buildFindTermDictionaryMap(options.enabledDictionaryMap);\n\n const lines = text.split('\\n');\n const results: ParsedLine[] = [];\n\n for (const line of lines) {\n const segments = await this._parseLine(line, language, enabledDictionaryMap, scanLength, options);\n results.push({ segments });\n }\n\n return results;\n }\n\n /**\n * Parses a single line using extension-equivalent scanning parser semantics.\n */\n private async _parseLine(\n line: string,\n language: string,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n scanLength: number,\n options: SentenceParserOptions,\n ): Promise<ParsedSegment[]> {\n const findTermsOptions = this._createFindTermsOptions(language, enabledDictionaryMap, options);\n const cache = new Map<string, ParseScanCacheEntry>();\n\n const result: ParsedSegment[] = [];\n let previousUngroupedSegment: ParsedSegment | null = null;\n\n let i = 0;\n const ii = line.length;\n while (i < ii) {\n const codePoint = line.codePointAt(i) as number;\n const character = String.fromCodePoint(codePoint);\n const substring = line.substring(i, i + scanLength);\n\n let cached = cache.get(substring);\n if (!cached) {\n const { dictionaryEntries, originalTextLength } = await this._translator.findTerms(\n 'simple',\n substring,\n findTermsOptions,\n );\n\n let segments: ParsedSegment[] = [];\n\n if (\n dictionaryEntries.length > 0 &&\n originalTextLength > 0 &&\n (originalTextLength !== character.length || isCodePointJapanese(codePoint))\n ) {\n const source = substring.substring(0, originalTextLength);\n segments = this._createMatchedSegments(source, dictionaryEntries);\n }\n\n cached = {\n originalTextLength,\n segments,\n };\n cache.set(substring, cached);\n }\n\n const { originalTextLength, segments } = cached;\n if (segments.length > 0) {\n previousUngroupedSegment = null;\n result.push(...segments);\n i += Math.max(1, originalTextLength);\n } else {\n if (previousUngroupedSegment === null) {\n previousUngroupedSegment = {\n text: character,\n reading: '',\n term: character,\n entries: [],\n furigana: [{ text: character, reading: '' }],\n };\n result.push(previousUngroupedSegment);\n } else {\n previousUngroupedSegment.text += character;\n previousUngroupedSegment.term = previousUngroupedSegment.text;\n previousUngroupedSegment.furigana = [{ text: previousUngroupedSegment.text, reading: '' }];\n }\n i += character.length;\n }\n }\n\n return result;\n }\n\n private _createMatchedSegments(source: string, dictionaryEntries: TermDictionaryEntry[]): ParsedSegment[] {\n if (dictionaryEntries.length === 0) {\n return [];\n }\n\n const firstEntry = dictionaryEntries[0];\n const firstHeadword = firstEntry.headwords[0];\n if (!firstHeadword) {\n return [];\n }\n\n const reading = firstHeadword.reading ?? '';\n const term = firstHeadword.term ?? source;\n\n const furigana = distributeFuriganaInflected(term, reading, source);\n const filteredEntries = this._trimEntriesForSource(dictionaryEntries, source);\n\n return [\n {\n text: source,\n reading,\n term,\n entries: filteredEntries,\n furigana,\n },\n ];\n }\n\n private _trimEntriesForSource(dictionaryEntries: TermDictionaryEntry[], source: string): TermDictionaryEntry[] {\n const trimmed: TermDictionaryEntry[] = [];\n\n for (const entry of dictionaryEntries) {\n const headwords: TermHeadword[] = [];\n for (const headword of entry.headwords) {\n const validSources = headword.sources.filter(\n (src) => src.originalText === source && src.isPrimary && src.matchType === 'exact',\n );\n\n if (validSources.length > 0) {\n headwords.push({ ...headword, sources: validSources });\n }\n }\n\n if (headwords.length > 0) {\n trimmed.push({ ...entry, headwords });\n }\n }\n\n return trimmed.length > 0 ? trimmed : dictionaryEntries;\n }\n\n /**\n * Builds a FindTermDictionary map from the input format.\n */\n private _buildFindTermDictionaryMap(\n inputMap: Map<string, SentenceParserDictionaryInput>,\n ): Map<string, FindTermDictionary> {\n const result = new Map<string, FindTermDictionary>();\n\n for (const [name, config] of inputMap.entries()) {\n result.set(name, {\n index: config.index,\n alias: config.alias ?? name,\n allowSecondarySearches: config.allowSecondarySearches ?? false,\n partsOfSpeechFilter: config.partsOfSpeechFilter ?? true,\n useDeinflections: config.useDeinflections ?? true,\n });\n }\n\n return result;\n }\n\n /**\n * Creates a FindTermsOptions object for scanning parser lookups.\n */\n private _createFindTermsOptions(\n language: string,\n enabledDictionaryMap: Map<string, FindTermDictionary>,\n options: SentenceParserOptions,\n ) {\n return {\n matchType: 'exact' as const,\n deinflect: options.deinflect ?? true,\n primaryReading: '',\n mainDictionary: '',\n sortFrequencyDictionary: null,\n sortFrequencyDictionaryOrder: 'descending' as const,\n removeNonJapaneseCharacters:\n options.removeNonJapaneseCharacters ??\n (language === 'ja' || language === 'zh' || language === 'yue' || language === 'ko'),\n textReplacements: options.textReplacements ?? [null],\n enabledDictionaryMap,\n excludeDictionaryDefinitions: null,\n searchResolution: options.searchResolution ?? ('letter' as const),\n language,\n };\n }\n}\n"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import "./text-utilities-D5eno9GK.js";
2
- import { StructuredContentGenerator } from "./structured-content-generator-aJieXElq.js";
3
-
4
- export { StructuredContentGenerator };
@@ -1,7 +0,0 @@
1
- import "./log-hgSll-dS.js";
2
- import "./cjk-util-DubXBGDG.js";
3
- import "./japanese-DhmmW35J.js";
4
- import "./multi-language-transformer-BkwMTV2g.js";
5
- import { Translator } from "./translator-CrDE1UJW.js";
6
-
7
- export { Translator };
@@ -1 +0,0 @@
1
- {"version":3,"file":"translator-CYvGmODX.d.ts","names":[],"sources":["../src/types/translation.ts","../src/lookup/translator.ts"],"sourcesContent":null,"mappings":";;;;KAEY,gBAAA;KAEA,gBAAA;wBACc;EAHd,2BAAgB,EAAA,OAAA;AAE5B,CAAA;AAKY,KAAA,mBAAA,GAAmB;EAKnB,KAAA,EAAA,MAAA;EAAgB,KAAA,EAAA,MAAA;CAAA;AAMM,KANtB,gBAAA,GAMsB;EAAkB,SAE9B,EAPP,kBAOO;EAAyB,SACrB,EAAA,OAAA;EAAwB,cAChB,EAAA,MAAA;EAAG,cACf,EAAA,MAAA;EAAgB,uBAAA,EAAA,MAAA,GAAA,IAAA;EAI1B,4BAAkB,EATI,kBASJ;EAElB,2BAAkB,EAAA,OAAA;EAElB,gBAAA,EAXU,yBAYT;EAID,oBAAA,EAfc,wBAee;EAE7B,4BAAkB,EAhBI,GAgBJ,CAAA,MAAA,CAAA,GAAA,IAAA;EAQlB,gBAAA,EAvBU,gBAuBc;EAAA,QAAA,EAAA,MAAA;CAAA;AAAG,KAnB3B,kBAAA,GAAkB,mBAmBS;AAAG,KAjB9B,kBAAA,GAiB8B,WAAA,GAAA,YAAA;AAE9B,KAjBA,wBAAA,GAiByB;EAAA,OAAA,EAhBxB,MAgBwB;EAAA,WAAe,EAAA,MAAA;CAAmB;AAA5B,KAZ/B,yBAAA,GAY+B,CAZF,wBAYE,EAAA,GAAA,IAAA,CAAA,EAAA;KAV/B,kBAAA;;;ECkBP,sBAAA,EAAmB,OAAA;EA6CZ,mBAAa,EAAA,OAAA;;;KDvDb,wBAAA,GAA2B,YAAY;ACmMtC,KDjMD,yBAAA,GAA4B,GCiMjB,CAAA,MAAA,EDjM6B,mBCiM7B,CAAA,CAAA;;;;KAzLlB,qBAAA,GAAmB;ADxDZ,KCqGA,aAAA,GDrGgB,OAAA,GAAA,MAAA,GAAA,OAAA,GAAA,QAAA;AAE5B;AAKA;AAKA;AAA4B,cCqOf,UAAA,CDrOe;EAAA,QACb,SAAA;EAAkB,QAKC,yBAAA;EAAkB,QAE9B,SAAA;EAAyB,QACrB,eAAA;EAAwB,QAChB,YAAA;EAAG,QACf,eAAA;EAAgB,QAAA,mBAAA;EAI1B,WAAA,CAAA,QAAA,EC+Nc,YD/NI;EAElB;AAEZ;AAKA;EAEY,OAAA,CAAA,CAAA,EAAA,IAAA;EAQA;;;EAAyD,mBAA9B,CAAA,CAAA,EAAA,IAAA;EAAG;AAE1C;;EAAqC,SAAe,CAAA,IAAA,EC4OtC,aD5OsC,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EC4OzB,gBD5OyB,CAAA,EC+O7C,OD/O6C,CAAA;IAAZ,iBAAA,EC+OJ,qBD/OI,EAAA;IAAG,kBAAA,EAAA,MAAA;;;;AChBc;EAqE7C,SAAA,CAAA,IAAA,EAAa,MAAA,EAAA,OAAA,EA0LX,gBA1LW,CAAA,EAiRiD,OAjRjD,CAiR8C,oBAjR9C,EAAA,CAAA;;;;AA4IzB;EAAuB,kBAAA,CAAA,eAAA,EAAA;IASG,IAAA,EAAA,MAAA;IAkCZ,OAAA,EAAA,MAAA,GAAA,IAAA;EAAa,CAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAiJpB,OAjJoB,CAAA;IAGS,IAAA,EAAA,MAAA;IAA7B,OAAA,EAAA,MAAA,GAAA,IAAA;IAAO,UAAA,EAAA,MAAA;IAuFyD,UAAA,EAAA,OAAA;IAAG,SAAA,EAAA,MAAA;IAuDnE,YAAA,EAAA,MAAA,GAAA,IAAA;IAAO,kBAAA,EAAA,OAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"translator-TiTDVbmS.d.cts","names":[],"sources":["../src/types/translation.ts","../src/lookup/translator.ts"],"sourcesContent":null,"mappings":";;;;KAEY,gBAAA;KAEA,gBAAA;wBACc;EAHd,2BAAgB,EAAA,OAAA;AAE5B,CAAA;AAKY,KAAA,mBAAA,GAAmB;EAKnB,KAAA,EAAA,MAAA;EAAgB,KAAA,EAAA,MAAA;CAAA;AAMM,KANtB,gBAAA,GAMsB;EAAkB,SAE9B,EAPP,kBAOO;EAAyB,SACrB,EAAA,OAAA;EAAwB,cAChB,EAAA,MAAA;EAAG,cACf,EAAA,MAAA;EAAgB,uBAAA,EAAA,MAAA,GAAA,IAAA;EAI1B,4BAAkB,EATI,kBASJ;EAElB,2BAAkB,EAAA,OAAA;EAElB,gBAAA,EAXU,yBAYT;EAID,oBAAA,EAfc,wBAee;EAE7B,4BAAkB,EAhBI,GAgBJ,CAAA,MAAA,CAAA,GAAA,IAAA;EAQlB,gBAAA,EAvBU,gBAuBc;EAAA,QAAA,EAAA,MAAA;CAAA;AAAG,KAnB3B,kBAAA,GAAkB,mBAmBS;AAAG,KAjB9B,kBAAA,GAiB8B,WAAA,GAAA,YAAA;AAE9B,KAjBA,wBAAA,GAiByB;EAAA,OAAA,EAhBxB,MAgBwB;EAAA,WAAe,EAAA,MAAA;CAAmB;AAA5B,KAZ/B,yBAAA,GAY+B,CAZF,wBAYE,EAAA,GAAA,IAAA,CAAA,EAAA;KAV/B,kBAAA;;;ECkBP,sBAAA,EAAmB,OAAA;EA6CZ,mBAAa,EAAA,OAAA;;;KDvDb,wBAAA,GAA2B,YAAY;ACmMtC,KDjMD,yBAAA,GAA4B,GCiMjB,CAAA,MAAA,EDjM6B,mBCiM7B,CAAA,CAAA;;;;KAzLlB,qBAAA,GAAmB;ADxDZ,KCqGA,aAAA,GDrGgB,OAAA,GAAA,MAAA,GAAA,OAAA,GAAA,QAAA;AAE5B;AAKA;AAKA;AAA4B,cCqOf,UAAA,CDrOe;EAAA,QACb,SAAA;EAAkB,QAKC,yBAAA;EAAkB,QAE9B,SAAA;EAAyB,QACrB,eAAA;EAAwB,QAChB,YAAA;EAAG,QACf,eAAA;EAAgB,QAAA,mBAAA;EAI1B,WAAA,CAAA,QAAA,EC+Nc,YD/NI;EAElB;AAEZ;AAKA;EAEY,OAAA,CAAA,CAAA,EAAA,IAAA;EAQA;;;EAAyD,mBAA9B,CAAA,CAAA,EAAA,IAAA;EAAG;AAE1C;;EAAqC,SAAe,CAAA,IAAA,EC4OtC,aD5OsC,EAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EC4OzB,gBD5OyB,CAAA,EC+O7C,OD/O6C,CAAA;IAAZ,iBAAA,EC+OJ,qBD/OI,EAAA;IAAG,kBAAA,EAAA,MAAA;;;;AChBc;EAqE7C,SAAA,CAAA,IAAA,EAAa,MAAA,EAAA,OAAA,EA0LX,gBA1LW,CAAA,EAiRiD,OAjRjD,CAiR8C,oBAjR9C,EAAA,CAAA;;;;AA4IzB;EAAuB,kBAAA,CAAA,eAAA,EAAA;IASG,IAAA,EAAA,MAAA;IAkCZ,OAAA,EAAA,MAAA,GAAA,IAAA;EAAa,CAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAiJpB,OAjJoB,CAAA;IAGS,IAAA,EAAA,MAAA;IAA7B,OAAA,EAAA,MAAA,GAAA,IAAA;IAAO,UAAA,EAAA,MAAA;IAuFyD,UAAA,EAAA,OAAA;IAAG,SAAA,EAAA,MAAA;IAuDnE,YAAA,EAAA,MAAA,GAAA,IAAA;IAAO,kBAAA,EAAA,OAAA"}
@@ -1,7 +0,0 @@
1
- require('./log-D8KtR3aP.cjs');
2
- require('./cjk-util-Dp0ZU0sh.cjs');
3
- require('./japanese-BVV1Ctk-.cjs');
4
- require('./multi-language-transformer-B2133Zg_.cjs');
5
- const require_translator = require('./translator-B1uTusjx.cjs');
6
-
7
- exports.Translator = require_translator.Translator