-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathkamiya.min.js.map
7 lines (7 loc) · 46.1 KB
/
kamiya.min.js.map
1
2
3
4
5
6
7
{
"version": 3,
"sources": ["../index.ts", "../hiragana.ts", "../adjective.ts"],
"sourcesContent": ["import {lookup} from './hiragana';\n\nexport const conjugations = [\n 'Negative', 'Conjunctive', 'Dictionary', 'Conditional', 'Imperative', 'Volitional', 'Te', 'Ta', 'Tara', 'Tari',\n 'Zu', // Not in Kamiya\n] as const;\nexport type Conjugation = typeof conjugations[number];\n\nexport const auxiliaries = [\n 'Potential',\n 'Masu',\n 'Nai',\n 'Tai',\n 'Tagaru',\n 'Hoshii',\n 'Rashii',\n 'SoudaHearsay',\n 'SoudaConjecture',\n 'SeruSaseru',\n 'ShortenedCausative',\n 'ReruRareru',\n 'CausativePassive',\n 'ShortenedCausativePassive',\n 'Ageru', // Kamiya section 7.15\n 'Sashiageru',\n 'Yaru',\n 'Morau', // Kamiya section 7.16\n 'Itadaku',\n 'Kureru', // Kamiya section 7.17\n 'Kudasaru',\n 'TeIru', // 7.5 - 7.6\n 'TeAru', // 7.7\n 'Miru', // 7.22\n 'Iku', // 7.23\n 'Kuru', // 7.24\n 'Oku', // 7.25\n 'Shimau', // 7.26\n 'TeOru', // Not in Kamiya\n] as const;\nexport type Auxiliary = typeof auxiliaries[number];\n\nconst specialCasesRaw: Array<[string, Conjugation, string]> = [\n ['\u3042\u308B', 'Negative', ''], // fully negative conjugation would be ''+nai\n ['\u3054\u3056\u308B', 'Conjunctive', '\u3054\u3056\u3044'],\n ['\u3044\u3089\u3063\u3057\u3083\u308B', 'Conjunctive', '\u3044\u3089\u3063\u3057\u3083\u3044'],\n ['\u3044\u3089\u3063\u3057\u3083\u308B', 'Conditional', '\u3044\u3089\u3063\u3057\u3083\u3044'],\n ['\u3044\u3089\u3063\u3057\u3083\u308B', 'Imperative', '\u3044\u3089\u3063\u3057\u3083\u3044'],\n];\nlet specialCases: Map<string, Map<Conjugation, string>> = new Map([]);\nfor (const [verb, conj, result] of specialCasesRaw) {\n let outer = specialCases.get(verb);\n if (outer) {\n outer.set(conj, result);\n } else {\n specialCases.set(verb, new Map([[conj, result]]));\n }\n}\nconst conjToIdx: Map<Conjugation, number> =\n new Map(conjugations.filter(x => x !== 'Imperative').map((x, i) => [x, i]) as Array<[Conjugation, number]>);\nconjToIdx.set('Zu', conjToIdx.get('Negative') ?? -1);\n\nconst tteRaw: Array<[string, string[]]> = [\n ['\u304F', ['\u3044\u3066', '\u3044\u305F', '\u3044\u305F\u3089', '\u3044\u305F\u308A']],\n ['\u3050', ['\u3044\u3067', '\u3044\u3060', '\u3044\u3060\u3089', '\u3044\u3060\u308A']],\n ['\u3059', ['\u3057\u3066', '\u3057\u305F', '\u3057\u305F\u3089', '\u3057\u305F\u308A']],\n ['\u306C', ['\u3093\u3067', '\u3093\u3060', '\u3093\u3060\u3089', '\u3093\u3060\u308A']],\n ['\u3076', ['\u3093\u3067', '\u3093\u3060', '\u3093\u3060\u3089', '\u3093\u3060\u308A']], // same as above\n ['\u3080', ['\u3093\u3067', '\u3093\u3060', '\u3093\u3060\u3089', '\u3093\u3060\u308A']], // ditto\n ['\u3064', ['\u3063\u3066', '\u3063\u305F', '\u3063\u305F\u3089', '\u3063\u305F\u308A']],\n ['\u308B', ['\u3063\u3066', '\u3063\u305F', '\u3063\u305F\u3089', '\u3063\u305F\u308A']], // same as above and below\n ['\u3046', ['\u3063\u3066', '\u3063\u305F', '\u3063\u305F\u3089', '\u3063\u305F\u308A']],\n];\nlet tte: Map<string, string[]> = new Map([]);\nfor (const [tail, quad] of tteRaw) { tte.set(tail, quad); }\n\nexport function conjugateTypeI(verb: string, conj: Conjugation): string[] {\n {\n if (verb === '\u3059\u308B') {\n return conjugateSuru(verb, conj);\n } else if (verb === '\u304F\u308B' || verb === '\u6765\u308B') {\n return conjugateKuru(verb, conj);\n } else if (verb === '\u3060') {\n return conjugateDa(verb, conj);\n } else if (verb === '\u3067\u3059') {\n return conjugateDesu(verb, conj);\n } else if (verb.endsWith('\u304F\u3060\u3055\u308B')) {\n if (conj === 'Dictionary') {\n return [verb];\n } else if (conj === 'Conjunctive') {\n return [verb.slice(0, -2) + '\u3055\u3044'];\n } else {\n throw new Error('unknown conjugation for -kudasaru');\n }\n }\n const specialHit = specialCases.get(verb);\n if (specialHit && specialHit.has(conj)) { return [specialHit.get(conj) || '']; }\n // The above inner-most `get` is guaranteed to be not-undefined, so the empty string will never be returned, but\n // TypeScript 3.0.1 doesn't treat `Map.has` as a type guard \uD83D\uDE23.\n }\n const head = verb.slice(0, -1);\n const tail = verb.slice(-1);\n const idx = conjToIdx.get(conj === 'Imperative' ? 'Conditional' : conj);\n if (typeof idx === 'undefined') { throw new Error('Conjugation not yet implemented'); }\n if (idx < 5) {\n if (tail === '\u3046') {\n if (idx === 0) { return [head + '\u308F']; }\n return [head + lookup('\u3042', idx)];\n }\n return [head + lookup(tail, idx)];\n }\n const tidx = idx - 5;\n const tteHit = tte.get((verb === '\u884C\u304F' || verb === '\u3044\u304F') ? '\u3064' : tail);\n if (!tteHit) { throw new Error('Unknown verb ending. Is it in dictionary form?'); }\n return [head + tteHit[tidx]];\n}\n\nexport function conjugateTypeII(verb: string, conj: Conjugation): string[] {\n if (verb === '\u3059\u308B') {\n return conjugateSuru(verb, conj);\n } else if (verb === '\u304F\u308B' || verb === '\u6765\u308B') {\n return conjugateKuru(verb, conj);\n } else if (verb === '\u3060') {\n return conjugateDa(verb, conj);\n } else if (verb === '\u3067\u3059') {\n return conjugateDesu(verb, conj);\n }\n const head = verb.slice(0, -1);\n switch (conj) {\n case 'Negative':\n case 'Zu': return [head];\n case 'Conjunctive': return [head];\n case 'Dictionary': return [verb];\n case 'Conditional': return [head + '\u308C'];\n case 'Imperative': return [head + '\u308D', head + '\u3088'];\n case 'Volitional': return [head + '\u3088\u3046'];\n case 'Te': return [head + '\u3066'];\n case 'Ta': return [head + '\u305F'];\n case 'Tara': return [head + '\u305F\u3089'];\n case 'Tari': return [head + '\u305F\u308A'];\n default: throw new Error('Unhandled conjugation');\n }\n}\n\nfunction conjugateKuru(verb: string, conj: Conjugation): string[] {\n let ret = '';\n switch (conj) {\n case 'Negative':\n case 'Zu': ret = '\u3053'; break;\n case 'Conjunctive': ret = '\u304D'; break;\n case 'Dictionary': ret = '\u304F\u308B'; break;\n case 'Conditional': ret = '\u304F\u308C'; break;\n case 'Imperative': ret = '\u3053\u3044'; break;\n case 'Volitional': ret = '\u3053\u3088\u3046'; break;\n case 'Te': ret = '\u304D\u3066'; break;\n case 'Ta': ret = '\u304D\u305F'; break;\n case 'Tara': ret = '\u304D\u305F\u3089'; break;\n case 'Tari': ret = '\u304D\u305F\u308A'; break;\n default: throw new Error('Unhandled conjugation');\n }\n const head = verb.slice(0, -1);\n if (head === '\u304F') {\n return [ret];\n } else if (head === '\u6765') {\n return ['\u6765' + ret.slice(1)];\n }\n throw new Error('Expected input to be \u6765\u308B or \u304F\u308B');\n}\n\nfunction conjugateSuru(verb: string, conj: Conjugation): string[] {\n switch (conj) {\n case 'Negative': return ['\u3057'];\n case 'Conjunctive': return ['\u3057'];\n case 'Dictionary': return ['\u3059\u308B'];\n case 'Conditional': return ['\u3059\u308C'];\n case 'Imperative': return ['\u3057\u308D', '\u305B\u3088'];\n case 'Volitional': return ['\u3057\u3088\u3046'];\n case 'Te': return ['\u3057\u3066'];\n case 'Ta': return ['\u3057\u305F'];\n case 'Tara': return ['\u3057\u305F\u3089'];\n case 'Tari': return ['\u3057\u305F\u308A'];\n case 'Zu': return ['\u305B\u305A'];\n default: throw new Error('Unhandled conjugation');\n }\n}\nfunction conjugateDa(_verb: string, conj: Conjugation): string[] {\n switch (conj) {\n case 'Negative': return ['\u3067\u306A\u3044', '\u3067\u306F\u306A\u3044', '\u3058\u3083\u306A\u3044'];\n case 'Dictionary': return ['\u3060'];\n case 'Conditional': return ['\u306A\u3089'];\n // case 'Presumptive': return ['\u3060\u308D\u3046']; // omitting this\n case 'Te': return ['\u3067'];\n case 'Ta': return ['\u3060\u3063\u305F'];\n case 'Tara': return ['\u3060\u3063\u305F\u3089'];\n case 'Tari': return ['\u3060\u3063\u305F\u308A'];\n default: throw new Error('Unhandled conjugation');\n }\n}\nfunction conjugateDesu(_verb: string, conj: Conjugation): string[] {\n switch (conj) {\n case 'Negative': return ['\u3067\u3042\u308A\u307E\u305B\u3093', '\u3067\u306F\u3042\u308A\u307E\u305B\u3093'];\n case 'Dictionary': return ['\u3067\u3059'];\n // case 'Presumptive': return ['\u3067\u305D\u3046']; // omitting this\n case 'Te': return ['\u3067\u3057\u3066'];\n case 'Ta': return ['\u3067\u3057\u305F'];\n case 'Tara': return ['\u3067\u3057\u305F\u3089'];\n case 'Tari': return ['\u3067\u3057\u305F\u308A'];\n default: throw new Error('Unhandled conjugation');\n }\n}\n\nfunction conjugateStrict(verb: string, conj: Conjugation, typeII: boolean = false): string[] {\n return ((verb.slice(-1) === '\u308B' && typeII) ? conjugateTypeII : conjugateTypeI)(verb, conj);\n}\n\nexport function conjugate(verb: string, conj: Conjugation, typeII = false): string[] {\n const ret = conjugateStrict(verb, conj, typeII);\n\n if ((conj === 'Negative' || conj === 'Zu') && (verb !== '\u3060' && verb !== '\u3067\u3059')) {\n // Don't do this for da/desu because their negatives are baked in\n ret.push(ret[0] + (conj === 'Negative' ? '\u306A\u3044' : '\u305A'));\n } else if (conj === 'Conjunctive') {\n ret.push(ret[0] + '\u307E\u3059');\n } else if (conj === 'Conditional') {\n ret.push(ret[0] + '\u3070');\n } else if (conj === 'Volitional') {\n ret.push(ret[0] + '\u3046');\n }\n\n return ret;\n}\n\nexport function conjugateAuxiliaries(initialVerb: string, auxs: Auxiliary[], finalConj: Conjugation,\n initialTypeII: boolean = false): string[] {\n\n if (auxs.length === 0) { return conjugate(initialVerb, finalConj, initialTypeII); }\n\n if (initialVerb === '\u3060' || initialVerb === '\u3067\u3059') {\n if (auxs.length === 1 && auxs[0] === 'Nai') {\n if (finalConj === 'Ta') {\n if (initialVerb === '\u3060') {\n return ['\u3067\u306F\u306A\u304B\u3063\u305F', '\u3058\u3083\u306A\u304B\u3063\u305F'];\n } else {\n return ['\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F', '\u3067\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F'];\n }\n } else if (finalConj === 'Te' && initialVerb === '\u3060') {\n return ['\u3058\u3083\u306A\u304F\u3066'];\n }\n }\n throw new Error('unhandled copula auxiliaries/conjugation');\n }\n\n let verbs: string[] = [initialVerb];\n let typeII = initialTypeII;\n for (const [auxIdx, aux] of auxs.entries()) {\n const conj: Conjugation = auxIdx === auxs.length - 1 ? finalConj : 'Dictionary';\n const prevAux: Auxiliary|undefined = auxs[auxIdx - 1];\n\n if (auxIdx !== auxs.length - 1 && (aux === 'Masu' || aux === 'Nai' || aux === 'Tai' || aux == 'Hoshii' ||\n aux === 'Rashii' || aux === 'SoudaConjecture' || aux === 'SoudaHearsay')) {\n throw new Error('must be final auxiliary');\n }\n\n if (prevAux === 'Kuru') {\n // While `conjugate` looks for with Kudasaru with `endsWith`, it looks for Kuru with exact-compare (because\n // potentially lots of things could end in kuru)\n const heads = verbs.map(s => s.slice(0, -2));\n const tails = conjugateAuxiliary('\u304F\u308B', aux, conj);\n verbs = heads.flatMap(prefix => tails.map(t => prefix + t));\n } else {\n verbs = verbs.flatMap(verb => conjugateAuxiliary(verb, aux, conj, typeII));\n }\n typeII = aux === 'Potential' || aux === 'SeruSaseru' || aux === 'ReruRareru' || aux === 'CausativePassive' ||\n aux === 'ShortenedCausativePassive' || aux === 'Ageru' || aux === 'Sashiageru' || aux === 'Kureru' ||\n aux === 'Miru' || aux === 'TeIru';\n }\n return verbs;\n}\n\nfunction conjugateAuxiliary(verb: string, aux: Auxiliary, conj: Conjugation, typeII: boolean = false): string[] {\n if (aux === 'Potential') {\n const newverb = conjugateTypeI(verb, 'Conditional')[0] + '\u308B';\n return conjugate(newverb, conj, true);\n } else if (aux === 'Masu') {\n const base = conjugate(verb, 'Conjunctive', typeII)[0];\n switch (conj) {\n case 'Negative': return [base + '\u307E\u305B\u3093', base + '\u307E\u305B\u3093\u3067\u3057\u305F'];\n // case 'Conjunctive':\n case 'Dictionary': return [base + '\u307E\u3059'];\n case 'Conditional': return [base + '\u307E\u3059\u308C\u3070'];\n case 'Imperative': return [base + '\u307E\u305B', base + '\u307E\u3057']; // latter only for nasaru and ossharu\n case 'Volitional': return [base + '\u307E\u3057\u3087\u3046'];\n case 'Te': return [base + '\u307E\u3057\u3066'];\n case 'Ta': return [base + '\u307E\u3057\u305F'];\n case 'Tara': return [base + '\u307E\u3057\u305F\u3089'];\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'Nai') {\n const base = conjugate(verb, 'Negative', typeII)[0];\n switch (conj) {\n case 'Negative': return [base + '\u306A\u304F\u306F\u306A\u3044'];\n case 'Conjunctive': return [base + '\u306A\u304F'];\n case 'Dictionary': return [base + '\u306A\u3044'];\n case 'Conditional': return [base + '\u306A\u3051\u308C\u3070'];\n // case 'Imperative':\n // case 'Volitional':\n case 'Te': return [base + '\u306A\u304F\u3066', base + '\u306A\u3044\u3067']; // only the first is in Kamiya\n case 'Ta': return [base + '\u306A\u304B\u3063\u305F'];\n case 'Tara': return [base + '\u306A\u304B\u3063\u305F\u3089'];\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'Tai') {\n const base = conjugate(verb, 'Conjunctive', typeII)[0];\n switch (conj) {\n case 'Negative': return [base + '\u305F\u304F\u306A\u3044'];\n case 'Conjunctive': return [base + '\u305F\u304F'];\n case 'Dictionary': return [base + '\u305F\u3044'];\n case 'Conditional': return [base + '\u305F\u3051\u308C\u3070'];\n // case 'Imperative':\n // case 'Volitional':\n case 'Te': return [base + '\u305F\u304F\u3066'];\n case 'Ta': return [base + '\u305F\u304B\u3063\u305F'];\n case 'Tara': return [base + '\u305F\u304B\u3063\u305F\u3089'];\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'Tagaru') {\n switch (conj) {\n case 'Conditional':\n case 'Imperative':\n case 'Volitional':\n case 'Tari': throw new Error('Unhandled conjugation');\n }\n const bases = conjugate(verb, 'Conjunctive', typeII);\n const tagaruConj = conjugate('\u305F\u304C\u308B', conj, false);\n return tagaruConj.map(suffix => bases[0] + suffix);\n } else if (aux === 'Hoshii') {\n const base = conjugate(verb, 'Te', typeII)[0];\n switch (conj) {\n case 'Negative': return [base + '\u307B\u3057\u304F\u306A\u3044'];\n case 'Conjunctive': return [base + '\u307B\u3057\u304F'];\n case 'Dictionary': return [base + '\u307B\u3057\u3044'];\n case 'Conditional': return [base + '\u307B\u3057\u3051\u308C\u3070'];\n // case 'Imperative':\n // case 'Volitional':\n case 'Te': return [base + '\u307B\u3057\u304F\u3066'];\n case 'Ta': return [base + '\u307B\u3057\u304B\u3063\u305F'];\n case 'Tara': return [base + '\u307B\u3057\u304B\u3063\u305F\u3089'];\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'Rashii') {\n const base1 = conjugate(verb, 'Ta', typeII)[0];\n const base2 = verb;\n const append = (suffix: string) => [base1, base2].map(prefix => prefix + suffix);\n switch (conj) {\n case 'Negative': const neg = conjugateAuxiliary(verb, 'Nai', 'Dictionary')[0]; return [neg + '\u3089\u3057\u3044'];\n case 'Conjunctive': return append('\u3089\u3057\u304F');\n case 'Dictionary': return append('\u3089\u3057\u3044');\n // case 'Conditional':\n // case 'Imperative':\n // case 'Volitional':\n case 'Te': return append('\u3089\u3057\u304F\u3066');\n // case 'Ta':\n // case 'Tara':\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'SoudaHearsay') {\n const base1 = conjugate(verb, 'Ta', typeII)[0];\n const base2 = verb; // dictionary form\n const append = (suffix: string) => [base1, base2].map(prefix => prefix + suffix);\n switch (conj) {\n // case 'Negative':\n // case 'Conjunctive':\n case 'Dictionary': return append('\u305D\u3046\u3060');\n // case 'Conditional':\n // case 'Imperative':\n // case 'Volitional':\n // case 'Te':\n // case 'Ta':\n // case 'Tara':\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'SoudaConjecture') {\n const base = conjugate(verb, 'Conjunctive', typeII)[0];\n switch (conj) {\n // case 'Negative':\n // case 'Conjunctive':\n case 'Dictionary': return [base + '\u305D\u3046\u3060', base + '\u305D\u3046\u3067\u3059'];\n case 'Conditional': return [base + '\u305D\u3046\u306A\u3089'];\n // case 'Imperative':\n // case 'Volitional':\n // case 'Te':\n case 'Ta': return [base + '\u305D\u3046\u3060\u3063\u305F', base + '\u305D\u3046\u3067\u3057\u305F'];\n // case 'Tara':\n // case 'Tari':\n default: throw new Error('Unhandled conjugation');\n }\n } else if (aux === 'SeruSaseru' || aux === 'ShortenedCausative') {\n if (conj === 'Tara' || conj === 'Tari') { throw new Error('Unhandled conjugation'); }\n let newverb;\n if (verb === '\u6765\u308B' || verb === '\u304F\u308B') {\n newverb = (verb[0] === '\u6765' ? '\u6765' : '\u3053') + '\u3055\u305B\u308B';\n } else if (verb === '\u3059\u308B') {\n newverb = '\u3055\u305B\u308B';\n } else if (typeII) {\n newverb = conjugateTypeII(verb, 'Negative')[0] + '\u3055\u305B\u308B';\n } else { // type I\n newverb = conjugateTypeI(verb, 'Negative')[0] + '\u305B\u308B';\n }\n if (aux === 'ShortenedCausative') {\n newverb = newverb.slice(0, -2) + '\u3059';\n return conjugate(newverb, conj, false);\n }\n return conjugate(newverb, conj, true);\n } else if (aux === 'ReruRareru') {\n if (conj === 'Conditional' || conj === 'Imperative' || conj === 'Volitional' || conj === 'Tara' ||\n conj === 'Tari') {\n throw new Error('Unhandled conjugation');\n }\n let newverb;\n if (verb === '\u6765\u308B' || verb === '\u304F\u308B') {\n newverb = (verb[0] === '\u6765' ? '\u6765' : '\u3053') + '\u3089\u308C\u308B';\n } else if (verb === '\u3059\u308B') {\n newverb = '\u3055\u308C\u308B';\n } else if (typeII) {\n newverb = conjugateTypeII(verb, 'Negative')[0] + '\u3089\u308C\u308B';\n } else { // type I\n newverb = conjugateTypeI(verb, 'Negative')[0] + '\u308C\u308B';\n }\n return conjugate(newverb, conj, true);\n } else if (aux === 'CausativePassive') {\n const newverb = conjugateAuxiliary(verb, 'SeruSaseru', 'Negative', typeII)[0] + '\u3089\u308C\u308B';\n return conjugate(newverb, conj, true);\n } else if (aux === 'ShortenedCausativePassive') {\n const newverb = conjugateAuxiliary(verb, 'ShortenedCausative', 'Negative', typeII)[0] + '\u308C\u308B';\n return conjugate(newverb, conj, true);\n } else if (aux === 'Ageru' || aux === 'Sashiageru' || aux === 'Yaru' || aux === 'Morau' || aux === 'Itadaku' ||\n aux === 'Kureru' || aux === 'Kudasaru' || aux === 'TeIru' || aux === 'TeAru' || aux === 'Miru' ||\n aux === 'Iku' || aux === 'Kuru' || aux === 'Oku' || aux === 'TeOru') {\n const vte = conjugate(verb, 'Te', typeII)[0];\n const endings: string[] = aux === 'Ageru' ? ['\u3042\u3052\u308B']\n : aux === 'Sashiageru' ? ['\u5DEE\u3057\u4E0A\u3052\u308B', '\u3055\u3057\u3042\u3052\u308B']\n : aux === 'Yaru' ? ['\u3084\u308B']\n : aux === 'Morau' ? ['\u3082\u3089\u3046']\n : aux === 'Itadaku' ? ['\u3044\u305F\u3060\u304F']\n : aux === 'Kureru' ? ['\u304F\u308C\u308B']\n : aux === 'Kudasaru' ? ['\u304F\u3060\u3055\u308B']\n : aux === 'TeIru' ? ['\u3044\u308B', '\u308B']\n : aux === 'TeAru' ? ['\u3042\u308B']\n : aux === 'Miru' ? ['\u307F\u308B']\n : aux === 'Iku' ? ['\u3044\u304F']\n : aux === 'Kuru' ? ['\u304F\u308B']\n : aux === 'Oku' ? ['\u304A\u304F']\n : aux === 'TeOru' ? ['\u304A\u308B']\n : [];\n if (!endings[0]) { throw new Error('missing ternary'); }\n if (aux === 'Kuru') { return conjugate(endings[0], conj).map(suffix => vte + suffix); }\n const endingTypeII: boolean =\n aux === 'Ageru' || aux === 'Sashiageru' || aux === 'Kureru' || aux === 'TeIru' || aux === 'Miru';\n const newVerbs = endings.map(ending => vte + ending);\n if (aux === 'Oku') { newVerbs.push(vte.slice(0, -1) + '\u3068\u304F'); }\n return newVerbs.flatMap(v => conjugate(v, conj, endingTypeII));\n } else if (aux === 'Shimau') {\n const vte = conjugate(verb, 'Te', typeII)[0];\n const shimau = conjugate(vte + '\u3057\u307E\u3046', conj);\n const noTe = vte.slice(0, -1);\n // see https://www.sljfaq.org/afaq/colloquial-contractions.html\n if (vte.endsWith('\u3066')) {\n // no rendaku\n const chau = conjugate(noTe + '\u3061\u3083\u3046', conj);\n const chimau = conjugate(noTe + '\u3061\u307E\u3046', conj);\n return shimau.concat(chau).concat(chimau);\n }\n const jimau = conjugate(noTe + '\u3058\u307E\u3046', conj);\n const dimau = conjugate(noTe + '\u3062\u307E\u3046', conj);\n return shimau.concat(jimau).concat(dimau);\n }\n isNever(aux);\n throw new Error('Unhandled auxiliary')\n}\nfunction isNever(x: never) { return x; }\n\nexport interface Deconjugated {\n auxiliaries: Auxiliary[];\n conjugation: Conjugation;\n result: string[];\n}\nexport function verbDeconjugate(conjugated: string, dictionaryForm: string, typeII = false,\n maxAuxDepth = Infinity): Deconjugated[] {\n const hits: Deconjugated[] = [];\n\n for (const conj of conjugations) {\n try {\n const result = conjugate(dictionaryForm, conj, typeII);\n if (result.includes(conjugated)) { hits.push({conjugation: conj, auxiliaries: [], result}) }\n } catch {}\n }\n\n if (maxAuxDepth <= 0) { return hits; }\n\n for (const aux of auxiliaries) {\n for (const conj of conjugations) {\n try {\n const result = conjugateAuxiliary(dictionaryForm, aux, conj, typeII);\n if (result.includes(conjugated)) { hits.push({conjugation: conj, auxiliaries: [aux], result}) }\n } catch {}\n }\n }\n\n if (maxAuxDepth <= 1) { return hits; }\n\n const penultimates: Auxiliary[] = [\n 'Ageru', 'Sashiageru', 'Yaru', 'Morau', 'Itadaku', 'Kureru', 'Kudasaru', 'Miru', 'Iku', 'Kuru', 'Oku', 'Shimau',\n 'TeIru', 'TeAru', 'TeOru', 'Potential', 'ReruRareru', 'SeruSaseru'\n ];\n const depth2Finals: Auxiliary[] = ['Masu', 'SoudaConjecture', 'SoudaHearsay', 'TeIru', 'Tai', 'Nai', 'Yaru'];\n for (const penultimate of penultimates) {\n for (const final of depth2Finals) {\n for (const conj of conjugations) {\n const auxs = [penultimate, final];\n try {\n const result = conjugateAuxiliaries(dictionaryForm, auxs, conj, typeII);\n if (result.includes(conjugated)) { hits.push({conjugation: conj, auxiliaries: auxs, result}); }\n } catch {}\n }\n }\n }\n\n if (maxAuxDepth <= 2) { return hits; }\n\n const antepenultimates: Auxiliary[] = [\n 'SeruSaseru',\n 'ReruRareru',\n 'Itadaku',\n ];\n const depth3Finals: Auxiliary[] = ['Masu'];\n for (const ante of antepenultimates) {\n for (const penultimate of penultimates) {\n for (const final of depth3Finals) {\n for (const conj of conjugations) {\n const auxs = [ante, penultimate, final];\n try {\n const result = conjugateAuxiliaries(dictionaryForm, auxs, conj, typeII);\n if (result.includes(conjugated)) { hits.push({conjugation: conj, auxiliaries: auxs, result}); }\n } catch {}\n }\n }\n }\n }\n\n return hits;\n}\n\nexport {\n adjConjugations,\n adjConjugate,\n adjDeconjugate,\n} from './adjective';\n\nexport type {\n AdjConjugation,\n AdjDeconjugated,\n} from './adjective';\n", "const split = (s: string) => s.split('');\nconst vec = [\n split('\u3042\u3044\u3046\u3048\u304A'),\n split('\u304B\u304D\u304F\u3051\u3053'),\n split('\u304C\u304E\u3050\u3052\u3054'),\n split('\u3055\u3057\u3059\u305B\u305D'),\n split('\u3056\u3058\u305A\u305C\u305E'),\n split('\u305F\u3061\u3064\u3066\u3068'),\n split('\u3060\u3062\u3065\u3067\u3069'),\n split('\u306A\u306B\u306C\u306D\u306E'),\n split('\u306F\u3072\u3075\u3078\u307B'),\n split('\u3070\u3073\u3076\u3079\u307C'),\n split('\u3071\u3074\u3077\u307A\u307D'),\n split('\u307E\u307F\u3080\u3081\u3082'),\n ['\u3084', '', '\u3086', '', '\u3088'],\n split('\u3089\u308A\u308B\u308C\u308D'),\n ['\u308F', '', '', '', '\u3092'],\n ['\u3093', '', '', '', ''],\n];\nlet charToVecIndex: Map<String, number> = new Map([]);\nvec.forEach((row, rowidx) => {\n row.forEach(char => {\n if (char.length > 0) { charToVecIndex.set(char, rowidx) }\n });\n});\nexport function lookup(character: String, vowel: number): String {\n if (vowel < 0 || vowel > 4) { throw new Error('vowel must be between 0 and 4'); }\n const idx = charToVecIndex.get(character);\n if (typeof idx === 'undefined') { throw new Error('unknown character'); }\n const ret = vec[idx][vowel];\n if (ret.length === 0) { throw new Error('vowel for kana does not exist'); }\n return ret;\n}", "export const adjConjugations = [\n 'Present', 'Prenomial', 'Negative', 'Past', 'NegativePast', 'ConjunctiveTe', 'Adverbial', 'Conditional',\n 'TaraConditional', 'Tari', 'Noun', 'StemSou', 'StemNegativeSou'\n] as const;\nexport type AdjConjugation = typeof adjConjugations[number];\n\nfunction never(x: never) { throw new Error('never?'); }\n\nexport function adjConjugate(adjective: string, conj: AdjConjugation, iAdjective: boolean): string[] {\n if (iAdjective) {\n let stem = adjective.slice(0, -1);\n let addSa = false;\n if (adjective === '\u3044\u3044' || adjective === '\u826F\u3044' || adjective === '\u3088\u3044') {\n stem = adjective.startsWith('\u826F') ? '\u826F' : '\u3088';\n addSa = true;\n }else if (adjective.endsWith('\u306A\u3044')) {\n addSa = true;\n }\n switch (conj) {\n case 'Present': return [adjective];\n case 'Prenomial': return [adjective];\n case 'Negative': return [stem + '\u304F\u306A\u3044'];\n case 'Past': return [stem + '\u304B\u3063\u305F'];\n case 'NegativePast': return [stem + '\u304F\u306A\u304B\u3063\u305F'];\n case 'ConjunctiveTe': return [stem + '\u304F', stem + '\u304F\u3066'];\n case 'Adverbial': return [stem + '\u304F'];\n case 'Conditional': return [stem + '\u3051\u308C\u3070'];\n case 'TaraConditional': return [stem + '\u304B\u3063\u305F\u3089'];\n case 'Tari': return [stem + '\u304B\u3063\u305F\u308A'];\n case 'Noun': return [stem + '\u3055'];\n case 'StemSou': return [addSa ? stem + '\u3055\u305D\u3046' : stem + '\u305D\u3046'];\n case 'StemNegativeSou': {\n const negativeStem = stem + '\u304F\u306A';\n // basically conjugate adjective with 'Negative' and redo stem\n return [negativeStem + '\u3055\u305D\u3046'];\n }\n default: never(conj);\n }\n }\n // na-adjective\n switch (conj) {\n case 'Prenomial': return [adjective + '\u306A'];\n case 'Present': return ['\u3060', '\u3067\u3059', '\u3067\u3054\u3056\u3044\u307E\u3059'].map(suffix => adjective + suffix);\n case 'Negative': return ['\u3067\u306F\u306A\u3044', '\u3067\u306A\u3044', '\u3058\u3083\u306A\u3044', '\u3067\u306F\u3042\u308A\u307E\u305B\u3093'].map(suffix => adjective + suffix);\n case 'Past': return ['\u3060\u3063\u305F', '\u3067\u3057\u305F'].map(suffix => adjective + suffix);\n case 'NegativePast':\n return ['\u3067\u306F\u306A\u304B\u3063\u305F', '\u3067\u306A\u304B\u3063\u305F', '\u3058\u3083\u306A\u304B\u3063\u305F', '\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3067\u3057\u305F'].map(suffix => adjective + suffix);\n case 'ConjunctiveTe': return [adjective + '\u3067'];\n case 'Adverbial': return [adjective + '\u306B'];\n case 'Conditional': return ['\u306A\u3089', '\u306A\u3089\u3070'].map(suffix => adjective + suffix);\n case 'TaraConditional': return ['\u3060\u3063\u305F\u3089'].map(suffix => adjective + suffix);\n case 'Tari': return ['\u3060\u3063\u305F\u308A', '\u3067\u3057\u305F\u308A'].map(suffix => adjective + suffix);\n case 'Noun': return [adjective + '\u3055'];\n case 'StemSou': return [adjective + '\u305D\u3046'];\n case 'StemNegativeSou': return [adjective + '\u3058\u3083\u306A\u3055\u305D\u3046'];\n default: never(conj);\n }\n\n throw new Error('unknown conjugation/iAdjective');\n}\n\nexport interface AdjDeconjugated {\n conjugation: AdjConjugation;\n result: string[];\n}\nexport function adjDeconjugate(conjugated: string, dictionary: string, iAdjective: boolean): AdjDeconjugated[] {\n const hits: AdjDeconjugated[] = [];\n for (const conj of adjConjugations) {\n const result = adjConjugate(dictionary, conj, iAdjective);\n if (result.includes(conjugated)) { hits.push({conjugation: conj, result}) }\n }\n return hits;\n}"],
"mappings": "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",
"names": ["kamiya_conjugator_exports", "__export", "adjConjugate", "adjConjugations", "adjDeconjugate", "auxiliaries", "conjugate", "conjugateAuxiliaries", "conjugateTypeI", "conjugateTypeII", "conjugations", "verbDeconjugate", "split", "s", "vec", "charToVecIndex", "row", "rowidx", "char", "lookup", "character", "vowel", "idx", "ret", "adjConjugations", "never", "x", "adjConjugate", "adjective", "conj", "iAdjective", "stem", "addSa", "suffix", "adjDeconjugate", "conjugated", "dictionary", "hits", "result", "conjugations", "auxiliaries", "specialCasesRaw", "specialCases", "verb", "conj", "result", "outer", "conjToIdx", "x", "i", "_a", "tteRaw", "tte", "tail", "quad", "conjugateTypeI", "conjugateSuru", "conjugateKuru", "conjugateDa", "conjugateDesu", "specialHit", "head", "idx", "lookup", "tidx", "tteHit", "conjugateTypeII", "ret", "_verb", "conjugateStrict", "typeII", "conjugate", "conjugateAuxiliaries", "initialVerb", "auxs", "finalConj", "initialTypeII", "verbs", "auxIdx", "aux", "prevAux", "heads", "s", "tails", "conjugateAuxiliary", "prefix", "t", "newverb", "base", "bases", "suffix", "base1", "base2", "append", "vte", "endings", "endingTypeII", "newVerbs", "ending", "v", "shimau", "noTe", "chau", "chimau", "jimau", "dimau", "verbDeconjugate", "conjugated", "dictionaryForm", "typeII", "maxAuxDepth", "hits", "conj", "conjugations", "result", "conjugate", "e", "aux", "auxiliaries", "conjugateAuxiliary", "penultimates", "depth2Finals", "penultimate", "final", "auxs", "conjugateAuxiliaries", "antepenultimates", "depth3Finals", "ante"]
}