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.
- package/README.md +8 -1
- package/dist/anki-connect-B2UXtiUS.js +6 -0
- package/dist/anki-connect-BXvjYYm0.cjs +6 -0
- package/dist/{anki-connect-B_YpChhu.cjs → anki-connect-DGx7Gr0H.cjs} +3 -3
- package/dist/{anki-connect-B_YpChhu.cjs.map → anki-connect-DGx7Gr0H.cjs.map} +1 -1
- package/dist/{anki-connect-697E04LF.js → anki-connect-Dau8nAXZ.js} +3 -3
- package/dist/{anki-connect-697E04LF.js.map → anki-connect-Dau8nAXZ.js.map} +1 -1
- package/dist/anki.cjs +6 -6
- package/dist/anki.d.cts.map +1 -1
- package/dist/anki.d.ts +2 -2
- package/dist/anki.d.ts.map +1 -1
- package/dist/anki.js +6 -6
- package/dist/{audio-ZuaDkaUZ.d.ts → audio-DN-FhZ5k.d.ts} +1 -1
- package/dist/{audio-ZuaDkaUZ.d.ts.map → audio-DN-FhZ5k.d.ts.map} +1 -1
- package/dist/{audio-url-generator-CgTMaTM2.js → audio-url-generator-C7mkxYeq.js} +2 -2
- package/dist/{audio-url-generator-CfXaxZ47.cjs → audio-url-generator-CZECihX-.cjs} +2 -2
- package/dist/{audio-url-generator-C23AXVj1.cjs → audio-url-generator-CorFRyBU.cjs} +2 -2
- package/dist/{audio-url-generator-C23AXVj1.cjs.map → audio-url-generator-CorFRyBU.cjs.map} +1 -1
- package/dist/{audio-url-generator-DykdzZJu.js → audio-url-generator-_6Qk0i3T.js} +2 -2
- package/dist/{audio-url-generator-DykdzZJu.js.map → audio-url-generator-_6Qk0i3T.js.map} +1 -1
- package/dist/audio.cjs +2 -2
- package/dist/audio.d.ts +2 -2
- package/dist/audio.js +2 -2
- package/dist/{batch-processor-CXZZhx5t.js → batch-processor-BR-gB3H3.js} +1 -1
- package/dist/{batch-processor-CXZZhx5t.js.map → batch-processor-BR-gB3H3.js.map} +1 -1
- package/dist/batch-processor-CSF1acTw.cjs +3 -0
- package/dist/{batch-processor-C8pSzqRE.cjs → batch-processor-DFqM_L-_.cjs} +1 -1
- package/dist/{batch-processor-C8pSzqRE.cjs.map → batch-processor-DFqM_L-_.cjs.map} +1 -1
- package/dist/batch-processor-Quo9jUyf.js +3 -0
- package/dist/{core-C_0QjRBI.d.ts → core-CRjMTF7c.d.ts} +1 -1
- package/dist/{core-C_0QjRBI.d.ts.map → core-CRjMTF7c.d.ts.map} +1 -1
- package/dist/database.d.ts +3 -3
- package/dist/debug-I2dyAd2e.cjs +51 -0
- package/dist/debug-I2dyAd2e.cjs.map +1 -0
- package/dist/debug-hF63AFkq.js +38 -0
- package/dist/debug-hF63AFkq.js.map +1 -0
- package/dist/{dictionary-CfzEFbXZ.d.ts → dictionary-DdxghSJP.d.ts} +1 -1
- package/dist/{dictionary-CfzEFbXZ.d.ts.map → dictionary-DdxghSJP.d.ts.map} +1 -1
- package/dist/{dictionary-data-util-BY_72f3u.cjs → dictionary-data-util-DmLJMtGc.cjs} +1 -1
- package/dist/{dictionary-data-util-BY_72f3u.cjs.map → dictionary-data-util-DmLJMtGc.cjs.map} +1 -1
- package/dist/{dictionary-data-util-CKDT7n2t.js → dictionary-data-util-gUUD9ElK.js} +1 -1
- package/dist/{dictionary-data-util-CKDT7n2t.js.map → dictionary-data-util-gUUD9ElK.js.map} +1 -1
- package/dist/{dictionary-database-BRAqOF_M.d.ts → dictionary-database-D0lvK2n3.d.ts} +2 -2
- package/dist/{dictionary-database-BRAqOF_M.d.ts.map → dictionary-database-D0lvK2n3.d.ts.map} +1 -1
- package/dist/{dictionary-importer-C7mNL5CJ.js → dictionary-importer-BPlLeF5R.js} +5 -5
- package/dist/{dictionary-importer-C7mNL5CJ.js.map → dictionary-importer-BPlLeF5R.js.map} +1 -1
- package/dist/{dictionary-importer-CbMwsqEX.cjs → dictionary-importer-BvgP1Fs9.cjs} +5 -5
- package/dist/{dictionary-importer-CbMwsqEX.cjs.map → dictionary-importer-BvgP1Fs9.cjs.map} +1 -1
- package/dist/{dictionary-importer-C-AlWsIN.d.ts → dictionary-importer-CDbCAbwG.d.ts} +2 -2
- package/dist/{dictionary-importer-C-AlWsIN.d.ts.map → dictionary-importer-CDbCAbwG.d.ts.map} +1 -1
- package/dist/dictionary-importer-DEMVqTjR.js +8 -0
- package/dist/dictionary-importer-Luz6usUQ.cjs +8 -0
- package/dist/{dictionary-update-checker-DE2ymYcs.js → dictionary-update-checker-CLbtQ48X.js} +2 -2
- package/dist/{dictionary-update-checker-DE2ymYcs.js.map → dictionary-update-checker-CLbtQ48X.js.map} +1 -1
- package/dist/dictionary-update-checker-CsS7MxK_.js +4 -0
- package/dist/{dictionary-update-checker-CU3q0aoP.cjs → dictionary-update-checker-DgjPsURI.cjs} +2 -2
- package/dist/{dictionary-update-checker-xIwF77-R.cjs → dictionary-update-checker-DmiIUoKw.cjs} +2 -2
- package/dist/{dictionary-update-checker-xIwF77-R.cjs.map → dictionary-update-checker-DmiIUoKw.cjs.map} +1 -1
- package/dist/{display-generator-vjbG05fn.js → display-generator-BAEJDrHT.js} +9 -7
- package/dist/display-generator-BAEJDrHT.js.map +1 -0
- package/dist/display-generator-D5fkD0JI.cjs +10 -0
- package/dist/display-generator-DZLMaVuP.js +10 -0
- package/dist/{display-generator-BhV_MOD1.cjs → display-generator-D_0chBzj.cjs} +9 -7
- package/dist/display-generator-D_0chBzj.cjs.map +1 -0
- package/dist/{errors-ZI2FcGUl.cjs → errors-0pIJI6N2.cjs} +1 -1
- package/dist/{errors-ZI2FcGUl.cjs.map → errors-0pIJI6N2.cjs.map} +1 -1
- package/dist/{errors-D2JfYV-C.js → errors-DvKlMRXC.js} +1 -1
- package/dist/{errors-D2JfYV-C.js.map → errors-DvKlMRXC.js.map} +1 -1
- package/dist/frequency-ranking-BXjfhhUQ.js +3 -0
- package/dist/{frequency-ranking-DmNIoxut.cjs → frequency-ranking-Cx1kkIrw.cjs} +1 -1
- package/dist/{frequency-ranking-DzbdZghE.js → frequency-ranking-DEJMTMdg.js} +1 -1
- package/dist/{frequency-ranking-DzbdZghE.js.map → frequency-ranking-DEJMTMdg.js.map} +1 -1
- package/dist/{frequency-ranking-Dm6xCMkY.cjs → frequency-ranking-DVYxTXN-.cjs} +1 -1
- package/dist/{frequency-ranking-Dm6xCMkY.cjs.map → frequency-ranking-DVYxTXN-.cjs.map} +1 -1
- package/dist/furigana-MU_j_m5i.cjs +5 -0
- package/dist/{furigana-BnY7-dJ-.cjs → furigana-SZuBaUyl.cjs} +2 -2
- package/dist/{furigana-BnY7-dJ-.cjs.map → furigana-SZuBaUyl.cjs.map} +1 -1
- package/dist/furigana-ZCs0Xs0b.js +5 -0
- package/dist/{furigana-CI6LUA-6.js → furigana-h18vaQ7a.js} +2 -2
- package/dist/{furigana-CI6LUA-6.js.map → furigana-h18vaQ7a.js.map} +1 -1
- package/dist/import.cjs +6 -6
- package/dist/import.d.ts +3 -3
- package/dist/import.js +6 -6
- package/dist/index.cjs +44 -18
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +10 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -18
- package/dist/index.js.map +1 -1
- package/dist/{japanese-BVV1Ctk-.cjs → japanese-C83fmEfb.cjs} +1 -1
- package/dist/{japanese-BVV1Ctk-.cjs.map → japanese-C83fmEfb.cjs.map} +1 -1
- package/dist/{japanese-DhmmW35J.js → japanese-OKEGf_i4.js} +2 -2
- package/dist/{japanese-DhmmW35J.js.map → japanese-OKEGf_i4.js.map} +1 -1
- package/dist/{json-CyQBn52D.cjs → json-Cdj6aIOQ.cjs} +1 -1
- package/dist/{json-CyQBn52D.cjs.map → json-Cdj6aIOQ.cjs.map} +1 -1
- package/dist/{json-DTq_IXXF.js → json-rIgOFqVY.js} +1 -1
- package/dist/{json-DTq_IXXF.js.map → json-rIgOFqVY.js.map} +1 -1
- package/dist/{language-DFFp_7nc.d.ts → language-DMwuc2-C.d.ts} +1 -1
- package/dist/{language-DFFp_7nc.d.ts.map → language-DMwuc2-C.d.ts.map} +1 -1
- package/dist/language.cjs +12 -12
- package/dist/language.d.cts +41 -3
- package/dist/language.d.cts.map +1 -1
- package/dist/language.d.ts +44 -6
- package/dist/language.d.ts.map +1 -1
- package/dist/language.js +5 -5
- package/dist/lookup.cjs +7 -6
- package/dist/lookup.d.cts +5 -78
- package/dist/lookup.d.cts.map +1 -1
- package/dist/lookup.d.ts +8 -81
- package/dist/lookup.d.ts.map +1 -1
- package/dist/lookup.js +7 -6
- package/dist/{media-loader-CMEuD0fn.js → media-loader-C1WZVVaA.js} +1 -1
- package/dist/{media-loader-CMEuD0fn.js.map → media-loader-C1WZVVaA.js.map} +1 -1
- package/dist/media-loader-CWNb22gc.cjs +3 -0
- package/dist/media-loader-CrQnDnSp.js +3 -0
- package/dist/{media-loader-DS2ZXpSI.cjs → media-loader-RE32nGs3.cjs} +1 -1
- package/dist/{media-loader-DS2ZXpSI.cjs.map → media-loader-RE32nGs3.cjs.map} +1 -1
- package/dist/{multi-language-transformer-CjLO0S8V.d.ts → multi-language-transformer-CFu0CVWY.d.ts} +3 -3
- package/dist/{multi-language-transformer-CjLO0S8V.d.ts.map → multi-language-transformer-CFu0CVWY.d.ts.map} +1 -1
- package/dist/multi-language-transformer-Dk8S4W6j.js +12503 -0
- package/dist/multi-language-transformer-Dk8S4W6j.js.map +1 -0
- package/dist/{multi-language-transformer-B2133Zg_.cjs → multi-language-transformer-N66Mmb2E.cjs} +9614 -5
- package/dist/multi-language-transformer-N66Mmb2E.cjs.map +1 -0
- package/dist/{pronunciation-generator-cNtAQi5s.js → pronunciation-generator-BXcwS3By.js} +2 -2
- package/dist/{pronunciation-generator-cNtAQi5s.js.map → pronunciation-generator-BXcwS3By.js.map} +1 -1
- package/dist/{pronunciation-generator-CPwnr43z.cjs → pronunciation-generator-CP1kjYje.cjs} +1 -1
- package/dist/{pronunciation-generator-B8y__W7I.cjs → pronunciation-generator-CeC3LFPU.cjs} +1 -1
- package/dist/{pronunciation-generator-B8y__W7I.cjs.map → pronunciation-generator-CeC3LFPU.cjs.map} +1 -1
- package/dist/{pronunciation-generator-BvTbUlOy.js → pronunciation-generator-I1xpdJu0.js} +1 -1
- package/dist/render.cjs +96 -8
- package/dist/render.cjs.map +1 -1
- package/dist/render.d.cts +33 -3
- package/dist/render.d.cts.map +1 -1
- package/dist/render.d.ts +35 -5
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +95 -9
- package/dist/render.js.map +1 -1
- package/dist/{sentence-parser-DUQJ3cTT.cjs → sentence-parser-8i1Y_OGS.cjs} +74 -46
- package/dist/sentence-parser-8i1Y_OGS.cjs.map +1 -0
- package/dist/{translator-TiTDVbmS.d.cts → sentence-parser-BQpu2oSA.d.cts} +80 -4
- package/dist/sentence-parser-BQpu2oSA.d.cts.map +1 -0
- package/dist/{sentence-parser-sx7y6Oyh.js → sentence-parser-CXDs4R_c.js} +74 -46
- package/dist/sentence-parser-CXDs4R_c.js.map +1 -0
- package/dist/{translator-CYvGmODX.d.ts → sentence-parser-CmsHUc_p.d.ts} +81 -5
- package/dist/sentence-parser-CmsHUc_p.d.ts.map +1 -0
- package/dist/sentence-parser-DQccqSpq.cjs +6 -0
- package/dist/sentence-parser-DsleseSI.js +6 -0
- package/dist/structured-content-generator-BhEkwa0T.js +4 -0
- package/dist/{structured-content-generator-C5Hhaurz.cjs → structured-content-generator-CokLKgrb.cjs} +2 -2
- package/dist/{structured-content-generator-C5Hhaurz.cjs.map → structured-content-generator-CokLKgrb.cjs.map} +1 -1
- package/dist/{structured-content-generator-D48bLhPA.cjs → structured-content-generator-_z5dJECG.cjs} +2 -2
- package/dist/{structured-content-generator-aJieXElq.js → structured-content-generator-gnjtdBcC.js} +2 -2
- package/dist/{structured-content-generator-aJieXElq.js.map → structured-content-generator-gnjtdBcC.js.map} +1 -1
- package/dist/{text-utilities-CFDC9Bkr.cjs → text-utilities-CTsN1Bq8.cjs} +1 -1
- package/dist/{text-utilities-CFDC9Bkr.cjs.map → text-utilities-CTsN1Bq8.cjs.map} +1 -1
- package/dist/{text-utilities-D5eno9GK.js → text-utilities-DjLdStjv.js} +1 -1
- package/dist/{text-utilities-D5eno9GK.js.map → text-utilities-DjLdStjv.js.map} +1 -1
- package/dist/translator-BGI37WRC.js +7 -0
- package/dist/translator-Cd1ECBM1.cjs +7 -0
- package/dist/{translator-B1uTusjx.cjs → translator-ClzybVmi.cjs} +2 -2
- package/dist/{translator-B1uTusjx.cjs.map → translator-ClzybVmi.cjs.map} +1 -1
- package/dist/{translator-CrDE1UJW.js → translator-jFVzLjEs.js} +2 -2
- package/dist/{translator-CrDE1UJW.js.map → translator-jFVzLjEs.js.map} +1 -1
- package/package.json +1 -1
- package/dist/anki-connect-D-02BbHi.cjs +0 -6
- package/dist/anki-connect-Vn-cnxs8.js +0 -6
- package/dist/batch-processor-DItpL6Pp.js +0 -3
- package/dist/batch-processor-fiLvFS2_.cjs +0 -3
- package/dist/dictionary-importer-B9M3SD2y.js +0 -8
- package/dist/dictionary-importer-DnR8Bsai.cjs +0 -8
- package/dist/dictionary-update-checker-Cnjz4tQD.js +0 -4
- package/dist/display-generator-BhV_MOD1.cjs.map +0 -1
- package/dist/display-generator-Cn4vCiSI.js +0 -10
- package/dist/display-generator-G2e03o0R.cjs +0 -10
- package/dist/display-generator-vjbG05fn.js.map +0 -1
- package/dist/frequency-ranking-B-kvnxro.js +0 -3
- package/dist/furigana-cpPhFnBv.cjs +0 -5
- package/dist/furigana-kZjqnnFC.js +0 -5
- package/dist/japanese-DdsS8rT1.d.ts +0 -41
- package/dist/japanese-DdsS8rT1.d.ts.map +0 -1
- package/dist/japanese-DgmP3i76.d.cts +0 -41
- package/dist/japanese-DgmP3i76.d.cts.map +0 -1
- package/dist/media-loader-BBTESZXn.cjs +0 -3
- package/dist/media-loader-CNKoAjQs.js +0 -3
- package/dist/multi-language-transformer-B2133Zg_.cjs.map +0 -1
- package/dist/multi-language-transformer-BkwMTV2g.js +0 -2893
- package/dist/multi-language-transformer-BkwMTV2g.js.map +0 -1
- package/dist/sentence-parser-B-gM8mKk.js +0 -5
- package/dist/sentence-parser-Cp3cm_QU.cjs +0 -5
- package/dist/sentence-parser-DUQJ3cTT.cjs.map +0 -1
- package/dist/sentence-parser-sx7y6Oyh.js.map +0 -1
- package/dist/structured-content-generator-Dww8IT7Y.js +0 -4
- package/dist/translator-BiTHo9Nm.js +0 -7
- package/dist/translator-CYvGmODX.d.ts.map +0 -1
- package/dist/translator-TiTDVbmS.d.cts.map +0 -1
- package/dist/translator-Y7Haj_qJ.cjs +0 -7
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-language-transformer-BkwMTV2g.js","names":["ROMAJI_TO_HIRAGANA: Record<string, string>","HIRAGANA_TO_ROMAJI: Record<string, string>","text: string","selectionStart: number","convertHalfWidthCharacters: TextProcessor<boolean>","alphabeticToHiragana: TextProcessor<boolean>","alphanumericWidthVariants: BidirectionalConversionPreprocessor","convertHiraganaToKatakana: BidirectionalConversionPreprocessor","collapseEmphaticSequences: TextProcessor<[collapseEmphatic: boolean, collapseEmphaticFull: boolean]>","normalizeCombiningCharacters: TextProcessor<boolean>","normalizeCJKCompatibilityCharacters: TextProcessor<boolean>","inflectedSuffix: string","deinflectedSuffix: string","conditionsIn: TCondition[]","conditionsOut: TCondition[]","inflectedPrefix: string","deinflectedPrefix: string","inflectedWord: string","deinflectedWord: string","suffix: 'て' | 'た' | 'たら' | 'たり'","conditionsIn: Condition[]","conditionsOut: Condition[]","japaneseTransforms: LanguageTransformDescriptor<Condition>","languageDescriptors: LanguageDescriptorAny[]","results: Language.LanguageSummary[]","results: Language.LanguageAndReadingNormalizer[]","results: Language.LanguageAndProcessors[]","textPreprocessorsArray: Language.TextProcessorWithId<unknown>[]","textPostprocessorsArray: Language.TextProcessorWithId<unknown>[]","text: string","language: string","results: Language.LanguageAndTransforms[]","descriptor: LanguageTransformDescriptor","conditionEntries: ConditionMapEntries","conditions","transforms2: InternalTransform[]","rules2: InternalRule[]","partsOfSpeech: string[]","conditionTypes: string[]","conditionType: string","sourceText: string","inflectionRules: string[]","text: string","conditions: number","trace: Trace","currentConditions: number","nextConditions: number","conditions: ConditionMapEntries","nextFlagIndex: number","targets: ConditionMapEntries","nextTargets: ConditionMapEntries","conditionFlagsMap: Map<string, number>","newFrame: TraceFrame","language: string","partsOfSpeech: string[]","conditionTypes: string[]","conditionType: string","sourceText: string","inflectionRules: string[]"],"sources":["../src/language/ja/japanese-kana-romaji-dicts.ts","../src/language/ja/japanese-wanakana.ts","../src/language/ja/japanese-text-preprocessors.ts","../src/language/language-transforms.ts","../src/language/ja/japanese-transforms.ts","../src/language/language-descriptors.ts","../src/language/languages.ts","../src/language/language-transformer.ts","../src/language/multi-language-transformer.ts"],"sourcesContent":["// Mozc's default Romaji to Hiragana list referenced to create ROMAJI_TO_HIRAGANA\n// https://github.com/google/mozc/blob/035668c3452fa98ac09462fd2cf556948964aad7/src/data/preedit/romanji-hiragana.tsv\nexport const ROMAJI_TO_HIRAGANA: Record<string, string> = {\n // Double letters - these **must** always be matched first or further down matches may cause inserting `っ` from double letters to require extra logic\n // There **must** be an entry for every accepted double letter\n // To not disturb further matches, an extra letter must be appended after the `っ`\n qq: 'っq',\n vv: 'っv',\n ll: 'っl',\n xx: 'っx',\n kk: 'っk',\n gg: 'っg',\n ss: 'っs',\n zz: 'っz',\n jj: 'っj',\n tt: 'っt',\n dd: 'っd',\n hh: 'っh',\n ff: 'っf',\n bb: 'っb',\n pp: 'っp',\n mm: 'っm',\n yy: 'っy',\n rr: 'っr',\n ww: 'っw',\n cc: 'っc',\n\n // Length 4 - longest matches\n hwyu: 'ふゅ',\n xtsu: 'っ',\n ltsu: 'っ',\n\n // Length 3\n vya: 'ゔゃ',\n vyi: 'ゔぃ',\n vyu: 'ゔゅ',\n vye: 'ゔぇ',\n vyo: 'ゔょ',\n kya: 'きゃ',\n kyi: 'きぃ',\n kyu: 'きゅ',\n kye: 'きぇ',\n kyo: 'きょ',\n gya: 'ぎゃ',\n gyi: 'ぎぃ',\n gyu: 'ぎゅ',\n gye: 'ぎぇ',\n gyo: 'ぎょ',\n sya: 'しゃ',\n syi: 'しぃ',\n syu: 'しゅ',\n sye: 'しぇ',\n syo: 'しょ',\n sha: 'しゃ',\n shi: 'し',\n shu: 'しゅ',\n she: 'しぇ',\n sho: 'しょ',\n zya: 'じゃ',\n zyi: 'じぃ',\n zyu: 'じゅ',\n zye: 'じぇ',\n zyo: 'じょ',\n tya: 'ちゃ',\n tyi: 'ちぃ',\n tyu: 'ちゅ',\n tye: 'ちぇ',\n tyo: 'ちょ',\n cha: 'ちゃ',\n chi: 'ち',\n chu: 'ちゅ',\n che: 'ちぇ',\n cho: 'ちょ',\n cya: 'ちゃ',\n cyi: 'ちぃ',\n cyu: 'ちゅ',\n cye: 'ちぇ',\n cyo: 'ちょ',\n dya: 'ぢゃ',\n dyi: 'ぢぃ',\n dyu: 'ぢゅ',\n dye: 'ぢぇ',\n dyo: 'ぢょ',\n tsa: 'つぁ',\n tsi: 'つぃ',\n tse: 'つぇ',\n tso: 'つぉ',\n tha: 'てゃ',\n thi: 'てぃ',\n thu: 'てゅ',\n the: 'てぇ',\n tho: 'てょ',\n dha: 'でゃ',\n dhi: 'でぃ',\n dhu: 'でゅ',\n dhe: 'でぇ',\n dho: 'でょ',\n twa: 'とぁ',\n twi: 'とぃ',\n twu: 'とぅ',\n twe: 'とぇ',\n two: 'とぉ',\n dwa: 'どぁ',\n dwi: 'どぃ',\n dwu: 'どぅ',\n dwe: 'どぇ',\n dwo: 'どぉ',\n nya: 'にゃ',\n nyi: 'にぃ',\n nyu: 'にゅ',\n nye: 'にぇ',\n nyo: 'にょ',\n hya: 'ひゃ',\n hyi: 'ひぃ',\n hyu: 'ひゅ',\n hye: 'ひぇ',\n hyo: 'ひょ',\n bya: 'びゃ',\n byi: 'びぃ',\n byu: 'びゅ',\n bye: 'びぇ',\n byo: 'びょ',\n pya: 'ぴゃ',\n pyi: 'ぴぃ',\n pyu: 'ぴゅ',\n pye: 'ぴぇ',\n pyo: 'ぴょ',\n fya: 'ふゃ',\n fyu: 'ふゅ',\n fyo: 'ふょ',\n hwa: 'ふぁ',\n hwi: 'ふぃ',\n hwe: 'ふぇ',\n hwo: 'ふぉ',\n mya: 'みゃ',\n myi: 'みぃ',\n myu: 'みゅ',\n mye: 'みぇ',\n myo: 'みょ',\n rya: 'りゃ',\n ryi: 'りぃ',\n ryu: 'りゅ',\n rye: 'りぇ',\n ryo: 'りょ',\n lyi: 'ぃ',\n xyi: 'ぃ',\n lye: 'ぇ',\n xye: 'ぇ',\n xka: 'ヵ',\n xke: 'ヶ',\n lka: 'ヵ',\n lke: 'ヶ',\n kwa: 'くぁ',\n kwi: 'くぃ',\n kwu: 'くぅ',\n kwe: 'くぇ',\n kwo: 'くぉ',\n gwa: 'ぐぁ',\n gwi: 'ぐぃ',\n gwu: 'ぐぅ',\n gwe: 'ぐぇ',\n gwo: 'ぐぉ',\n swa: 'すぁ',\n swi: 'すぃ',\n swu: 'すぅ',\n swe: 'すぇ',\n swo: 'すぉ',\n zwa: 'ずぁ',\n zwi: 'ずぃ',\n zwu: 'ずぅ',\n zwe: 'ずぇ',\n zwo: 'ずぉ',\n jya: 'じゃ',\n jyi: 'じぃ',\n jyu: 'じゅ',\n jye: 'じぇ',\n jyo: 'じょ',\n tsu: 'つ',\n xtu: 'っ',\n ltu: 'っ',\n xya: 'ゃ',\n lya: 'ゃ',\n wyi: 'ゐ',\n xyu: 'ゅ',\n lyu: 'ゅ',\n wye: 'ゑ',\n xyo: 'ょ',\n lyo: 'ょ',\n xwa: 'ゎ',\n lwa: 'ゎ',\n wha: 'うぁ',\n whi: 'うぃ',\n whu: 'う',\n whe: 'うぇ',\n who: 'うぉ',\n\n // Length 2\n nn: 'ん',\n \"n'\": 'ん',\n va: 'ゔぁ',\n vi: 'ゔぃ',\n vu: 'ゔ',\n ve: 'ゔぇ',\n vo: 'ゔぉ',\n fa: 'ふぁ',\n fi: 'ふぃ',\n fe: 'ふぇ',\n fo: 'ふぉ',\n xn: 'ん',\n wu: 'う',\n xa: 'ぁ',\n xi: 'ぃ',\n xu: 'ぅ',\n xe: 'ぇ',\n xo: 'ぉ',\n la: 'ぁ',\n li: 'ぃ',\n lu: 'ぅ',\n le: 'ぇ',\n lo: 'ぉ',\n ye: 'いぇ',\n ka: 'か',\n ki: 'き',\n ku: 'く',\n ke: 'け',\n ko: 'こ',\n ga: 'が',\n gi: 'ぎ',\n gu: 'ぐ',\n ge: 'げ',\n go: 'ご',\n sa: 'さ',\n si: 'し',\n su: 'す',\n se: 'せ',\n so: 'そ',\n ca: 'か',\n ci: 'し',\n cu: 'く',\n ce: 'せ',\n co: 'こ',\n qa: 'くぁ',\n qi: 'くぃ',\n qu: 'く',\n qe: 'くぇ',\n qo: 'くぉ',\n za: 'ざ',\n zi: 'じ',\n zu: 'ず',\n ze: 'ぜ',\n zo: 'ぞ',\n ja: 'じゃ',\n ji: 'じ',\n ju: 'じゅ',\n je: 'じぇ',\n jo: 'じょ',\n ta: 'た',\n ti: 'ち',\n tu: 'つ',\n te: 'て',\n to: 'と',\n da: 'だ',\n di: 'ぢ',\n du: 'づ',\n de: 'で',\n do: 'ど',\n na: 'な',\n ni: 'に',\n nu: 'ぬ',\n ne: 'ね',\n no: 'の',\n ha: 'は',\n hi: 'ひ',\n hu: 'ふ',\n fu: 'ふ',\n he: 'へ',\n ho: 'ほ',\n ba: 'ば',\n bi: 'び',\n bu: 'ぶ',\n be: 'べ',\n bo: 'ぼ',\n pa: 'ぱ',\n pi: 'ぴ',\n pu: 'ぷ',\n pe: 'ぺ',\n po: 'ぽ',\n ma: 'ま',\n mi: 'み',\n mu: 'む',\n me: 'め',\n mo: 'も',\n ya: 'や',\n yu: 'ゆ',\n yo: 'よ',\n ra: 'ら',\n ri: 'り',\n ru: 'る',\n re: 'れ',\n ro: 'ろ',\n wa: 'わ',\n wi: 'うぃ',\n we: 'うぇ',\n wo: 'を',\n\n // Length 1 - shortest matches\n a: 'あ',\n i: 'い',\n u: 'う',\n e: 'え',\n o: 'お',\n\n // Length 1 Special/Symbols\n '.': '。',\n ',': '、',\n ':': ':',\n '/': '・',\n '!': '!',\n '?': '?',\n '~': '〜',\n '-': 'ー',\n '‘': '「',\n '’': '」',\n '“': '『',\n '”': '』',\n '[': '[',\n ']': ']',\n '(': '(',\n ')': ')',\n '{': '{',\n '}': '}',\n ' ': ' ',\n\n // n -> ん is a special case.\n n: 'ん',\n};\n\nexport const HIRAGANA_TO_ROMAJI: Record<string, string> = {\n // Length 2\n んい: \"n'i\",\n ゔぁ: 'va',\n ゔぃ: 'vi',\n ゔぉ: 'vo',\n ゔゃ: 'vya',\n ゔゅ: 'vyu',\n ゔぇ: 've',\n ゔょ: 'vyo',\n きゃ: 'kya',\n きぃ: 'kyi',\n きゅ: 'kyu',\n きぇ: 'kye',\n きょ: 'kyo',\n ぎゃ: 'gya',\n ぎぃ: 'gyi',\n ぎゅ: 'gyu',\n ぎぇ: 'gye',\n ぎょ: 'gyo',\n しゃ: 'sha',\n しぃ: 'syi',\n しゅ: 'shu',\n しぇ: 'she',\n しょ: 'sho',\n ちゃ: 'cya',\n ちゅ: 'chu',\n ちぇ: 'che',\n ちょ: 'cho',\n ちぃ: 'cyi',\n ぢゃ: 'dya',\n ぢぃ: 'dyi',\n ぢゅ: 'dyu',\n ぢぇ: 'dye',\n ぢょ: 'dyo',\n つぁ: 'tsa',\n つぃ: 'tsi',\n つぇ: 'tse',\n つぉ: 'tso',\n てゃ: 'tha',\n てぃ: 'thi',\n てゅ: 'thu',\n てぇ: 'the',\n てょ: 'tho',\n でゃ: 'dha',\n でぃ: 'dhi',\n でゅ: 'dhu',\n でぇ: 'dhe',\n でょ: 'dho',\n とぁ: 'twa',\n とぃ: 'twi',\n とぅ: 'twu',\n とぇ: 'twe',\n とぉ: 'two',\n どぁ: 'dwa',\n どぃ: 'dwi',\n どぅ: 'dwu',\n どぇ: 'dwe',\n どぉ: 'dwo',\n にゃ: 'nya',\n にぃ: 'nyi',\n にゅ: 'nyu',\n にぇ: 'nye',\n にょ: 'nyo',\n ひゃ: 'hya',\n ひぃ: 'hyi',\n ひゅ: 'hyu',\n ひぇ: 'hye',\n ひょ: 'hyo',\n びゃ: 'bya',\n びぃ: 'byi',\n びゅ: 'byu',\n びぇ: 'bye',\n びょ: 'byo',\n ぴゃ: 'pya',\n ぴぃ: 'pyi',\n ぴゅ: 'pyu',\n ぴぇ: 'pye',\n ぴょ: 'pyo',\n ふゃ: 'fya',\n ふょ: 'fyo',\n ふぁ: 'fa',\n ふゅ: 'fyu',\n ふぃ: 'fi',\n ふぇ: 'fe',\n ふぉ: 'fo',\n みゃ: 'mya',\n みぃ: 'myi',\n みゅ: 'myu',\n みぇ: 'mye',\n みょ: 'myo',\n りゃ: 'rya',\n りぃ: 'ryi',\n りゅ: 'ryu',\n りぇ: 'rye',\n りょ: 'ryo',\n くぁ: 'kwa',\n くぃ: 'kwi',\n くぅ: 'kwu',\n くぇ: 'kwe',\n くぉ: 'kwo',\n ぐぁ: 'gwa',\n ぐぃ: 'gwi',\n ぐぅ: 'gwu',\n ぐぇ: 'gwe',\n ぐぉ: 'gwo',\n すぁ: 'swa',\n すぃ: 'swi',\n すぅ: 'swu',\n すぇ: 'swe',\n すぉ: 'swo',\n ずぁ: 'zwa',\n ずぃ: 'zwi',\n ずぅ: 'zwu',\n ずぇ: 'zwe',\n ずぉ: 'zwo',\n じゃ: 'ja',\n じぃ: 'jyi',\n じゅ: 'ju',\n じぇ: 'je',\n じょ: 'jo',\n うぁ: 'wha',\n うぃ: 'wi',\n うぇ: 'we',\n うぉ: 'who',\n いぇ: 'ye',\n\n // Length 1\n ん: 'n',\n あ: 'a',\n い: 'i',\n う: 'u',\n え: 'e',\n お: 'o',\n ゔ: 'vu',\n か: 'ka',\n き: 'ki',\n く: 'ku',\n け: 'ke',\n こ: 'ko',\n が: 'ga',\n ぎ: 'gi',\n ぐ: 'gu',\n げ: 'ge',\n ご: 'go',\n さ: 'sa',\n し: 'shi',\n す: 'su',\n せ: 'se',\n そ: 'so',\n ざ: 'za',\n じ: 'ji',\n ず: 'zu',\n ぜ: 'ze',\n ぞ: 'zo',\n た: 'ta',\n ち: 'chi',\n つ: 'tsu',\n て: 'te',\n と: 'to',\n だ: 'da',\n ぢ: 'di',\n づ: 'du',\n で: 'de',\n ど: 'do',\n な: 'na',\n に: 'ni',\n ぬ: 'nu',\n ね: 'ne',\n の: 'no',\n は: 'ha',\n ひ: 'hi',\n ふ: 'fu',\n へ: 'he',\n ほ: 'ho',\n ば: 'ba',\n び: 'bi',\n ぶ: 'bu',\n べ: 'be',\n ぼ: 'bo',\n ぱ: 'pa',\n ぴ: 'pi',\n ぷ: 'pu',\n ぺ: 'pe',\n ぽ: 'po',\n ま: 'ma',\n み: 'mi',\n む: 'mu',\n め: 'me',\n も: 'mo',\n や: 'ya',\n ゆ: 'yu',\n よ: 'yo',\n ら: 'ra',\n り: 'ri',\n る: 'ru',\n れ: 're',\n ろ: 'ro',\n わ: 'wa',\n ゐ: 'wi',\n ゑ: 'we',\n を: 'wo',\n\n // Length 1 Special/Symbols\n '。': '.',\n '、': ',',\n ':': ':',\n '・': '/',\n '!': '!',\n '?': '?',\n '〜': '~',\n ー: '-',\n '「': '‘',\n '」': '’',\n '『': '“',\n '』': '”',\n '[': '[',\n ']': ']',\n '(': '(',\n ')': ')',\n '{': '{',\n '}': '}',\n ' ': ' ',\n\n // Length 1 Small - Even though these are usually represented with `x` or `l` prepending them, in romaji it makes the most sense to not do that\n ゃ: 'ya',\n ゅ: 'yu',\n ょ: 'yo',\n ゎ: 'wa',\n ぁ: 'a',\n ぃ: 'i',\n ぅ: 'u',\n ぇ: 'e',\n ぉ: 'o',\n ヵ: 'ka',\n ヶ: 'ke',\n\n // Double letters - these **must** always be matched last or they will break previous maches\n っq: 'qq',\n っv: 'vv',\n っx: 'xx',\n っk: 'kk',\n っg: 'gg',\n っs: 'ss',\n っz: 'zz',\n っj: 'jj',\n っt: 'tt',\n っd: 'dd',\n っh: 'hh',\n っf: 'ff',\n っb: 'bb',\n っp: 'pp',\n っm: 'mm',\n っy: 'yy',\n っr: 'rr',\n っw: 'ww',\n っc: 'cc',\n\n // `っん` is a special case\n っn: 'n',\n\n // single `っ` is weird, some converters just remove it, some leave the `っ` in kana, some replace with `xtsu` or `ltsu`\n っ: '',\n};\n","import { convertHiraganaToKatakana } from './japanese';\nimport { HIRAGANA_TO_ROMAJI, ROMAJI_TO_HIRAGANA } from './japanese-kana-romaji-dicts';\n\nexport type KanaIMEOutput = {\n kanaString: string;\n newSelectionStart: number;\n};\n\nexport function convertToHiragana(text: string): string {\n let newText = text.toLowerCase();\n for (const [romaji, kana] of Object.entries(ROMAJI_TO_HIRAGANA)) {\n newText = newText.replaceAll(romaji, kana);\n }\n return fillSokuonGaps(newText);\n}\n\nexport function convertToKanaIME(text: string, selectionStart: number): KanaIMEOutput {\n const prevSelectionStart = selectionStart;\n const prevLength = text.length;\n let kanaString = '';\n\n const textLowered = text.toLowerCase();\n if (\n textLowered[prevSelectionStart - 1] === 'n' &&\n textLowered\n .slice(0, prevSelectionStart - 1)\n .replaceAll('nn', '')\n .at(-1) !== 'n'\n ) {\n const n = text.slice(prevSelectionStart - 1, prevSelectionStart);\n const beforeN = text.slice(0, prevSelectionStart - 1);\n const afterN = text.slice(prevSelectionStart);\n kanaString = convertToKana(beforeN) + n + convertToKana(afterN);\n } else if (textLowered.slice(prevSelectionStart - 2, prevSelectionStart) === 'ny') {\n const ny = text.slice(prevSelectionStart - 2, prevSelectionStart);\n const beforeN = text.slice(0, prevSelectionStart - 2);\n const afterN = text.slice(prevSelectionStart);\n kanaString = convertToKana(beforeN) + ny + convertToKana(afterN);\n } else {\n kanaString = convertToKana(text);\n }\n\n const selectionOffset = kanaString.length - prevLength;\n\n return { kanaString, newSelectionStart: prevSelectionStart + selectionOffset };\n}\n\nexport function convertToKana(text: string): string {\n let newText = text;\n for (const [romaji, kana] of Object.entries(ROMAJI_TO_HIRAGANA)) {\n newText = newText.replaceAll(romaji, kana);\n newText = newText.replaceAll(romaji.toUpperCase(), convertHiraganaToKatakana(kana).toUpperCase());\n }\n return fillSokuonGaps(newText);\n}\n\nfunction fillSokuonGaps(text: string): string {\n return text.replaceAll(/っ[a-z](?=っ)/g, 'っっ').replaceAll(/ッ[A-Z](?=ッ)/g, 'ッッ');\n}\n\nexport function convertToRomaji(text: string): string {\n let newText = text;\n for (const [kana, romaji] of Object.entries(HIRAGANA_TO_ROMAJI)) {\n newText = newText.replaceAll(kana, romaji);\n newText = newText.replaceAll(convertHiraganaToKatakana(kana), romaji);\n }\n return newText;\n}\n\nexport function convertAlphabeticToKana(text: string): string {\n let part = '';\n let result = '';\n\n for (const char of text) {\n let c = char.codePointAt(0) as number;\n if (c >= 0x41 && c <= 0x5a) {\n // ['A', 'Z']\n c += 0x61 - 0x41;\n } else if (c >= 0x61 && c <= 0x7a) {\n // ['a', 'z']\n // NOP\n } else if (c >= 0xff21 && c <= 0xff3a) {\n // ['A', 'Z'] fullwidth\n c += 0x61 - 0xff21;\n } else if (c >= 0xff41 && c <= 0xff5a) {\n // ['a', 'z'] fullwidth\n c += 0x61 - 0xff41;\n } else if (c === 0x2d || c === 0xff0d) {\n // '-' or fullwidth dash\n c = 0x2d;\n } else {\n if (part.length > 0) {\n result += convertToHiragana(part);\n part = '';\n }\n result += char;\n continue;\n }\n part += String.fromCodePoint(c);\n }\n\n if (part.length > 0) {\n result += convertToHiragana(part);\n }\n return result;\n}\n","import type { BidirectionalConversionPreprocessor, TextProcessor } from '../../types/language';\nimport { basicTextProcessorOptions } from '../text-processors';\nimport {\n collapseEmphaticSequences as collapseEmphaticSequencesFunction,\n convertAlphanumericToFullWidth,\n convertFullWidthAlphanumericToNormal,\n convertHalfWidthKanaToFullWidth,\n convertHiraganaToKatakana as convertHiraganaToKatakanaFunction,\n convertKatakanaToHiragana as convertKatakanaToHiraganaFunction,\n normalizeCJKCompatibilityCharacters as normalizeCJKCompatibilityCharactersFunction,\n normalizeCombiningCharacters as normalizeCombiningCharactersFunction,\n} from './japanese';\nimport { convertAlphabeticToKana } from './japanese-wanakana';\n\nexport const convertHalfWidthCharacters: TextProcessor<boolean> = {\n name: 'Convert half width characters to full width',\n description: '\\uff96\\uff90\\uff81\\uff6c\\uff9d \\u2192 \\u30e8\\u30df\\u30c1\\u30e3\\u30f3',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? convertHalfWidthKanaToFullWidth(str) : str),\n};\n\nexport const alphabeticToHiragana: TextProcessor<boolean> = {\n name: 'Convert alphabetic characters to hiragana',\n description: 'yomichan \\u2192 \\u3088\\u307f\\u3061\\u3083\\u3093',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? convertAlphabeticToKana(str) : str),\n};\n\nexport const alphanumericWidthVariants: BidirectionalConversionPreprocessor = {\n name: 'Convert between alphabetic width variants',\n description: '\\uff59\\uff4f\\uff4d\\uff49\\uff54\\uff41\\uff4e \\u2192 yomitan and vice versa',\n options: ['off', 'direct', 'inverse'],\n process: (str, setting) => {\n switch (setting) {\n case 'off':\n return str;\n case 'direct':\n return convertFullWidthAlphanumericToNormal(str);\n case 'inverse':\n return convertAlphanumericToFullWidth(str);\n }\n },\n};\n\nexport const convertHiraganaToKatakana: BidirectionalConversionPreprocessor = {\n name: 'Convert hiragana to katakana',\n description: '\\u3088\\u307f\\u3061\\u3083\\u3093 \\u2192 \\u30e8\\u30df\\u30c1\\u30e3\\u30f3 and vice versa',\n options: ['off', 'direct', 'inverse'],\n process: (str, setting) => {\n switch (setting) {\n case 'off':\n return str;\n case 'direct':\n return convertHiraganaToKatakanaFunction(str);\n case 'inverse':\n return convertKatakanaToHiraganaFunction(str);\n }\n },\n};\n\nexport const collapseEmphaticSequences: TextProcessor<[collapseEmphatic: boolean, collapseEmphaticFull: boolean]> = {\n name: 'Collapse emphatic character sequences',\n description:\n '\\u3059\\u3063\\u3063\\u3054\\u30fc\\u30fc\\u3044 \\u2192 \\u3059\\u3063\\u3054\\u30fc\\u3044 / \\u3059\\u3054\\u3044',\n options: [\n [false, false],\n [true, false],\n [true, true],\n ],\n process: (str, setting) => {\n const [collapseEmphatic, collapseEmphaticFull] = setting;\n if (collapseEmphatic) {\n str = collapseEmphaticSequencesFunction(str, collapseEmphaticFull);\n }\n return str;\n },\n};\n\nexport const normalizeCombiningCharacters: TextProcessor<boolean> = {\n name: 'Normalize combining characters',\n description: '\\u30c8\\u3099 \\u2192 \\u30c9 (U+30C8 U+3099 \\u2192 U+30C9)',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? normalizeCombiningCharactersFunction(str) : str),\n};\n\nexport const normalizeCJKCompatibilityCharacters: TextProcessor<boolean> = {\n name: 'Normalize CJK Compatibility Characters',\n description: '\\u3300 \\u2192 \\u30a2\\u30d1\\u30fc\\u30c8',\n options: basicTextProcessorOptions,\n process: (str, setting) => (setting ? normalizeCJKCompatibilityCharactersFunction(str) : str),\n};\n","import type { Rule, SuffixRule } from '../types/language-transformer';\n\nexport function suffixInflection<TCondition extends string>(\n inflectedSuffix: string,\n deinflectedSuffix: string,\n conditionsIn: TCondition[],\n conditionsOut: TCondition[],\n): SuffixRule<TCondition> {\n const suffixRegExp = new RegExp(`${inflectedSuffix}$`);\n return {\n type: 'suffix',\n isInflected: suffixRegExp,\n deinflected: deinflectedSuffix,\n deinflect: (text) => text.slice(0, -inflectedSuffix.length) + deinflectedSuffix,\n conditionsIn,\n conditionsOut,\n };\n}\n\nexport function prefixInflection<TCondition extends string>(\n inflectedPrefix: string,\n deinflectedPrefix: string,\n conditionsIn: TCondition[],\n conditionsOut: TCondition[],\n): Rule<TCondition> {\n const prefixRegExp = new RegExp(`^${inflectedPrefix}`);\n return {\n type: 'prefix',\n isInflected: prefixRegExp,\n deinflect: (text) => deinflectedPrefix + text.slice(inflectedPrefix.length),\n conditionsIn,\n conditionsOut,\n };\n}\n\nexport function wholeWordInflection<TCondition extends string>(\n inflectedWord: string,\n deinflectedWord: string,\n conditionsIn: TCondition[],\n conditionsOut: TCondition[],\n): Rule<TCondition> {\n const regex = new RegExp(`^${inflectedWord}$`);\n return {\n type: 'wholeWord',\n isInflected: regex,\n deinflect: () => deinflectedWord,\n conditionsIn,\n conditionsOut,\n };\n}\n","import type { LanguageTransformDescriptor, SuffixRule } from '../../types/language-transformer';\nimport { suffixInflection } from '../language-transforms';\n\nconst shimauEnglishDescription =\n '1. Shows a sense of regret/surprise when you did have volition in doing something, but it turned out to be bad to do.\\n' +\n '2. Shows perfective/punctual achievement. This shows that an action has been completed.\\n' +\n '3. Shows unintentional action–“accidentally”.\\n';\n\nconst passiveEnglishDescription =\n '1. Indicates an action received from an action performer.\\n' +\n '2. Expresses respect for the subject of action performer.\\n';\n\nconst ikuVerbs = ['いく', '行く', '逝く', '往く'];\nconst godanUSpecialVerbs = [\n 'こう',\n 'とう',\n '請う',\n '乞う',\n '恋う',\n '問う',\n '訪う',\n '宣う',\n '曰う',\n '給う',\n '賜う',\n '揺蕩う',\n];\nconst fuVerbTeConjugations = [\n ['のたまう', 'のたもう'],\n ['たまう', 'たもう'],\n ['たゆたう', 'たゆとう'],\n];\n\ntype Condition = keyof typeof conditions;\n\nfunction irregularVerbSuffixInflections(\n suffix: 'て' | 'た' | 'たら' | 'たり',\n conditionsIn: Condition[],\n conditionsOut: Condition[],\n): SuffixRule<Condition>[] {\n const inflections = [];\n for (const verb of ikuVerbs) {\n inflections.push(suffixInflection(`${verb[0]}っ${suffix}`, verb, conditionsIn, conditionsOut));\n }\n for (const verb of godanUSpecialVerbs) {\n inflections.push(suffixInflection(`${verb}${suffix}`, verb, conditionsIn, conditionsOut));\n }\n for (const [verb, teRoot] of fuVerbTeConjugations) {\n inflections.push(suffixInflection(`${teRoot}${suffix}`, verb, conditionsIn, conditionsOut));\n }\n return inflections;\n}\n\nconst conditions = {\n v: {\n name: 'Verb',\n i18n: [\n {\n language: 'ja',\n name: '動詞',\n },\n ],\n isDictionaryForm: false,\n subConditions: ['v1', 'v5', 'vk', 'vs', 'vz'],\n },\n v1: {\n name: 'Ichidan verb',\n i18n: [\n {\n language: 'ja',\n name: '一段動詞',\n },\n ],\n isDictionaryForm: true,\n subConditions: ['v1d', 'v1p'],\n },\n v1d: {\n name: 'Ichidan verb, dictionary form',\n i18n: [\n {\n language: 'ja',\n name: '一段動詞、終止形',\n },\n ],\n isDictionaryForm: false,\n },\n v1p: {\n name: 'Ichidan verb, progressive or perfect form',\n i18n: [\n {\n language: 'ja',\n name: '一段動詞、~てる・でる',\n },\n ],\n isDictionaryForm: false,\n },\n v5: {\n name: 'Godan verb',\n i18n: [\n {\n language: 'ja',\n name: '五段動詞',\n },\n ],\n isDictionaryForm: true,\n subConditions: ['v5d', 'v5s'],\n },\n v5d: {\n name: 'Godan verb, dictionary form',\n i18n: [\n {\n language: 'ja',\n name: '五段動詞、終止形',\n },\n ],\n isDictionaryForm: false,\n },\n v5s: {\n name: 'Godan verb, short causative form',\n i18n: [\n {\n language: 'ja',\n name: '五段動詞、~す・さす',\n },\n ],\n isDictionaryForm: false,\n subConditions: ['v5ss', 'v5sp'],\n },\n v5ss: {\n name: 'Godan verb, short causative form having さす ending (cannot conjugate with passive form)',\n i18n: [\n {\n language: 'ja',\n name: '五段動詞、~さす',\n },\n ],\n isDictionaryForm: false,\n },\n v5sp: {\n name: 'Godan verb, short causative form not having さす ending (can conjugate with passive form)',\n i18n: [\n {\n language: 'ja',\n name: '五段動詞、~す',\n },\n ],\n isDictionaryForm: false,\n },\n vk: {\n name: 'Kuru verb',\n i18n: [\n {\n language: 'ja',\n name: '来る動詞',\n },\n ],\n isDictionaryForm: true,\n },\n vs: {\n name: 'Suru verb',\n i18n: [\n {\n language: 'ja',\n name: 'する動詞',\n },\n ],\n isDictionaryForm: true,\n },\n vz: {\n name: 'Zuru verb',\n i18n: [\n {\n language: 'ja',\n name: 'ずる動詞',\n },\n ],\n isDictionaryForm: true,\n },\n 'adj-i': {\n name: 'Adjective with i ending',\n i18n: [\n {\n language: 'ja',\n name: '形容詞',\n },\n ],\n isDictionaryForm: true,\n },\n '-ます': {\n name: 'Polite -ます ending',\n isDictionaryForm: false,\n },\n '-ません': {\n name: 'Polite negative -ません ending',\n isDictionaryForm: false,\n },\n '-て': {\n name: 'Intermediate -て endings for progressive or perfect tense',\n isDictionaryForm: false,\n },\n '-ば': {\n name: 'Intermediate -ば endings for conditional contraction',\n isDictionaryForm: false,\n },\n '-く': {\n name: 'Intermediate -く endings for adverbs',\n isDictionaryForm: false,\n },\n '-た': {\n name: '-た form ending',\n isDictionaryForm: false,\n },\n '-ん': {\n name: '-ん negative ending',\n isDictionaryForm: false,\n },\n '-なさい': {\n name: 'Intermediate -なさい ending (polite imperative)',\n isDictionaryForm: false,\n },\n '-ゃ': {\n name: 'Intermediate -や ending (conditional contraction)',\n isDictionaryForm: false,\n },\n};\n\nexport const japaneseTransforms: LanguageTransformDescriptor<Condition> = {\n language: 'ja',\n conditions,\n transforms: {\n '-ば': {\n name: '-ば',\n description:\n \"1. Conditional form; shows that the previous stated condition's establishment is the condition for the latter stated condition to occur.\\n\" +\n '2. Shows a trigger for a latter stated perception or judgment.\\n' +\n 'Usage: Attach ば to the hypothetical form (仮定形) of verbs and i-adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~ば',\n },\n ],\n rules: [\n suffixInflection('ければ', 'い', ['-ば'], ['adj-i']),\n suffixInflection('えば', 'う', ['-ば'], ['v5']),\n suffixInflection('けば', 'く', ['-ば'], ['v5']),\n suffixInflection('げば', 'ぐ', ['-ば'], ['v5']),\n suffixInflection('せば', 'す', ['-ば'], ['v5']),\n suffixInflection('てば', 'つ', ['-ば'], ['v5']),\n suffixInflection('ねば', 'ぬ', ['-ば'], ['v5']),\n suffixInflection('べば', 'ぶ', ['-ば'], ['v5']),\n suffixInflection('めば', 'む', ['-ば'], ['v5']),\n suffixInflection('れば', 'る', ['-ば'], ['v1', 'v5', 'vk', 'vs', 'vz']),\n suffixInflection('れば', '', ['-ば'], ['-ます']),\n ],\n },\n '-ゃ': {\n name: '-ゃ',\n description: 'Contraction of -ば.',\n i18n: [\n {\n language: 'ja',\n name: '~ゃ',\n description: '「~ば」の短縮',\n },\n ],\n rules: [\n suffixInflection('けりゃ', 'ければ', ['-ゃ'], ['-ば']),\n suffixInflection('きゃ', 'ければ', ['-ゃ'], ['-ば']),\n suffixInflection('や', 'えば', ['-ゃ'], ['-ば']),\n suffixInflection('きゃ', 'けば', ['-ゃ'], ['-ば']),\n suffixInflection('ぎゃ', 'げば', ['-ゃ'], ['-ば']),\n suffixInflection('しゃ', 'せば', ['-ゃ'], ['-ば']),\n suffixInflection('ちゃ', 'てば', ['-ゃ'], ['-ば']),\n suffixInflection('にゃ', 'ねば', ['-ゃ'], ['-ば']),\n suffixInflection('びゃ', 'べば', ['-ゃ'], ['-ば']),\n suffixInflection('みゃ', 'めば', ['-ゃ'], ['-ば']),\n suffixInflection('りゃ', 'れば', ['-ゃ'], ['-ば']),\n ],\n },\n '-ちゃ': {\n name: '-ちゃ',\n description:\n 'Contraction of ~ては.\\n' +\n '1. Explains how something always happens under the condition that it marks.\\n' +\n '2. Expresses the repetition (of a series of) actions.\\n' +\n \"3. Indicates a hypothetical situation in which the speaker gives a (negative) evaluation about the other party's intentions.\\n\" +\n '4. Used in \"Must Not\" patterns like ~てはいけない.\\n' +\n 'Usage: Attach は after the て-form of verbs, contract ては into ちゃ.',\n i18n: [\n {\n language: 'ja',\n name: '~ちゃ',\n description: '「~ては」の短縮',\n },\n ],\n rules: [\n suffixInflection('ちゃ', 'る', ['v5'], ['v1']),\n suffixInflection('いじゃ', 'ぐ', ['v5'], ['v5']),\n suffixInflection('いちゃ', 'く', ['v5'], ['v5']),\n suffixInflection('しちゃ', 'す', ['v5'], ['v5']),\n suffixInflection('っちゃ', 'う', ['v5'], ['v5']),\n suffixInflection('っちゃ', 'く', ['v5'], ['v5']),\n suffixInflection('っちゃ', 'つ', ['v5'], ['v5']),\n suffixInflection('っちゃ', 'る', ['v5'], ['v5']),\n suffixInflection('んじゃ', 'ぬ', ['v5'], ['v5']),\n suffixInflection('んじゃ', 'ぶ', ['v5'], ['v5']),\n suffixInflection('んじゃ', 'む', ['v5'], ['v5']),\n suffixInflection('じちゃ', 'ずる', ['v5'], ['vz']),\n suffixInflection('しちゃ', 'する', ['v5'], ['vs']),\n suffixInflection('為ちゃ', '為る', ['v5'], ['vs']),\n suffixInflection('きちゃ', 'くる', ['v5'], ['vk']),\n suffixInflection('来ちゃ', '来る', ['v5'], ['vk']),\n suffixInflection('來ちゃ', '來る', ['v5'], ['vk']),\n ],\n },\n '-ちゃう': {\n name: '-ちゃう',\n description: `Contraction of -しまう.\\n${shimauEnglishDescription}Usage: Attach しまう after the て-form of verbs, contract てしまう into ちゃう.`,\n i18n: [\n {\n language: 'ja',\n name: '~ちゃう',\n description: '「~てしまう」のややくだけた口頭語的表現',\n },\n ],\n rules: [\n suffixInflection('ちゃう', 'る', ['v5'], ['v1']),\n suffixInflection('いじゃう', 'ぐ', ['v5'], ['v5']),\n suffixInflection('いちゃう', 'く', ['v5'], ['v5']),\n suffixInflection('しちゃう', 'す', ['v5'], ['v5']),\n suffixInflection('っちゃう', 'う', ['v5'], ['v5']),\n suffixInflection('っちゃう', 'く', ['v5'], ['v5']),\n suffixInflection('っちゃう', 'つ', ['v5'], ['v5']),\n suffixInflection('っちゃう', 'る', ['v5'], ['v5']),\n suffixInflection('んじゃう', 'ぬ', ['v5'], ['v5']),\n suffixInflection('んじゃう', 'ぶ', ['v5'], ['v5']),\n suffixInflection('んじゃう', 'む', ['v5'], ['v5']),\n suffixInflection('じちゃう', 'ずる', ['v5'], ['vz']),\n suffixInflection('しちゃう', 'する', ['v5'], ['vs']),\n suffixInflection('為ちゃう', '為る', ['v5'], ['vs']),\n suffixInflection('きちゃう', 'くる', ['v5'], ['vk']),\n suffixInflection('来ちゃう', '来る', ['v5'], ['vk']),\n suffixInflection('來ちゃう', '來る', ['v5'], ['vk']),\n ],\n },\n '-ちまう': {\n name: '-ちまう',\n description: `Contraction of -しまう.\\n${shimauEnglishDescription}Usage: Attach しまう after the て-form of verbs, contract てしまう into ちまう.`,\n i18n: [\n {\n language: 'ja',\n name: '~ちまう',\n description: '「~てしまう」の音変化',\n },\n ],\n rules: [\n suffixInflection('ちまう', 'る', ['v5'], ['v1']),\n suffixInflection('いじまう', 'ぐ', ['v5'], ['v5']),\n suffixInflection('いちまう', 'く', ['v5'], ['v5']),\n suffixInflection('しちまう', 'す', ['v5'], ['v5']),\n suffixInflection('っちまう', 'う', ['v5'], ['v5']),\n suffixInflection('っちまう', 'く', ['v5'], ['v5']),\n suffixInflection('っちまう', 'つ', ['v5'], ['v5']),\n suffixInflection('っちまう', 'る', ['v5'], ['v5']),\n suffixInflection('んじまう', 'ぬ', ['v5'], ['v5']),\n suffixInflection('んじまう', 'ぶ', ['v5'], ['v5']),\n suffixInflection('んじまう', 'む', ['v5'], ['v5']),\n suffixInflection('じちまう', 'ずる', ['v5'], ['vz']),\n suffixInflection('しちまう', 'する', ['v5'], ['vs']),\n suffixInflection('為ちまう', '為る', ['v5'], ['vs']),\n suffixInflection('きちまう', 'くる', ['v5'], ['vk']),\n suffixInflection('来ちまう', '来る', ['v5'], ['vk']),\n suffixInflection('來ちまう', '來る', ['v5'], ['vk']),\n ],\n },\n '-しまう': {\n name: '-しまう',\n description: `${shimauEnglishDescription}Usage: Attach しまう after the て-form of verbs.`,\n i18n: [\n {\n language: 'ja',\n name: '~しまう',\n description:\n 'その動作がすっかり終わる、その状態が完成することを表す。終わったことを強調したり、不本意である、困ったことになった、などの気持ちを添えたりすることもある。',\n },\n ],\n rules: [\n suffixInflection('てしまう', 'て', ['v5'], ['-て']),\n suffixInflection('でしまう', 'で', ['v5'], ['-て']),\n ],\n },\n '-なさい': {\n name: '-なさい',\n description:\n 'Polite imperative suffix.\\n' + 'Usage: Attach なさい after the continuative form (連用形) of verbs.',\n i18n: [\n {\n language: 'ja',\n name: '~なさい',\n description: '動詞「なさる」の命令形',\n },\n ],\n rules: [\n suffixInflection('なさい', 'る', ['-なさい'], ['v1']),\n suffixInflection('いなさい', 'う', ['-なさい'], ['v5']),\n suffixInflection('きなさい', 'く', ['-なさい'], ['v5']),\n suffixInflection('ぎなさい', 'ぐ', ['-なさい'], ['v5']),\n suffixInflection('しなさい', 'す', ['-なさい'], ['v5']),\n suffixInflection('ちなさい', 'つ', ['-なさい'], ['v5']),\n suffixInflection('になさい', 'ぬ', ['-なさい'], ['v5']),\n suffixInflection('びなさい', 'ぶ', ['-なさい'], ['v5']),\n suffixInflection('みなさい', 'む', ['-なさい'], ['v5']),\n suffixInflection('りなさい', 'る', ['-なさい'], ['v5']),\n suffixInflection('じなさい', 'ずる', ['-なさい'], ['vz']),\n suffixInflection('しなさい', 'する', ['-なさい'], ['vs']),\n suffixInflection('為なさい', '為る', ['-なさい'], ['vs']),\n suffixInflection('きなさい', 'くる', ['-なさい'], ['vk']),\n suffixInflection('来なさい', '来る', ['-なさい'], ['vk']),\n suffixInflection('來なさい', '來る', ['-なさい'], ['vk']),\n ],\n },\n '-そう': {\n name: '-そう',\n description:\n 'Appearing that; looking like.\\n' +\n 'Usage: Attach そう to the continuative form (連用形) of verbs, or to the stem of adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~そう',\n description: 'そういう様子だ、そうなる様子だということ、すなわち様態を表す助動詞。',\n },\n ],\n rules: [\n suffixInflection('そう', 'い', [], ['adj-i']),\n suffixInflection('そう', 'る', [], ['v1']),\n suffixInflection('いそう', 'う', [], ['v5']),\n suffixInflection('きそう', 'く', [], ['v5']),\n suffixInflection('ぎそう', 'ぐ', [], ['v5']),\n suffixInflection('しそう', 'す', [], ['v5']),\n suffixInflection('ちそう', 'つ', [], ['v5']),\n suffixInflection('にそう', 'ぬ', [], ['v5']),\n suffixInflection('びそう', 'ぶ', [], ['v5']),\n suffixInflection('みそう', 'む', [], ['v5']),\n suffixInflection('りそう', 'る', [], ['v5']),\n suffixInflection('じそう', 'ずる', [], ['vz']),\n suffixInflection('しそう', 'する', [], ['vs']),\n suffixInflection('為そう', '為る', [], ['vs']),\n suffixInflection('きそう', 'くる', [], ['vk']),\n suffixInflection('来そう', '来る', [], ['vk']),\n suffixInflection('來そう', '來る', [], ['vk']),\n ],\n },\n '-すぎる': {\n name: '-すぎる',\n description:\n 'Shows something \"is too...\" or someone is doing something \"too much\".\\n' +\n 'Usage: Attach すぎる to the continuative form (連用形) of verbs, or to the stem of adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~すぎる',\n description: '程度や限度を超える',\n },\n ],\n rules: [\n suffixInflection('すぎる', 'い', ['v1'], ['adj-i']),\n suffixInflection('すぎる', 'る', ['v1'], ['v1']),\n suffixInflection('いすぎる', 'う', ['v1'], ['v5']),\n suffixInflection('きすぎる', 'く', ['v1'], ['v5']),\n suffixInflection('ぎすぎる', 'ぐ', ['v1'], ['v5']),\n suffixInflection('しすぎる', 'す', ['v1'], ['v5']),\n suffixInflection('ちすぎる', 'つ', ['v1'], ['v5']),\n suffixInflection('にすぎる', 'ぬ', ['v1'], ['v5']),\n suffixInflection('びすぎる', 'ぶ', ['v1'], ['v5']),\n suffixInflection('みすぎる', 'む', ['v1'], ['v5']),\n suffixInflection('りすぎる', 'る', ['v1'], ['v5']),\n suffixInflection('じすぎる', 'ずる', ['v1'], ['vz']),\n suffixInflection('しすぎる', 'する', ['v1'], ['vs']),\n suffixInflection('為すぎる', '為る', ['v1'], ['vs']),\n suffixInflection('きすぎる', 'くる', ['v1'], ['vk']),\n suffixInflection('来すぎる', '来る', ['v1'], ['vk']),\n suffixInflection('來すぎる', '來る', ['v1'], ['vk']),\n ],\n },\n '-過ぎる': {\n name: '-過ぎる',\n description:\n 'Shows something \"is too...\" or someone is doing something \"too much\".\\n' +\n 'Usage: Attach 過ぎる to the continuative form (連用形) of verbs, or to the stem of adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~過ぎる',\n description: '程度や限度を超える',\n },\n ],\n rules: [\n suffixInflection('過ぎる', 'い', ['v1'], ['adj-i']),\n suffixInflection('過ぎる', 'る', ['v1'], ['v1']),\n suffixInflection('い過ぎる', 'う', ['v1'], ['v5']),\n suffixInflection('き過ぎる', 'く', ['v1'], ['v5']),\n suffixInflection('ぎ過ぎる', 'ぐ', ['v1'], ['v5']),\n suffixInflection('し過ぎる', 'す', ['v1'], ['v5']),\n suffixInflection('ち過ぎる', 'つ', ['v1'], ['v5']),\n suffixInflection('に過ぎる', 'ぬ', ['v1'], ['v5']),\n suffixInflection('び過ぎる', 'ぶ', ['v1'], ['v5']),\n suffixInflection('み過ぎる', 'む', ['v1'], ['v5']),\n suffixInflection('り過ぎる', 'る', ['v1'], ['v5']),\n suffixInflection('じ過ぎる', 'ずる', ['v1'], ['vz']),\n suffixInflection('し過ぎる', 'する', ['v1'], ['vs']),\n suffixInflection('為過ぎる', '為る', ['v1'], ['vs']),\n suffixInflection('き過ぎる', 'くる', ['v1'], ['vk']),\n suffixInflection('来過ぎる', '来る', ['v1'], ['vk']),\n suffixInflection('來過ぎる', '來る', ['v1'], ['vk']),\n ],\n },\n '-たい': {\n name: '-たい',\n description:\n '1. Expresses the feeling of desire or hope.\\n' +\n '2. Used in ...たいと思います, an indirect way of saying what the speaker intends to do.\\n' +\n 'Usage: Attach たい to the continuative form (連用形) of verbs. たい itself conjugates as i-adjective.',\n i18n: [\n {\n language: 'ja',\n name: '~たい',\n description: 'することをのぞんでいる、という、希望や願望の気持ちをあらわす。',\n },\n ],\n rules: [\n suffixInflection('たい', 'る', ['adj-i'], ['v1']),\n suffixInflection('いたい', 'う', ['adj-i'], ['v5']),\n suffixInflection('きたい', 'く', ['adj-i'], ['v5']),\n suffixInflection('ぎたい', 'ぐ', ['adj-i'], ['v5']),\n suffixInflection('したい', 'す', ['adj-i'], ['v5']),\n suffixInflection('ちたい', 'つ', ['adj-i'], ['v5']),\n suffixInflection('にたい', 'ぬ', ['adj-i'], ['v5']),\n suffixInflection('びたい', 'ぶ', ['adj-i'], ['v5']),\n suffixInflection('みたい', 'む', ['adj-i'], ['v5']),\n suffixInflection('りたい', 'る', ['adj-i'], ['v5']),\n suffixInflection('じたい', 'ずる', ['adj-i'], ['vz']),\n suffixInflection('したい', 'する', ['adj-i'], ['vs']),\n suffixInflection('為たい', '為る', ['adj-i'], ['vs']),\n suffixInflection('きたい', 'くる', ['adj-i'], ['vk']),\n suffixInflection('来たい', '来る', ['adj-i'], ['vk']),\n suffixInflection('來たい', '來る', ['adj-i'], ['vk']),\n ],\n },\n '-たら': {\n name: '-たら',\n description:\n '1. Denotes the latter stated event is a continuation of the previous stated event.\\n' +\n '2. Assumes that a matter has been completed or concluded.\\n' +\n 'Usage: Attach たら to the continuative form (連用形) of verbs after euphonic change form, かったら to the stem of i-adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~たら',\n description: '仮定をあらわす・…すると・したあとに',\n },\n ],\n rules: [\n suffixInflection('かったら', 'い', [], ['adj-i']),\n suffixInflection('たら', 'る', [], ['v1']),\n suffixInflection('いたら', 'く', [], ['v5']),\n suffixInflection('いだら', 'ぐ', [], ['v5']),\n suffixInflection('したら', 'す', [], ['v5']),\n suffixInflection('ったら', 'う', [], ['v5']),\n suffixInflection('ったら', 'つ', [], ['v5']),\n suffixInflection('ったら', 'る', [], ['v5']),\n suffixInflection('んだら', 'ぬ', [], ['v5']),\n suffixInflection('んだら', 'ぶ', [], ['v5']),\n suffixInflection('んだら', 'む', [], ['v5']),\n suffixInflection('じたら', 'ずる', [], ['vz']),\n suffixInflection('したら', 'する', [], ['vs']),\n suffixInflection('為たら', '為る', [], ['vs']),\n suffixInflection('きたら', 'くる', [], ['vk']),\n suffixInflection('来たら', '来る', [], ['vk']),\n suffixInflection('來たら', '來る', [], ['vk']),\n ...irregularVerbSuffixInflections('たら', [], ['v5']),\n suffixInflection('ましたら', 'ます', [], ['-ます']),\n ],\n },\n '-たり': {\n name: '-たり',\n description:\n '1. Shows two actions occurring back and forth (when used with two verbs).\\n' +\n '2. Shows examples of actions and states (when used with multiple verbs and adjectives).\\n' +\n 'Usage: Attach たり to the continuative form (連用形) of verbs after euphonic change form, かったり to the stem of i-adjectives',\n i18n: [\n {\n language: 'ja',\n name: '~たり',\n description: 'ある動作を例示的にあげることを表わす。',\n },\n ],\n rules: [\n suffixInflection('かったり', 'い', [], ['adj-i']),\n suffixInflection('たり', 'る', [], ['v1']),\n suffixInflection('いたり', 'く', [], ['v5']),\n suffixInflection('いだり', 'ぐ', [], ['v5']),\n suffixInflection('したり', 'す', [], ['v5']),\n suffixInflection('ったり', 'う', [], ['v5']),\n suffixInflection('ったり', 'つ', [], ['v5']),\n suffixInflection('ったり', 'る', [], ['v5']),\n suffixInflection('んだり', 'ぬ', [], ['v5']),\n suffixInflection('んだり', 'ぶ', [], ['v5']),\n suffixInflection('んだり', 'む', [], ['v5']),\n suffixInflection('じたり', 'ずる', [], ['vz']),\n suffixInflection('したり', 'する', [], ['vs']),\n suffixInflection('為たり', '為る', [], ['vs']),\n suffixInflection('きたり', 'くる', [], ['vk']),\n suffixInflection('来たり', '来る', [], ['vk']),\n suffixInflection('來たり', '來る', [], ['vk']),\n ...irregularVerbSuffixInflections('たり', [], ['v5']),\n ],\n },\n '-て': {\n name: '-て',\n description:\n 'て-form.\\n' +\n 'It has a myriad of meanings. Primarily, it is a conjunctive particle that connects two clauses together.\\n' +\n 'Usage: Attach て to the continuative form (連用形) of verbs after euphonic change form, くて to the stem of i-adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~て',\n },\n ],\n rules: [\n suffixInflection('くて', 'い', ['-て'], ['adj-i']),\n suffixInflection('て', 'る', ['-て'], ['v1']),\n suffixInflection('いて', 'く', ['-て'], ['v5']),\n suffixInflection('いで', 'ぐ', ['-て'], ['v5']),\n suffixInflection('して', 'す', ['-て'], ['v5']),\n suffixInflection('って', 'う', ['-て'], ['v5']),\n suffixInflection('って', 'つ', ['-て'], ['v5']),\n suffixInflection('って', 'る', ['-て'], ['v5']),\n suffixInflection('んで', 'ぬ', ['-て'], ['v5']),\n suffixInflection('んで', 'ぶ', ['-て'], ['v5']),\n suffixInflection('んで', 'む', ['-て'], ['v5']),\n suffixInflection('じて', 'ずる', ['-て'], ['vz']),\n suffixInflection('して', 'する', ['-て'], ['vs']),\n suffixInflection('為て', '為る', ['-て'], ['vs']),\n suffixInflection('きて', 'くる', ['-て'], ['vk']),\n suffixInflection('来て', '来る', ['-て'], ['vk']),\n suffixInflection('來て', '來る', ['-て'], ['vk']),\n ...irregularVerbSuffixInflections('て', ['-て'], ['v5']),\n suffixInflection('まして', 'ます', [], ['-ます']),\n ],\n },\n '-ず': {\n name: '-ず',\n description:\n '1. Negative form of verbs.\\n' +\n '2. Continuative form (連用形) of the particle ぬ (nu).\\n' +\n 'Usage: Attach ず to the irrealis form (未然形) of verbs.',\n i18n: [\n {\n language: 'ja',\n name: '~ず',\n description: '~ない',\n },\n ],\n rules: [\n suffixInflection('ず', 'る', [], ['v1']),\n suffixInflection('かず', 'く', [], ['v5']),\n suffixInflection('がず', 'ぐ', [], ['v5']),\n suffixInflection('さず', 'す', [], ['v5']),\n suffixInflection('たず', 'つ', [], ['v5']),\n suffixInflection('なず', 'ぬ', [], ['v5']),\n suffixInflection('ばず', 'ぶ', [], ['v5']),\n suffixInflection('まず', 'む', [], ['v5']),\n suffixInflection('らず', 'る', [], ['v5']),\n suffixInflection('わず', 'う', [], ['v5']),\n suffixInflection('ぜず', 'ずる', [], ['vz']),\n suffixInflection('せず', 'する', [], ['vs']),\n suffixInflection('為ず', '為る', [], ['vs']),\n suffixInflection('こず', 'くる', [], ['vk']),\n suffixInflection('来ず', '来る', [], ['vk']),\n suffixInflection('來ず', '來る', [], ['vk']),\n ],\n },\n '-ぬ': {\n name: '-ぬ',\n description:\n 'Negative form of verbs.\\n' +\n 'Usage: Attach ぬ to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せぬ',\n i18n: [\n {\n language: 'ja',\n name: '~ぬ',\n description: '~ない',\n },\n ],\n rules: [\n suffixInflection('ぬ', 'る', [], ['v1']),\n suffixInflection('かぬ', 'く', [], ['v5']),\n suffixInflection('がぬ', 'ぐ', [], ['v5']),\n suffixInflection('さぬ', 'す', [], ['v5']),\n suffixInflection('たぬ', 'つ', [], ['v5']),\n suffixInflection('なぬ', 'ぬ', [], ['v5']),\n suffixInflection('ばぬ', 'ぶ', [], ['v5']),\n suffixInflection('まぬ', 'む', [], ['v5']),\n suffixInflection('らぬ', 'る', [], ['v5']),\n suffixInflection('わぬ', 'う', [], ['v5']),\n suffixInflection('ぜぬ', 'ずる', [], ['vz']),\n suffixInflection('せぬ', 'する', [], ['vs']),\n suffixInflection('為ぬ', '為る', [], ['vs']),\n suffixInflection('こぬ', 'くる', [], ['vk']),\n suffixInflection('来ぬ', '来る', [], ['vk']),\n suffixInflection('來ぬ', '來る', [], ['vk']),\n ],\n },\n '-ん': {\n name: '-ん',\n description:\n 'Negative form of verbs; a sound change of ぬ.\\n' +\n 'Usage: Attach ん to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せん',\n i18n: [\n {\n language: 'ja',\n name: '~ん',\n description: '~ない',\n },\n ],\n rules: [\n suffixInflection('ん', 'る', ['-ん'], ['v1']),\n suffixInflection('かん', 'く', ['-ん'], ['v5']),\n suffixInflection('がん', 'ぐ', ['-ん'], ['v5']),\n suffixInflection('さん', 'す', ['-ん'], ['v5']),\n suffixInflection('たん', 'つ', ['-ん'], ['v5']),\n suffixInflection('なん', 'ぬ', ['-ん'], ['v5']),\n suffixInflection('ばん', 'ぶ', ['-ん'], ['v5']),\n suffixInflection('まん', 'む', ['-ん'], ['v5']),\n suffixInflection('らん', 'る', ['-ん'], ['v5']),\n suffixInflection('わん', 'う', ['-ん'], ['v5']),\n suffixInflection('ぜん', 'ずる', ['-ん'], ['vz']),\n suffixInflection('せん', 'する', ['-ん'], ['vs']),\n suffixInflection('為ん', '為る', ['-ん'], ['vs']),\n suffixInflection('こん', 'くる', ['-ん'], ['vk']),\n suffixInflection('来ん', '来る', ['-ん'], ['vk']),\n suffixInflection('來ん', '來る', ['-ん'], ['vk']),\n ],\n },\n '-んばかり': {\n name: '-んばかり',\n description:\n 'Shows an action or condition is on the verge of occurring, or an excessive/extreme degree.\\n' +\n 'Usage: Attach んばかり to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せんばかり',\n i18n: [\n {\n language: 'ja',\n name: '~んばかり',\n description: '今にもそうなりそうな、しかし辛うじてそうなっていないようなさまを指す表現',\n },\n ],\n rules: [\n suffixInflection('んばかり', 'る', [], ['v1']),\n suffixInflection('かんばかり', 'く', [], ['v5']),\n suffixInflection('がんばかり', 'ぐ', [], ['v5']),\n suffixInflection('さんばかり', 'す', [], ['v5']),\n suffixInflection('たんばかり', 'つ', [], ['v5']),\n suffixInflection('なんばかり', 'ぬ', [], ['v5']),\n suffixInflection('ばんばかり', 'ぶ', [], ['v5']),\n suffixInflection('まんばかり', 'む', [], ['v5']),\n suffixInflection('らんばかり', 'る', [], ['v5']),\n suffixInflection('わんばかり', 'う', [], ['v5']),\n suffixInflection('ぜんばかり', 'ずる', [], ['vz']),\n suffixInflection('せんばかり', 'する', [], ['vs']),\n suffixInflection('為んばかり', '為る', [], ['vs']),\n suffixInflection('こんばかり', 'くる', [], ['vk']),\n suffixInflection('来んばかり', '来る', [], ['vk']),\n suffixInflection('來んばかり', '來る', [], ['vk']),\n ],\n },\n '-んとする': {\n name: '-んとする',\n description:\n \"1. Shows the speaker's will or intention.\\n\" +\n '2. Shows an action or condition is on the verge of occurring.\\n' +\n 'Usage: Attach んとする to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せんとする',\n i18n: [\n {\n language: 'ja',\n name: '~んとする',\n description: '…しようとする、…しようとしている',\n },\n ],\n rules: [\n suffixInflection('んとする', 'る', ['vs'], ['v1']),\n suffixInflection('かんとする', 'く', ['vs'], ['v5']),\n suffixInflection('がんとする', 'ぐ', ['vs'], ['v5']),\n suffixInflection('さんとする', 'す', ['vs'], ['v5']),\n suffixInflection('たんとする', 'つ', ['vs'], ['v5']),\n suffixInflection('なんとする', 'ぬ', ['vs'], ['v5']),\n suffixInflection('ばんとする', 'ぶ', ['vs'], ['v5']),\n suffixInflection('まんとする', 'む', ['vs'], ['v5']),\n suffixInflection('らんとする', 'る', ['vs'], ['v5']),\n suffixInflection('わんとする', 'う', ['vs'], ['v5']),\n suffixInflection('ぜんとする', 'ずる', ['vs'], ['vz']),\n suffixInflection('せんとする', 'する', ['vs'], ['vs']),\n suffixInflection('為んとする', '為る', ['vs'], ['vs']),\n suffixInflection('こんとする', 'くる', ['vs'], ['vk']),\n suffixInflection('来んとする', '来る', ['vs'], ['vk']),\n suffixInflection('來んとする', '來る', ['vs'], ['vk']),\n ],\n },\n '-む': {\n name: '-む',\n description:\n 'Archaic.\\n' +\n '1. Shows an inference of a certain matter.\\n' +\n \"2. Shows speaker's intention.\\n\" +\n 'Usage: Attach む to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せむ',\n i18n: [\n {\n language: 'ja',\n name: '~む',\n description: '…だろう',\n },\n ],\n rules: [\n suffixInflection('む', 'る', [], ['v1']),\n suffixInflection('かむ', 'く', [], ['v5']),\n suffixInflection('がむ', 'ぐ', [], ['v5']),\n suffixInflection('さむ', 'す', [], ['v5']),\n suffixInflection('たむ', 'つ', [], ['v5']),\n suffixInflection('なむ', 'ぬ', [], ['v5']),\n suffixInflection('ばむ', 'ぶ', [], ['v5']),\n suffixInflection('まむ', 'む', [], ['v5']),\n suffixInflection('らむ', 'る', [], ['v5']),\n suffixInflection('わむ', 'う', [], ['v5']),\n suffixInflection('ぜむ', 'ずる', [], ['vz']),\n suffixInflection('せむ', 'する', [], ['vs']),\n suffixInflection('為む', '為る', [], ['vs']),\n suffixInflection('こむ', 'くる', [], ['vk']),\n suffixInflection('来む', '来る', [], ['vk']),\n suffixInflection('來む', '來る', [], ['vk']),\n ],\n },\n '-ざる': {\n name: '-ざる',\n description:\n 'Negative form of verbs.\\n' +\n 'Usage: Attach ざる to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せざる',\n i18n: [\n {\n language: 'ja',\n name: '~ざる',\n description: '…ない…',\n },\n ],\n rules: [\n suffixInflection('ざる', 'る', [], ['v1']),\n suffixInflection('かざる', 'く', [], ['v5']),\n suffixInflection('がざる', 'ぐ', [], ['v5']),\n suffixInflection('さざる', 'す', [], ['v5']),\n suffixInflection('たざる', 'つ', [], ['v5']),\n suffixInflection('なざる', 'ぬ', [], ['v5']),\n suffixInflection('ばざる', 'ぶ', [], ['v5']),\n suffixInflection('まざる', 'む', [], ['v5']),\n suffixInflection('らざる', 'る', [], ['v5']),\n suffixInflection('わざる', 'う', [], ['v5']),\n suffixInflection('ぜざる', 'ずる', [], ['vz']),\n suffixInflection('せざる', 'する', [], ['vs']),\n suffixInflection('為ざる', '為る', [], ['vs']),\n suffixInflection('こざる', 'くる', [], ['vk']),\n suffixInflection('来ざる', '来る', [], ['vk']),\n suffixInflection('來ざる', '來る', [], ['vk']),\n ],\n },\n '-ねば': {\n name: '-ねば',\n description:\n '1. Shows a hypothetical negation; if not ...\\n' +\n '2. Shows a must. Used with or without ならぬ.\\n' +\n 'Usage: Attach ねば to the irrealis form (未然形) of verbs.\\n' +\n 'する becomes せねば',\n i18n: [\n {\n language: 'ja',\n name: '~ねば',\n description: 'もし…ないなら。…なければならない。',\n },\n ],\n rules: [\n suffixInflection('ねば', 'る', ['-ば'], ['v1']),\n suffixInflection('かねば', 'く', ['-ば'], ['v5']),\n suffixInflection('がねば', 'ぐ', ['-ば'], ['v5']),\n suffixInflection('さねば', 'す', ['-ば'], ['v5']),\n suffixInflection('たねば', 'つ', ['-ば'], ['v5']),\n suffixInflection('なねば', 'ぬ', ['-ば'], ['v5']),\n suffixInflection('ばねば', 'ぶ', ['-ば'], ['v5']),\n suffixInflection('まねば', 'む', ['-ば'], ['v5']),\n suffixInflection('らねば', 'る', ['-ば'], ['v5']),\n suffixInflection('わねば', 'う', ['-ば'], ['v5']),\n suffixInflection('ぜねば', 'ずる', ['-ば'], ['vz']),\n suffixInflection('せねば', 'する', ['-ば'], ['vs']),\n suffixInflection('為ねば', '為る', ['-ば'], ['vs']),\n suffixInflection('こねば', 'くる', ['-ば'], ['vk']),\n suffixInflection('来ねば', '来る', ['-ば'], ['vk']),\n suffixInflection('來ねば', '來る', ['-ば'], ['vk']),\n ],\n },\n '-く': {\n name: '-く',\n description: 'Adverbial form of i-adjectives.\\n',\n i18n: [\n {\n language: 'ja',\n name: '~く',\n description: '〔形容詞で〕用言へ続く。例、「大きく育つ」の「大きく」。',\n },\n ],\n rules: [suffixInflection('く', 'い', ['-く'], ['adj-i'])],\n },\n causative: {\n name: 'causative',\n description:\n 'Describes the intention to make someone do something.\\n' +\n 'Usage: Attach させる to the irrealis form (未然形) of ichidan verbs and くる.\\n' +\n 'Attach せる to the irrealis form (未然形) of godan verbs and する.\\n' +\n 'It itself conjugates as an ichidan verb.',\n i18n: [\n {\n language: 'ja',\n name: '~せる・させる',\n description: 'だれかにある行為をさせる意を表わす時の言い方。例、「行かせる」の「せる」。',\n },\n ],\n rules: [\n suffixInflection('させる', 'る', ['v1'], ['v1']),\n suffixInflection('かせる', 'く', ['v1'], ['v5']),\n suffixInflection('がせる', 'ぐ', ['v1'], ['v5']),\n suffixInflection('させる', 'す', ['v1'], ['v5']),\n suffixInflection('たせる', 'つ', ['v1'], ['v5']),\n suffixInflection('なせる', 'ぬ', ['v1'], ['v5']),\n suffixInflection('ばせる', 'ぶ', ['v1'], ['v5']),\n suffixInflection('ませる', 'む', ['v1'], ['v5']),\n suffixInflection('らせる', 'る', ['v1'], ['v5']),\n suffixInflection('わせる', 'う', ['v1'], ['v5']),\n suffixInflection('じさせる', 'ずる', ['v1'], ['vz']),\n suffixInflection('ぜさせる', 'ずる', ['v1'], ['vz']),\n suffixInflection('させる', 'する', ['v1'], ['vs']),\n suffixInflection('為せる', '為る', ['v1'], ['vs']),\n suffixInflection('せさせる', 'する', ['v1'], ['vs']),\n suffixInflection('為させる', '為る', ['v1'], ['vs']),\n suffixInflection('こさせる', 'くる', ['v1'], ['vk']),\n suffixInflection('来させる', '来る', ['v1'], ['vk']),\n suffixInflection('來させる', '來る', ['v1'], ['vk']),\n ],\n },\n 'short causative': {\n name: 'short causative',\n description:\n 'Contraction of the causative form.\\n' +\n 'Describes the intention to make someone do something.\\n' +\n 'Usage: Attach す to the irrealis form (未然形) of godan verbs.\\n' +\n 'Attach さす to the dictionary form (終止形) of ichidan verbs.\\n' +\n 'する becomes さす, くる becomes こさす.\\n' +\n 'It itself conjugates as an godan verb.',\n i18n: [\n {\n language: 'ja',\n name: '~す・さす',\n description: 'だれかにある行為をさせる意を表わす時の言い方。例、「食べさす」の「さす」。',\n },\n ],\n rules: [\n suffixInflection('さす', 'る', ['v5ss'], ['v1']),\n suffixInflection('かす', 'く', ['v5sp'], ['v5']),\n suffixInflection('がす', 'ぐ', ['v5sp'], ['v5']),\n suffixInflection('さす', 'す', ['v5ss'], ['v5']),\n suffixInflection('たす', 'つ', ['v5sp'], ['v5']),\n suffixInflection('なす', 'ぬ', ['v5sp'], ['v5']),\n suffixInflection('ばす', 'ぶ', ['v5sp'], ['v5']),\n suffixInflection('ます', 'む', ['v5sp'], ['v5']),\n suffixInflection('らす', 'る', ['v5sp'], ['v5']),\n suffixInflection('わす', 'う', ['v5sp'], ['v5']),\n suffixInflection('じさす', 'ずる', ['v5ss'], ['vz']),\n suffixInflection('ぜさす', 'ずる', ['v5ss'], ['vz']),\n suffixInflection('さす', 'する', ['v5ss'], ['vs']),\n suffixInflection('為す', '為る', ['v5ss'], ['vs']),\n suffixInflection('こさす', 'くる', ['v5ss'], ['vk']),\n suffixInflection('来さす', '来る', ['v5ss'], ['vk']),\n suffixInflection('來さす', '來る', ['v5ss'], ['vk']),\n ],\n },\n imperative: {\n name: 'imperative',\n description:\n '1. To give orders.\\n' +\n '2. (As あれ) Represents the fact that it will never change no matter the circumstances.\\n' +\n '3. Express a feeling of hope.',\n i18n: [\n {\n language: 'ja',\n name: '命令形',\n description: '命令の意味を表わすときの形。例、「行け」。',\n },\n ],\n rules: [\n suffixInflection('ろ', 'る', [], ['v1']),\n suffixInflection('よ', 'る', [], ['v1']),\n suffixInflection('え', 'う', [], ['v5']),\n suffixInflection('け', 'く', [], ['v5']),\n suffixInflection('げ', 'ぐ', [], ['v5']),\n suffixInflection('せ', 'す', [], ['v5']),\n suffixInflection('て', 'つ', [], ['v5']),\n suffixInflection('ね', 'ぬ', [], ['v5']),\n suffixInflection('べ', 'ぶ', [], ['v5']),\n suffixInflection('め', 'む', [], ['v5']),\n suffixInflection('れ', 'る', [], ['v5']),\n suffixInflection('じろ', 'ずる', [], ['vz']),\n suffixInflection('ぜよ', 'ずる', [], ['vz']),\n suffixInflection('しろ', 'する', [], ['vs']),\n suffixInflection('せよ', 'する', [], ['vs']),\n suffixInflection('為ろ', '為る', [], ['vs']),\n suffixInflection('為よ', '為る', [], ['vs']),\n suffixInflection('こい', 'くる', [], ['vk']),\n suffixInflection('来い', '来る', [], ['vk']),\n suffixInflection('來い', '來る', [], ['vk']),\n ],\n },\n continuative: {\n name: 'continuative',\n description:\n 'Used to indicate actions that are (being) carried out.\\n' +\n 'Refers to 連用形, the part of the verb after conjugating with -ます and dropping ます.',\n i18n: [\n {\n language: 'ja',\n name: '連用形',\n description: '〔動詞などで〕「ます」などに続く。例、「バスを降りて歩きます」の「降り」「歩き」。',\n },\n ],\n rules: [\n suffixInflection('い', 'いる', [], ['v1d']),\n suffixInflection('え', 'える', [], ['v1d']),\n suffixInflection('き', 'きる', [], ['v1d']),\n suffixInflection('ぎ', 'ぎる', [], ['v1d']),\n suffixInflection('け', 'ける', [], ['v1d']),\n suffixInflection('げ', 'げる', [], ['v1d']),\n suffixInflection('じ', 'じる', [], ['v1d']),\n suffixInflection('せ', 'せる', [], ['v1d']),\n suffixInflection('ぜ', 'ぜる', [], ['v1d']),\n suffixInflection('ち', 'ちる', [], ['v1d']),\n suffixInflection('て', 'てる', [], ['v1d']),\n suffixInflection('で', 'でる', [], ['v1d']),\n suffixInflection('に', 'にる', [], ['v1d']),\n suffixInflection('ね', 'ねる', [], ['v1d']),\n suffixInflection('ひ', 'ひる', [], ['v1d']),\n suffixInflection('び', 'びる', [], ['v1d']),\n suffixInflection('へ', 'へる', [], ['v1d']),\n suffixInflection('べ', 'べる', [], ['v1d']),\n suffixInflection('み', 'みる', [], ['v1d']),\n suffixInflection('め', 'める', [], ['v1d']),\n suffixInflection('り', 'りる', [], ['v1d']),\n suffixInflection('れ', 'れる', [], ['v1d']),\n suffixInflection('い', 'う', [], ['v5']),\n suffixInflection('き', 'く', [], ['v5']),\n suffixInflection('ぎ', 'ぐ', [], ['v5']),\n suffixInflection('し', 'す', [], ['v5']),\n suffixInflection('ち', 'つ', [], ['v5']),\n suffixInflection('に', 'ぬ', [], ['v5']),\n suffixInflection('び', 'ぶ', [], ['v5']),\n suffixInflection('み', 'む', [], ['v5']),\n suffixInflection('り', 'る', [], ['v5']),\n suffixInflection('き', 'くる', [], ['vk']),\n suffixInflection('し', 'する', [], ['vs']),\n suffixInflection('来', '来る', [], ['vk']),\n suffixInflection('來', '來る', [], ['vk']),\n ],\n },\n negative: {\n name: 'negative',\n description:\n '1. Negative form of verbs.\\n' +\n '2. Expresses a feeling of solicitation to the other party.\\n' +\n 'Usage: Attach ない to the irrealis form (未然形) of verbs, くない to the stem of i-adjectives. ない itself conjugates as i-adjective. ます becomes ません.',\n i18n: [\n {\n language: 'ja',\n name: '~ない',\n description: 'その動作・作用・状態の成立を否定することを表わす。',\n },\n ],\n rules: [\n suffixInflection('くない', 'い', ['adj-i'], ['adj-i']),\n suffixInflection('ない', 'る', ['adj-i'], ['v1']),\n suffixInflection('かない', 'く', ['adj-i'], ['v5']),\n suffixInflection('がない', 'ぐ', ['adj-i'], ['v5']),\n suffixInflection('さない', 'す', ['adj-i'], ['v5']),\n suffixInflection('たない', 'つ', ['adj-i'], ['v5']),\n suffixInflection('なない', 'ぬ', ['adj-i'], ['v5']),\n suffixInflection('ばない', 'ぶ', ['adj-i'], ['v5']),\n suffixInflection('まない', 'む', ['adj-i'], ['v5']),\n suffixInflection('らない', 'る', ['adj-i'], ['v5']),\n suffixInflection('わない', 'う', ['adj-i'], ['v5']),\n suffixInflection('じない', 'ずる', ['adj-i'], ['vz']),\n suffixInflection('しない', 'する', ['adj-i'], ['vs']),\n suffixInflection('為ない', '為る', ['adj-i'], ['vs']),\n suffixInflection('こない', 'くる', ['adj-i'], ['vk']),\n suffixInflection('来ない', '来る', ['adj-i'], ['vk']),\n suffixInflection('來ない', '來る', ['adj-i'], ['vk']),\n suffixInflection('ません', 'ます', ['-ません'], ['-ます']),\n ],\n },\n '-さ': {\n name: '-さ',\n description:\n 'Nominalizing suffix of i-adjectives indicating nature, state, mind or degree.\\n' +\n 'Usage: Attach さ to the stem of i-adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~さ',\n description: 'こと。程度。',\n },\n ],\n rules: [suffixInflection('さ', 'い', [], ['adj-i'])],\n },\n passive: {\n name: 'passive',\n description: `${passiveEnglishDescription}Usage: Attach れる to the irrealis form (未然形) of godan verbs.`,\n i18n: [\n {\n language: 'ja',\n name: '~れる',\n },\n ],\n rules: [\n suffixInflection('かれる', 'く', ['v1'], ['v5']),\n suffixInflection('がれる', 'ぐ', ['v1'], ['v5']),\n suffixInflection('される', 'す', ['v1'], ['v5d', 'v5sp']),\n suffixInflection('たれる', 'つ', ['v1'], ['v5']),\n suffixInflection('なれる', 'ぬ', ['v1'], ['v5']),\n suffixInflection('ばれる', 'ぶ', ['v1'], ['v5']),\n suffixInflection('まれる', 'む', ['v1'], ['v5']),\n suffixInflection('われる', 'う', ['v1'], ['v5']),\n suffixInflection('られる', 'る', ['v1'], ['v5']),\n suffixInflection('じされる', 'ずる', ['v1'], ['vz']),\n suffixInflection('ぜされる', 'ずる', ['v1'], ['vz']),\n suffixInflection('される', 'する', ['v1'], ['vs']),\n suffixInflection('為れる', '為る', ['v1'], ['vs']),\n suffixInflection('こられる', 'くる', ['v1'], ['vk']),\n suffixInflection('来られる', '来る', ['v1'], ['vk']),\n suffixInflection('來られる', '來る', ['v1'], ['vk']),\n ],\n },\n '-た': {\n name: '-た',\n description:\n '1. Indicates a reality that has happened in the past.\\n' +\n '2. Indicates the completion of an action.\\n' +\n '3. Indicates the confirmation of a matter.\\n' +\n \"4. Indicates the speaker's confidence that the action will definitely be fulfilled.\\n\" +\n '5. Indicates the events that occur before the main clause are represented as relative past.\\n' +\n '6. Indicates a mild imperative/command.\\n' +\n 'Usage: Attach た to the continuative form (連用形) of verbs after euphonic change form, かった to the stem of i-adjectives.',\n i18n: [\n {\n language: 'ja',\n name: '~た',\n },\n ],\n rules: [\n suffixInflection('かった', 'い', ['-た'], ['adj-i']),\n suffixInflection('た', 'る', ['-た'], ['v1']),\n suffixInflection('いた', 'く', ['-た'], ['v5']),\n suffixInflection('いだ', 'ぐ', ['-た'], ['v5']),\n suffixInflection('した', 'す', ['-た'], ['v5']),\n suffixInflection('った', 'う', ['-た'], ['v5']),\n suffixInflection('った', 'つ', ['-た'], ['v5']),\n suffixInflection('った', 'る', ['-た'], ['v5']),\n suffixInflection('んだ', 'ぬ', ['-た'], ['v5']),\n suffixInflection('んだ', 'ぶ', ['-た'], ['v5']),\n suffixInflection('んだ', 'む', ['-た'], ['v5']),\n suffixInflection('じた', 'ずる', ['-た'], ['vz']),\n suffixInflection('した', 'する', ['-た'], ['vs']),\n suffixInflection('為た', '為る', ['-た'], ['vs']),\n suffixInflection('きた', 'くる', ['-た'], ['vk']),\n suffixInflection('来た', '来る', ['-た'], ['vk']),\n suffixInflection('來た', '來る', ['-た'], ['vk']),\n ...irregularVerbSuffixInflections('た', ['-た'], ['v5']),\n suffixInflection('ました', 'ます', ['-た'], ['-ます']),\n suffixInflection('でした', '', ['-た'], ['-ません']),\n suffixInflection('かった', '', ['-た'], ['-ません', '-ん']),\n ],\n },\n '-ます': {\n name: '-ます',\n description:\n 'Polite conjugation of verbs and adjectives.\\n' +\n 'Usage: Attach ます to the continuative form (連用形) of verbs.',\n i18n: [\n {\n language: 'ja',\n name: '~ます',\n },\n ],\n rules: [\n suffixInflection('ます', 'る', ['-ます'], ['v1']),\n suffixInflection('います', 'う', ['-ます'], ['v5d']),\n suffixInflection('きます', 'く', ['-ます'], ['v5d']),\n suffixInflection('ぎます', 'ぐ', ['-ます'], ['v5d']),\n suffixInflection('します', 'す', ['-ます'], ['v5d', 'v5s']),\n suffixInflection('ちます', 'つ', ['-ます'], ['v5d']),\n suffixInflection('にます', 'ぬ', ['-ます'], ['v5d']),\n suffixInflection('びます', 'ぶ', ['-ます'], ['v5d']),\n suffixInflection('みます', 'む', ['-ます'], ['v5d']),\n suffixInflection('ります', 'る', ['-ます'], ['v5d']),\n suffixInflection('じます', 'ずる', ['-ます'], ['vz']),\n suffixInflection('します', 'する', ['-ます'], ['vs']),\n suffixInflection('為ます', '為る', ['-ます'], ['vs']),\n suffixInflection('きます', 'くる', ['-ます'], ['vk']),\n suffixInflection('来ます', '来る', ['-ます'], ['vk']),\n suffixInflection('來ます', '來る', ['-ます'], ['vk']),\n suffixInflection('くあります', 'い', ['-ます'], ['adj-i']),\n ],\n },\n potential: {\n name: 'potential',\n description:\n 'Indicates a state of being (naturally) capable of doing an action.\\n' +\n 'Usage: Attach (ら)れる to the irrealis form (未然形) of ichidan verbs.\\n' +\n 'Attach る to the imperative form (命令形) of godan verbs.\\n' +\n 'する becomes できる, くる becomes こ(ら)れる',\n i18n: [\n {\n language: 'ja',\n name: '~(ら)れる',\n },\n ],\n rules: [\n suffixInflection('れる', 'る', ['v1'], ['v1', 'v5d']),\n suffixInflection('える', 'う', ['v1'], ['v5d']),\n suffixInflection('ける', 'く', ['v1'], ['v5d']),\n suffixInflection('げる', 'ぐ', ['v1'], ['v5d']),\n suffixInflection('せる', 'す', ['v1'], ['v5d']),\n suffixInflection('てる', 'つ', ['v1'], ['v5d']),\n suffixInflection('ねる', 'ぬ', ['v1'], ['v5d']),\n suffixInflection('べる', 'ぶ', ['v1'], ['v5d']),\n suffixInflection('める', 'む', ['v1'], ['v5d']),\n suffixInflection('できる', 'する', ['v1'], ['vs']),\n suffixInflection('出来る', 'する', ['v1'], ['vs']),\n suffixInflection('これる', 'くる', ['v1'], ['vk']),\n suffixInflection('来れる', '来る', ['v1'], ['vk']),\n suffixInflection('來れる', '來る', ['v1'], ['vk']),\n ],\n },\n 'potential or passive': {\n name: 'potential or passive',\n description: `${passiveEnglishDescription}3. Indicates a state of being (naturally) capable of doing an action.\\nUsage: Attach られる to the irrealis form (未然形) of ichidan verbs.\\nする becomes せられる, くる becomes こられる`,\n i18n: [\n {\n language: 'ja',\n name: '~られる',\n },\n ],\n rules: [\n suffixInflection('られる', 'る', ['v1'], ['v1']),\n suffixInflection('ざれる', 'ずる', ['v1'], ['vz']),\n suffixInflection('ぜられる', 'ずる', ['v1'], ['vz']),\n suffixInflection('せられる', 'する', ['v1'], ['vs']),\n suffixInflection('為られる', '為る', ['v1'], ['vs']),\n suffixInflection('こられる', 'くる', ['v1'], ['vk']),\n suffixInflection('来られる', '来る', ['v1'], ['vk']),\n suffixInflection('來られる', '來る', ['v1'], ['vk']),\n ],\n },\n volitional: {\n name: 'volitional',\n description:\n \"1. Expresses speaker's will or intention.\\n\" +\n '2. Expresses an invitation to the other party.\\n' +\n '3. (Used in …ようとする) Indicates being on the verge of initiating an action or transforming a state.\\n' +\n '4. Indicates an inference of a matter.\\n' +\n 'Usage: Attach よう to the irrealis form (未然形) of ichidan verbs.\\n' +\n 'Attach う to the irrealis form (未然形) of godan verbs after -o euphonic change form.\\n' +\n 'Attach かろう to the stem of i-adjectives (4th meaning only).',\n i18n: [\n {\n language: 'ja',\n name: '~う・よう',\n description: '主体の意志を表わす',\n },\n ],\n rules: [\n suffixInflection('よう', 'る', [], ['v1']),\n suffixInflection('おう', 'う', [], ['v5']),\n suffixInflection('こう', 'く', [], ['v5']),\n suffixInflection('ごう', 'ぐ', [], ['v5']),\n suffixInflection('そう', 'す', [], ['v5']),\n suffixInflection('とう', 'つ', [], ['v5']),\n suffixInflection('のう', 'ぬ', [], ['v5']),\n suffixInflection('ぼう', 'ぶ', [], ['v5']),\n suffixInflection('もう', 'む', [], ['v5']),\n suffixInflection('ろう', 'る', [], ['v5']),\n suffixInflection('じよう', 'ずる', [], ['vz']),\n suffixInflection('しよう', 'する', [], ['vs']),\n suffixInflection('為よう', '為る', [], ['vs']),\n suffixInflection('こよう', 'くる', [], ['vk']),\n suffixInflection('来よう', '来る', [], ['vk']),\n suffixInflection('來よう', '來る', [], ['vk']),\n suffixInflection('ましょう', 'ます', [], ['-ます']),\n suffixInflection('かろう', 'い', [], ['adj-i']),\n ],\n },\n 'volitional slang': {\n name: 'volitional slang',\n description:\n 'Contraction of volitional form + か\\n' +\n \"1. Expresses speaker's will or intention.\\n\" +\n '2. Expresses an invitation to the other party.\\n' +\n 'Usage: Replace final う with っ of volitional form then add か.\\n' +\n 'For example: 行こうか -> 行こっか.',\n i18n: [\n {\n language: 'ja',\n name: '~っか・よっか',\n description: '「うか・ようか」の短縮',\n },\n ],\n rules: [\n suffixInflection('よっか', 'る', [], ['v1']),\n suffixInflection('おっか', 'う', [], ['v5']),\n suffixInflection('こっか', 'く', [], ['v5']),\n suffixInflection('ごっか', 'ぐ', [], ['v5']),\n suffixInflection('そっか', 'す', [], ['v5']),\n suffixInflection('とっか', 'つ', [], ['v5']),\n suffixInflection('のっか', 'ぬ', [], ['v5']),\n suffixInflection('ぼっか', 'ぶ', [], ['v5']),\n suffixInflection('もっか', 'む', [], ['v5']),\n suffixInflection('ろっか', 'る', [], ['v5']),\n suffixInflection('じよっか', 'ずる', [], ['vz']),\n suffixInflection('しよっか', 'する', [], ['vs']),\n suffixInflection('為よっか', '為る', [], ['vs']),\n suffixInflection('こよっか', 'くる', [], ['vk']),\n suffixInflection('来よっか', '来る', [], ['vk']),\n suffixInflection('來よっか', '來る', [], ['vk']),\n suffixInflection('ましょっか', 'ます', [], ['-ます']),\n ],\n },\n '-まい': {\n name: '-まい',\n description:\n 'Negative volitional form of verbs.\\n' +\n \"1. Expresses speaker's assumption that something is likely not true.\\n\" +\n \"2. Expresses speaker's will or intention not to do something.\\n\" +\n 'Usage: Attach まい to the dictionary form (終止形) of verbs.\\n' +\n 'Attach まい to the irrealis form (未然形) of ichidan verbs.\\n' +\n 'する becomes しまい, くる becomes こまい',\n i18n: [\n {\n language: 'ja',\n name: '~まい',\n description:\n '1. 打うち消けしの推量すいりょう 「~ないだろう」と想像する\\n' +\n '2. 打うち消けしの意志いし「~ないつもりだ」という気持ち',\n },\n ],\n rules: [\n suffixInflection('まい', '', [], ['v']),\n suffixInflection('まい', 'る', [], ['v1']),\n suffixInflection('じまい', 'ずる', [], ['vz']),\n suffixInflection('しまい', 'する', [], ['vs']),\n suffixInflection('為まい', '為る', [], ['vs']),\n suffixInflection('こまい', 'くる', [], ['vk']),\n suffixInflection('来まい', '来る', [], ['vk']),\n suffixInflection('來まい', '來る', [], ['vk']),\n suffixInflection('まい', '', [], ['-ます']),\n ],\n },\n '-おく': {\n name: '-おく',\n description:\n 'To do certain things in advance in preparation (or in anticipation) of latter needs.\\n' +\n 'Usage: Attach おく to the て-form of verbs.\\n' +\n 'Attach でおく after ない negative form of verbs.\\n' +\n 'Contracts to とく・どく in speech.',\n i18n: [\n {\n language: 'ja',\n name: '~おく',\n },\n ],\n rules: [\n suffixInflection('ておく', 'て', ['v5'], ['-て']),\n suffixInflection('でおく', 'で', ['v5'], ['-て']),\n suffixInflection('とく', 'て', ['v5'], ['-て']),\n suffixInflection('どく', 'で', ['v5'], ['-て']),\n suffixInflection('ないでおく', 'ない', ['v5'], ['adj-i']),\n suffixInflection('ないどく', 'ない', ['v5'], ['adj-i']),\n ],\n },\n '-いる': {\n name: '-いる',\n description:\n '1. Indicates an action continues or progresses to a point in time.\\n' +\n '2. Indicates an action is completed and remains as is.\\n' +\n '3. Indicates a state or condition that can be taken to be the result of undergoing some change.\\n' +\n 'Usage: Attach いる to the て-form of verbs. い can be dropped in speech.\\n' +\n 'Attach でいる after ない negative form of verbs.\\n' +\n '(Slang) Attach おる to the て-form of verbs. Contracts to とる・でる in speech.',\n i18n: [\n {\n language: 'ja',\n name: '~いる',\n },\n ],\n rules: [\n suffixInflection('ている', 'て', ['v1'], ['-て']),\n suffixInflection('ておる', 'て', ['v5'], ['-て']),\n suffixInflection('てる', 'て', ['v1p'], ['-て']),\n suffixInflection('でいる', 'で', ['v1'], ['-て']),\n suffixInflection('でおる', 'で', ['v5'], ['-て']),\n suffixInflection('でる', 'で', ['v1p'], ['-て']),\n suffixInflection('とる', 'て', ['v5'], ['-て']),\n suffixInflection('ないでいる', 'ない', ['v1'], ['adj-i']),\n ],\n },\n '-き': {\n name: '-き',\n description: 'Attributive form (連体形) of i-adjectives. An archaic form that remains in modern Japanese.',\n i18n: [\n {\n language: 'ja',\n name: '~き',\n description: '連体形',\n },\n ],\n rules: [suffixInflection('き', 'い', [], ['adj-i'])],\n },\n '-げ': {\n name: '-げ',\n description:\n \"Describes a person's appearance. Shows feelings of the person.\\n\" +\n 'Usage: Attach げ or 気 to the stem of i-adjectives',\n i18n: [\n {\n language: 'ja',\n name: '~げ',\n description: '…でありそうな様子。いかにも…らしいさま。',\n },\n ],\n rules: [suffixInflection('げ', 'い', [], ['adj-i']), suffixInflection('気', 'い', [], ['adj-i'])],\n },\n '-がる': {\n name: '-がる',\n description:\n '1. Shows subject’s feelings contrast with what is thought/known about them.\\n' +\n \"2. Indicates subject's behavior (stands out).\\n\" +\n 'Usage: Attach がる to the stem of i-adjectives. It itself conjugates as a godan verb.',\n i18n: [\n {\n language: 'ja',\n name: '~がる',\n description: 'いかにもその状態にあるという印象を相手に与えるような言動をする。',\n },\n ],\n rules: [suffixInflection('がる', 'い', ['v5'], ['adj-i'])],\n },\n '-え': {\n name: '-え',\n description:\n 'Slang. A sound change of i-adjectives.\\n' +\n 'ai:やばい → やべぇ\\n' +\n 'ui:さむい → さみぃ/さめぇ\\n' +\n 'oi:すごい → すげぇ',\n i18n: [\n {\n language: 'ja',\n name: '~え',\n },\n ],\n rules: [\n suffixInflection('ねえ', 'ない', [], ['adj-i']),\n suffixInflection('めえ', 'むい', [], ['adj-i']),\n suffixInflection('みい', 'むい', [], ['adj-i']),\n suffixInflection('ちぇえ', 'つい', [], ['adj-i']),\n suffixInflection('ちい', 'つい', [], ['adj-i']),\n suffixInflection('せえ', 'すい', [], ['adj-i']),\n suffixInflection('ええ', 'いい', [], ['adj-i']),\n suffixInflection('ええ', 'わい', [], ['adj-i']),\n suffixInflection('ええ', 'よい', [], ['adj-i']),\n suffixInflection('いぇえ', 'よい', [], ['adj-i']),\n suffixInflection('うぇえ', 'わい', [], ['adj-i']),\n suffixInflection('けえ', 'かい', [], ['adj-i']),\n suffixInflection('げえ', 'がい', [], ['adj-i']),\n suffixInflection('げえ', 'ごい', [], ['adj-i']),\n suffixInflection('せえ', 'さい', [], ['adj-i']),\n suffixInflection('めえ', 'まい', [], ['adj-i']),\n suffixInflection('ぜえ', 'ずい', [], ['adj-i']),\n suffixInflection('っぜえ', 'ずい', [], ['adj-i']),\n suffixInflection('れえ', 'らい', [], ['adj-i']),\n suffixInflection('れえ', 'らい', [], ['adj-i']),\n suffixInflection('ちぇえ', 'ちゃい', [], ['adj-i']),\n suffixInflection('でえ', 'どい', [], ['adj-i']),\n suffixInflection('れえ', 'れい', [], ['adj-i']),\n suffixInflection('べえ', 'ばい', [], ['adj-i']),\n suffixInflection('てえ', 'たい', [], ['adj-i']),\n suffixInflection('ねぇ', 'ない', [], ['adj-i']),\n suffixInflection('めぇ', 'むい', [], ['adj-i']),\n suffixInflection('みぃ', 'むい', [], ['adj-i']),\n suffixInflection('ちぃ', 'つい', [], ['adj-i']),\n suffixInflection('せぇ', 'すい', [], ['adj-i']),\n suffixInflection('けぇ', 'かい', [], ['adj-i']),\n suffixInflection('げぇ', 'がい', [], ['adj-i']),\n suffixInflection('げぇ', 'ごい', [], ['adj-i']),\n suffixInflection('せぇ', 'さい', [], ['adj-i']),\n suffixInflection('めぇ', 'まい', [], ['adj-i']),\n suffixInflection('ぜぇ', 'ずい', [], ['adj-i']),\n suffixInflection('っぜぇ', 'ずい', [], ['adj-i']),\n suffixInflection('れぇ', 'らい', [], ['adj-i']),\n suffixInflection('でぇ', 'どい', [], ['adj-i']),\n suffixInflection('れぇ', 'れい', [], ['adj-i']),\n suffixInflection('べぇ', 'ばい', [], ['adj-i']),\n suffixInflection('てぇ', 'たい', [], ['adj-i']),\n ],\n },\n 'n-slang': {\n name: 'n-slang',\n i18n: [\n {\n language: 'ja',\n name: '~んな',\n },\n ],\n description: 'Slang sound change of r-column syllables to n (when before an n-sound, usually の or な)',\n rules: [\n suffixInflection('んなさい', 'りなさい', [], ['-なさい']),\n suffixInflection('らんない', 'られない', ['adj-i'], ['adj-i']),\n suffixInflection('んない', 'らない', ['adj-i'], ['adj-i']),\n suffixInflection('んなきゃ', 'らなきゃ', [], ['-ゃ']),\n suffixInflection('んなきゃ', 'れなきゃ', [], ['-ゃ']),\n ],\n },\n 'imperative negative slang': {\n name: 'imperative negative slang',\n i18n: [\n {\n language: 'ja',\n name: '~んな',\n },\n ],\n rules: [suffixInflection('んな', 'る', [], ['v'])],\n },\n 'kansai-ben negative': {\n name: 'kansai-ben',\n description: 'Negative form of kansai-ben verbs',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~ない (関西弁)',\n },\n ],\n rules: [\n suffixInflection('へん', 'ない', [], ['adj-i']),\n suffixInflection('ひん', 'ない', [], ['adj-i']),\n suffixInflection('せえへん', 'しない', [], ['adj-i']),\n suffixInflection('へんかった', 'なかった', ['-た'], ['-た']),\n suffixInflection('ひんかった', 'なかった', ['-た'], ['-た']),\n suffixInflection('うてへん', 'ってない', [], ['adj-i']),\n ],\n },\n 'kansai-ben -て': {\n name: 'kansai-ben',\n description: '-て form of kansai-ben verbs',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~て (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うて', 'って', ['-て'], ['-て']),\n suffixInflection('おうて', 'あって', ['-て'], ['-て']),\n suffixInflection('こうて', 'かって', ['-て'], ['-て']),\n suffixInflection('ごうて', 'がって', ['-て'], ['-て']),\n suffixInflection('そうて', 'さって', ['-て'], ['-て']),\n suffixInflection('ぞうて', 'ざって', ['-て'], ['-て']),\n suffixInflection('とうて', 'たって', ['-て'], ['-て']),\n suffixInflection('どうて', 'だって', ['-て'], ['-て']),\n suffixInflection('のうて', 'なって', ['-て'], ['-て']),\n suffixInflection('ほうて', 'はって', ['-て'], ['-て']),\n suffixInflection('ぼうて', 'ばって', ['-て'], ['-て']),\n suffixInflection('もうて', 'まって', ['-て'], ['-て']),\n suffixInflection('ろうて', 'らって', ['-て'], ['-て']),\n suffixInflection('ようて', 'やって', ['-て'], ['-て']),\n suffixInflection('ゆうて', 'いって', ['-て'], ['-て']),\n ],\n },\n 'kansai-ben -た': {\n name: 'kansai-ben',\n description: '-た form of kansai-ben terms',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~た (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うた', 'った', ['-た'], ['-た']),\n suffixInflection('おうた', 'あった', ['-た'], ['-た']),\n suffixInflection('こうた', 'かった', ['-た'], ['-た']),\n suffixInflection('ごうた', 'がった', ['-た'], ['-た']),\n suffixInflection('そうた', 'さった', ['-た'], ['-た']),\n suffixInflection('ぞうた', 'ざった', ['-た'], ['-た']),\n suffixInflection('とうた', 'たった', ['-た'], ['-た']),\n suffixInflection('どうた', 'だった', ['-た'], ['-た']),\n suffixInflection('のうた', 'なった', ['-た'], ['-た']),\n suffixInflection('ほうた', 'はった', ['-た'], ['-た']),\n suffixInflection('ぼうた', 'ばった', ['-た'], ['-た']),\n suffixInflection('もうた', 'まった', ['-た'], ['-た']),\n suffixInflection('ろうた', 'らった', ['-た'], ['-た']),\n suffixInflection('ようた', 'やった', ['-た'], ['-た']),\n suffixInflection('ゆうた', 'いった', ['-た'], ['-た']),\n ],\n },\n 'kansai-ben -たら': {\n name: 'kansai-ben',\n description: '-たら form of kansai-ben terms',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~たら (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うたら', 'ったら', [], []),\n suffixInflection('おうたら', 'あったら', [], []),\n suffixInflection('こうたら', 'かったら', [], []),\n suffixInflection('ごうたら', 'がったら', [], []),\n suffixInflection('そうたら', 'さったら', [], []),\n suffixInflection('ぞうたら', 'ざったら', [], []),\n suffixInflection('とうたら', 'たったら', [], []),\n suffixInflection('どうたら', 'だったら', [], []),\n suffixInflection('のうたら', 'なったら', [], []),\n suffixInflection('ほうたら', 'はったら', [], []),\n suffixInflection('ぼうたら', 'ばったら', [], []),\n suffixInflection('もうたら', 'まったら', [], []),\n suffixInflection('ろうたら', 'らったら', [], []),\n suffixInflection('ようたら', 'やったら', [], []),\n suffixInflection('ゆうたら', 'いったら', [], []),\n ],\n },\n 'kansai-ben -たり': {\n name: 'kansai-ben',\n description: '-たり form of kansai-ben terms',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~たり (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うたり', 'ったり', [], []),\n suffixInflection('おうたり', 'あったり', [], []),\n suffixInflection('こうたり', 'かったり', [], []),\n suffixInflection('ごうたり', 'がったり', [], []),\n suffixInflection('そうたり', 'さったり', [], []),\n suffixInflection('ぞうたり', 'ざったり', [], []),\n suffixInflection('とうたり', 'たったり', [], []),\n suffixInflection('どうたり', 'だったり', [], []),\n suffixInflection('のうたり', 'なったり', [], []),\n suffixInflection('ほうたり', 'はったり', [], []),\n suffixInflection('ぼうたり', 'ばったり', [], []),\n suffixInflection('もうたり', 'まったり', [], []),\n suffixInflection('ろうたり', 'らったり', [], []),\n suffixInflection('ようたり', 'やったり', [], []),\n suffixInflection('ゆうたり', 'いったり', [], []),\n ],\n },\n 'kansai-ben -く': {\n name: 'kansai-ben',\n description: '-く stem of kansai-ben adjectives',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '連用形 (関西弁)',\n },\n ],\n rules: [\n suffixInflection('う', 'く', [], ['-く']),\n suffixInflection('こう', 'かく', [], ['-く']),\n suffixInflection('ごう', 'がく', [], ['-く']),\n suffixInflection('そう', 'さく', [], ['-く']),\n suffixInflection('とう', 'たく', [], ['-く']),\n suffixInflection('のう', 'なく', [], ['-く']),\n suffixInflection('ぼう', 'ばく', [], ['-く']),\n suffixInflection('もう', 'まく', [], ['-く']),\n suffixInflection('ろう', 'らく', [], ['-く']),\n suffixInflection('よう', 'よく', [], ['-く']),\n suffixInflection('しゅう', 'しく', [], ['-く']),\n ],\n },\n 'kansai-ben adjective -て': {\n name: 'kansai-ben',\n description: '-て form of kansai-ben adjectives',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~て (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うて', 'くて', ['-て'], ['-て']),\n suffixInflection('こうて', 'かくて', ['-て'], ['-て']),\n suffixInflection('ごうて', 'がくて', ['-て'], ['-て']),\n suffixInflection('そうて', 'さくて', ['-て'], ['-て']),\n suffixInflection('とうて', 'たくて', ['-て'], ['-て']),\n suffixInflection('のうて', 'なくて', ['-て'], ['-て']),\n suffixInflection('ぼうて', 'ばくて', ['-て'], ['-て']),\n suffixInflection('もうて', 'まくて', ['-て'], ['-て']),\n suffixInflection('ろうて', 'らくて', ['-て'], ['-て']),\n suffixInflection('ようて', 'よくて', ['-て'], ['-て']),\n suffixInflection('しゅうて', 'しくて', ['-て'], ['-て']),\n ],\n },\n 'kansai-ben adjective negative': {\n name: 'kansai-ben',\n description: 'Negative form of kansai-ben adjectives',\n i18n: [\n {\n language: 'ja',\n name: '関西弁',\n description: '~ない (関西弁)',\n },\n ],\n rules: [\n suffixInflection('うない', 'くない', ['adj-i'], ['adj-i']),\n suffixInflection('こうない', 'かくない', ['adj-i'], ['adj-i']),\n suffixInflection('ごうない', 'がくない', ['adj-i'], ['adj-i']),\n suffixInflection('そうない', 'さくない', ['adj-i'], ['adj-i']),\n suffixInflection('とうない', 'たくない', ['adj-i'], ['adj-i']),\n suffixInflection('のうない', 'なくない', ['adj-i'], ['adj-i']),\n suffixInflection('ぼうない', 'ばくない', ['adj-i'], ['adj-i']),\n suffixInflection('もうない', 'まくない', ['adj-i'], ['adj-i']),\n suffixInflection('ろうない', 'らくない', ['adj-i'], ['adj-i']),\n suffixInflection('ようない', 'よくない', ['adj-i'], ['adj-i']),\n suffixInflection('しゅうない', 'しくない', ['adj-i'], ['adj-i']),\n ],\n },\n },\n};\n","import type { LanguageDescriptorAny } from '../types/language';\nimport { normalizeRadicalCharacters } from './cjk-util';\nimport {\n alphabeticToHiragana,\n alphanumericWidthVariants,\n collapseEmphaticSequences,\n convertHalfWidthCharacters,\n convertHiraganaToKatakana,\n normalizeCJKCompatibilityCharacters,\n normalizeCombiningCharacters,\n} from './ja/japanese-text-preprocessors';\nimport { japaneseTransforms } from './ja/japanese-transforms';\nimport { isStringPartiallyJapanese } from './ja/japanese';\nimport { capitalizeFirstLetter, decapitalize, removeAlphabeticDiacritics } from './text-processors';\n\nconst capitalizationPreprocessors = {\n decapitalize,\n capitalizeFirstLetter,\n};\n\nconst languageDescriptors: LanguageDescriptorAny[] = [\n {\n iso: 'bg',\n iso639_3: 'bul',\n name: 'Bulgarian',\n exampleText: 'чета',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'cs', iso639_3: 'ces', name: 'Czech', exampleText: 'číst', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'da',\n iso639_3: 'dan',\n name: 'Danish',\n exampleText: 'læse',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'de',\n iso639_3: 'deu',\n name: 'German',\n exampleText: 'lesen',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'el',\n iso639_3: 'ell',\n name: 'Greek',\n exampleText: 'διαβάζω',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'en',\n iso639_3: 'eng',\n name: 'English',\n exampleText: 'read',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'eo',\n iso639_3: 'epo',\n name: 'Esperanto',\n exampleText: 'legi',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'es',\n iso639_3: 'spa',\n name: 'Spanish',\n exampleText: 'leer',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'et',\n iso639_3: 'est',\n name: 'Estonian',\n exampleText: 'lugema',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'fi',\n iso639_3: 'fin',\n name: 'Finnish',\n exampleText: 'lukea',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'fr',\n iso639_3: 'fra',\n name: 'French',\n exampleText: 'lire',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n { iso: 'ga', iso639_3: 'gle', name: 'Irish', exampleText: 'léigh', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'grc',\n iso639_3: 'grc',\n name: 'Ancient Greek',\n exampleText: 'γράφω',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n { iso: 'he', iso639_3: 'heb', name: 'Hebrew', exampleText: 'קריאה' },\n { iso: 'hi', iso639_3: 'hin', name: 'Hindi', exampleText: 'पढ़ने के लिए' },\n {\n iso: 'hu',\n iso639_3: 'hun',\n name: 'Hungarian',\n exampleText: 'olvasni',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'id',\n iso639_3: 'ind',\n name: 'Indonesian',\n exampleText: 'baca',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'it',\n iso639_3: 'ita',\n name: 'Italian',\n exampleText: 'leggere',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'la',\n iso639_3: 'lat',\n name: 'Latin',\n exampleText: 'legō',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n { iso: 'lo', iso639_3: 'lao', name: 'Lao', exampleText: 'ອ່ານ' },\n {\n iso: 'lv',\n iso639_3: 'lav',\n name: 'Latvian',\n exampleText: 'lasīt',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'ja',\n iso639_3: 'jpn',\n name: 'Japanese',\n exampleText: '読め',\n textPreprocessors: {\n convertHalfWidthCharacters,\n alphabeticToHiragana,\n alphanumericWidthVariants,\n convertHiraganaToKatakana,\n collapseEmphaticSequences,\n normalizeCombiningCharacters,\n normalizeCJKCompatibilityCharacters,\n },\n languageTransforms: japaneseTransforms,\n isTextLookupWorthy: isStringPartiallyJapanese,\n },\n { iso: 'ka', iso639_3: 'kat', name: 'Georgian', exampleText: 'კითხვა' },\n { iso: 'kn', iso639_3: 'kan', name: 'Kannada', exampleText: 'ಓದು' },\n { iso: 'km', iso639_3: 'khm', name: 'Khmer', exampleText: 'អាន' },\n { iso: 'ko', iso639_3: 'kor', name: 'Korean', exampleText: '읽어' },\n {\n iso: 'mn',\n iso639_3: 'mon',\n name: 'Mongolian',\n exampleText: 'унших',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'mt',\n iso639_3: 'mlt',\n name: 'Maltese',\n exampleText: 'kiteb',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'nl', iso639_3: 'nld', name: 'Dutch', exampleText: 'lezen', textPreprocessors: capitalizationPreprocessors },\n {\n iso: 'no',\n iso639_3: 'nor',\n name: 'Norwegian',\n exampleText: 'lese',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'pl',\n iso639_3: 'pol',\n name: 'Polish',\n exampleText: 'czytać',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'pt',\n iso639_3: 'por',\n name: 'Portuguese',\n exampleText: 'ler',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'ro',\n iso639_3: 'ron',\n name: 'Romanian',\n exampleText: 'citi',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'ru',\n iso639_3: 'rus',\n name: 'Russian',\n exampleText: 'читать',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'sga',\n iso639_3: 'sga',\n name: 'Old Irish',\n exampleText: 'légaid',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'sh',\n iso639_3: 'hbs',\n name: 'Serbo-Croatian',\n exampleText: 'čìtati',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'sq',\n iso639_3: 'sqi',\n name: 'Albanian',\n exampleText: 'ndihmoj',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'sv',\n iso639_3: 'swe',\n name: 'Swedish',\n exampleText: 'läsa',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'th', iso639_3: 'tha', name: 'Thai', exampleText: 'อ่าน' },\n {\n iso: 'tl',\n iso639_3: 'tgl',\n name: 'Tagalog',\n exampleText: 'basahin',\n textPreprocessors: { ...capitalizationPreprocessors, removeAlphabeticDiacritics },\n },\n {\n iso: 'tr',\n iso639_3: 'tur',\n name: 'Turkish',\n exampleText: 'okumak',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'tok',\n iso639_3: 'tok',\n name: 'Toki Pona',\n exampleText: 'wile',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'uk',\n iso639_3: 'ukr',\n name: 'Ukrainian',\n exampleText: 'читати',\n textPreprocessors: capitalizationPreprocessors,\n },\n {\n iso: 'vi',\n iso639_3: 'vie',\n name: 'Vietnamese',\n exampleText: 'đọc',\n textPreprocessors: { ...capitalizationPreprocessors },\n },\n {\n iso: 'cy',\n iso639_3: 'cym',\n name: 'Welsh',\n exampleText: 'ddarllen',\n textPreprocessors: capitalizationPreprocessors,\n },\n { iso: 'yi', iso639_3: 'yid', name: 'Yiddish', exampleText: 'באַשאַפֿן' },\n {\n iso: 'yue',\n iso639_3: 'yue',\n name: 'Cantonese',\n exampleText: '讀',\n textPreprocessors: { normalizeRadicalCharacters },\n },\n {\n iso: 'zh',\n iso639_3: 'zho',\n name: 'Chinese',\n exampleText: '读',\n textPreprocessors: { normalizeRadicalCharacters },\n },\n];\n\nexport const languageDescriptorMap = new Map<string, LanguageDescriptorAny>();\nfor (const languageDescriptor of languageDescriptors) {\n languageDescriptorMap.set(languageDescriptor.iso, languageDescriptor);\n}\n","import type * as Language from '../types/language';\nimport { languageDescriptorMap } from './language-descriptors';\n\nexport function getLanguageSummaries(): Language.LanguageSummary[] {\n const results: Language.LanguageSummary[] = [];\n for (const { name, iso, iso639_3, exampleText } of languageDescriptorMap.values()) {\n results.push({ name, iso, iso639_3, exampleText });\n }\n return results;\n}\n\nexport function getAllLanguageReadingNormalizers(): Language.LanguageAndReadingNormalizer[] {\n const results: Language.LanguageAndReadingNormalizer[] = [];\n for (const { iso, readingNormalizer } of languageDescriptorMap.values()) {\n if (typeof readingNormalizer === 'undefined') {\n continue;\n }\n results.push({ iso, readingNormalizer });\n }\n return results;\n}\n\nexport function getAllLanguageTextProcessors(): Language.LanguageAndProcessors[] {\n const results: Language.LanguageAndProcessors[] = [];\n for (const { iso, textPreprocessors = {}, textPostprocessors = {} } of languageDescriptorMap.values()) {\n const textPreprocessorsArray: Language.TextProcessorWithId<unknown>[] = [];\n for (const [id, textPreprocessor] of Object.entries(textPreprocessors)) {\n textPreprocessorsArray.push({ id, textProcessor: textPreprocessor as Language.TextProcessor<unknown> });\n }\n const textPostprocessorsArray: Language.TextProcessorWithId<unknown>[] = [];\n for (const [id, textPostprocessor] of Object.entries(textPostprocessors)) {\n textPostprocessorsArray.push({ id, textProcessor: textPostprocessor as Language.TextProcessor<unknown> });\n }\n results.push({ iso, textPreprocessors: textPreprocessorsArray, textPostprocessors: textPostprocessorsArray });\n }\n return results;\n}\n\nexport function isTextLookupWorthy(text: string, language: string): boolean {\n const descriptor = languageDescriptorMap.get(language);\n if (typeof descriptor === 'undefined') {\n return false;\n }\n return typeof descriptor.isTextLookupWorthy === 'undefined' || descriptor.isTextLookupWorthy(text);\n}\n\nexport function getAllLanguageTransformDescriptors(): Language.LanguageAndTransforms[] {\n const results: Language.LanguageAndTransforms[] = [];\n for (const { iso, languageTransforms } of languageDescriptorMap.values()) {\n if (languageTransforms) {\n results.push({ iso, languageTransforms });\n }\n }\n return results;\n}\n","import type * as Dictionary from '../types/dictionary';\nimport type { ConditionMapEntries, LanguageTransformDescriptor } from '../types/language-transformer';\nimport { log } from '../util/log';\n\nexport type TraceFrame = {\n transform: string;\n ruleIndex: number;\n text: string;\n};\n\nexport type Trace = TraceFrame[];\n\nexport type TransformedText = {\n text: string;\n conditions: number;\n trace: Trace;\n};\n\ntype InternalRule = {\n type: string;\n isInflected: RegExp;\n deinflect: (inflectedWord: string) => string;\n conditionsIn: number;\n conditionsOut: number;\n};\n\ntype InternalTransform = {\n id: string;\n name: string;\n description?: string;\n rules: InternalRule[];\n heuristic: RegExp;\n};\n\nexport class LanguageTransformer {\n private _nextFlagIndex: number;\n private _transforms: InternalTransform[];\n private _conditionTypeToConditionFlagsMap: Map<string, number>;\n private _partOfSpeechToConditionFlagsMap: Map<string, number>;\n\n constructor() {\n this._nextFlagIndex = 0;\n this._transforms = [];\n this._conditionTypeToConditionFlagsMap = new Map();\n this._partOfSpeechToConditionFlagsMap = new Map();\n }\n\n clear(): void {\n this._nextFlagIndex = 0;\n this._transforms = [];\n this._conditionTypeToConditionFlagsMap.clear();\n this._partOfSpeechToConditionFlagsMap.clear();\n }\n\n addDescriptor(descriptor: LanguageTransformDescriptor): void {\n const { conditions, transforms } = descriptor;\n const conditionEntries: ConditionMapEntries = Object.entries(conditions);\n const { conditionFlagsMap, nextFlagIndex } = this._getConditionFlagsMap(conditionEntries, this._nextFlagIndex);\n\n const transforms2: InternalTransform[] = [];\n\n for (const [transformId, transform] of Object.entries(transforms)) {\n const { name, description, rules } = transform;\n const rules2: InternalRule[] = [];\n for (let j = 0, jj = rules.length; j < jj; ++j) {\n const { type, isInflected, deinflect, conditionsIn, conditionsOut } = rules[j];\n const conditionFlagsIn = this._getConditionFlagsStrict(conditionFlagsMap, conditionsIn);\n if (conditionFlagsIn === null) {\n throw new Error(`Invalid conditionsIn for transform ${transformId}.rules[${j}]`);\n }\n const conditionFlagsOut = this._getConditionFlagsStrict(conditionFlagsMap, conditionsOut);\n if (conditionFlagsOut === null) {\n throw new Error(`Invalid conditionsOut for transform ${transformId}.rules[${j}]`);\n }\n rules2.push({\n type,\n isInflected,\n deinflect,\n conditionsIn: conditionFlagsIn,\n conditionsOut: conditionFlagsOut,\n });\n }\n const isInflectedTests = rules.map((rule) => rule.isInflected);\n const heuristic = new RegExp(isInflectedTests.map((regExp) => regExp.source).join('|'));\n transforms2.push({ id: transformId, name, description, rules: rules2, heuristic });\n }\n\n this._nextFlagIndex = nextFlagIndex;\n for (const transform of transforms2) {\n this._transforms.push(transform);\n }\n\n for (const [type, { isDictionaryForm }] of conditionEntries) {\n const flags = conditionFlagsMap.get(type);\n if (typeof flags === 'undefined') {\n continue;\n }\n this._conditionTypeToConditionFlagsMap.set(type, flags);\n if (isDictionaryForm) {\n this._partOfSpeechToConditionFlagsMap.set(type, flags);\n }\n }\n }\n\n getConditionFlagsFromPartsOfSpeech(partsOfSpeech: string[]): number {\n return this._getConditionFlags(this._partOfSpeechToConditionFlagsMap, partsOfSpeech);\n }\n\n getConditionFlagsFromConditionTypes(conditionTypes: string[]): number {\n return this._getConditionFlags(this._conditionTypeToConditionFlagsMap, conditionTypes);\n }\n\n getConditionFlagsFromConditionType(conditionType: string): number {\n return this._getConditionFlags(this._conditionTypeToConditionFlagsMap, [conditionType]);\n }\n\n transform(sourceText: string): TransformedText[] {\n const results = [LanguageTransformer.createTransformedText(sourceText, 0, [])];\n for (let i = 0; i < results.length; ++i) {\n const { text, conditions, trace } = results[i];\n for (const transform of this._transforms) {\n if (!transform.heuristic.test(text)) {\n continue;\n }\n\n const { id, rules } = transform;\n for (let j = 0, jj = rules.length; j < jj; ++j) {\n const rule = rules[j];\n if (!LanguageTransformer.conditionsMatch(conditions, rule.conditionsIn)) {\n continue;\n }\n const { isInflected, deinflect } = rule;\n if (!isInflected.test(text)) {\n continue;\n }\n\n const isCycle = trace.some(\n (frame) => frame.transform === id && frame.ruleIndex === j && frame.text === text,\n );\n if (isCycle) {\n log.warn(\n new Error(\n `Cycle detected in transform[${id}] rule[${j}] for text: ${text}\\nTrace: ${JSON.stringify(trace)}`,\n ),\n );\n continue;\n }\n\n results.push(\n LanguageTransformer.createTransformedText(\n deinflect(text),\n rule.conditionsOut,\n this._extendTrace(trace, { transform: id, ruleIndex: j, text }),\n ),\n );\n }\n }\n }\n return results;\n }\n\n getUserFacingInflectionRules(inflectionRules: string[]): Dictionary.InflectionRuleChain {\n return inflectionRules.map((rule) => {\n const fullRule = this._transforms.find((transform) => transform.id === rule);\n if (typeof fullRule === 'undefined') {\n return { name: rule };\n }\n const { name, description } = fullRule;\n return description ? { name, description } : { name };\n });\n }\n\n static createTransformedText(text: string, conditions: number, trace: Trace): TransformedText {\n return { text, conditions, trace };\n }\n\n static conditionsMatch(currentConditions: number, nextConditions: number): boolean {\n return currentConditions === 0 || (currentConditions & nextConditions) !== 0;\n }\n\n private _getConditionFlagsMap(\n conditions: ConditionMapEntries,\n nextFlagIndex: number,\n ): { conditionFlagsMap: Map<string, number>; nextFlagIndex: number } {\n const conditionFlagsMap = new Map<string, number>();\n let targets: ConditionMapEntries = conditions;\n while (targets.length > 0) {\n const nextTargets: ConditionMapEntries = [];\n for (const target of targets) {\n const [type, condition] = target;\n const { subConditions } = condition;\n let flags = 0;\n if (typeof subConditions === 'undefined') {\n if (nextFlagIndex >= 32) {\n throw new Error('Maximum number of conditions was exceeded');\n }\n flags = 1 << nextFlagIndex;\n ++nextFlagIndex;\n } else {\n const multiFlags = this._getConditionFlagsStrict(conditionFlagsMap, subConditions);\n if (multiFlags === null) {\n nextTargets.push(target);\n continue;\n }\n flags = multiFlags;\n }\n conditionFlagsMap.set(type, flags);\n }\n if (nextTargets.length === targets.length) {\n throw new Error('Maximum number of conditions was exceeded');\n }\n targets = nextTargets;\n }\n return { conditionFlagsMap, nextFlagIndex };\n }\n\n private _getConditionFlagsStrict(conditionFlagsMap: Map<string, number>, conditionTypes: string[]): number | null {\n let flags = 0;\n for (const conditionType of conditionTypes) {\n const flags2 = conditionFlagsMap.get(conditionType);\n if (typeof flags2 === 'undefined') {\n return null;\n }\n flags |= flags2;\n }\n return flags;\n }\n\n private _getConditionFlags(conditionFlagsMap: Map<string, number>, conditionTypes: string[]): number {\n let flags = 0;\n for (const conditionType of conditionTypes) {\n let flags2 = conditionFlagsMap.get(conditionType);\n if (typeof flags2 === 'undefined') {\n flags2 = 0;\n }\n flags |= flags2;\n }\n return flags;\n }\n\n private _extendTrace(trace: Trace, newFrame: TraceFrame): Trace {\n const newTrace = [newFrame];\n for (const { transform, ruleIndex, text } of trace) {\n newTrace.push({ transform, ruleIndex, text });\n }\n return newTrace;\n }\n}\n","import type * as Dictionary from '../types/dictionary';\nimport { LanguageTransformer } from './language-transformer';\nimport type { TransformedText } from './language-transformer';\nimport { getAllLanguageTransformDescriptors } from './languages';\n\nexport class MultiLanguageTransformer {\n private _languageTransformers: Map<string, LanguageTransformer>;\n\n constructor() {\n this._languageTransformers = new Map();\n }\n\n prepare(): void {\n const languagesWithTransforms = getAllLanguageTransformDescriptors();\n for (const { languageTransforms: descriptor } of languagesWithTransforms) {\n const languageTransformer = new LanguageTransformer();\n languageTransformer.addDescriptor(descriptor);\n this._languageTransformers.set(descriptor.language, languageTransformer);\n }\n }\n\n getConditionFlagsFromPartsOfSpeech(language: string, partsOfSpeech: string[]): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromPartsOfSpeech(partsOfSpeech)\n : 0;\n }\n\n getConditionFlagsFromConditionTypes(language: string, conditionTypes: string[]): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromConditionTypes(conditionTypes)\n : 0;\n }\n\n getConditionFlagsFromConditionType(language: string, conditionType: string): number {\n const languageTransformer = this._languageTransformers.get(language);\n return typeof languageTransformer !== 'undefined'\n ? languageTransformer.getConditionFlagsFromConditionType(conditionType)\n : 0;\n }\n\n transform(language: string, sourceText: string): TransformedText[] {\n const languageTransformer = this._languageTransformers.get(language);\n if (typeof languageTransformer === 'undefined') {\n return [LanguageTransformer.createTransformedText(sourceText, 0, [])];\n }\n return languageTransformer.transform(sourceText);\n }\n\n getUserFacingInflectionRules(language: string, inflectionRules: string[]): Dictionary.InflectionRuleChain {\n const languageTransformer = this._languageTransformers.get(language);\n if (typeof languageTransformer === 'undefined') {\n return inflectionRules.map((rule) => ({ name: rule }));\n }\n return languageTransformer.getUserFacingInflectionRules(inflectionRules);\n }\n}\n"],"mappings":";;;;;AAEA,MAAaA,qBAA6C;CAItD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CAGJ,MAAM;CACN,MAAM;CACN,MAAM;CAGN,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CAGL,IAAI;CACJ,MAAM;CACN,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CAGJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CAGH,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CAGL,GAAG;AACN;AAED,MAAaC,qBAA6C;CAEtD,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;CAGJ,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CACH,GAAG;CA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"}
|