diff --git a/benches/japanese-language-transformer.bench.js b/benches/japanese-language-transformer.bench.js index f7a3b86956..3a9495af90 100644 --- a/benches/japanese-language-transformer.bench.js +++ b/benches/japanese-language-transformer.bench.js @@ -90,6 +90,10 @@ describe('japanese language transformer', () => { '食べん', '食べんかった', '食べんばかり', + '食べますまい', + '食べましたら', + '食べますれば', + '食べませんかった', ]; const inflectionCombinations = [ @@ -151,6 +155,10 @@ describe('japanese language transformer', () => { 'こん', 'こんかった', 'こんばかり', + 'きますまい', + 'きましたら', + 'きますれば', + 'きませんかった', ]; const suruInflections = [ @@ -210,6 +218,10 @@ describe('japanese language transformer', () => { 'せん', 'せんかった', 'せんばかり', + 'しますまい', + 'しましたら', + 'しますれば', + 'しませんかった', ]; const kansaibenInflections = [ diff --git a/ext/js/language/ja/japanese-transforms.js b/ext/js/language/ja/japanese-transforms.js index 3141c8c3d4..ae113e7b51 100644 --- a/ext/js/language/ja/japanese-transforms.js +++ b/ext/js/language/ja/japanese-transforms.js @@ -76,7 +76,7 @@ const conditions = { }, ], isDictionaryForm: true, - subConditions: ['v5d', 'v5m', 'v5s'], + subConditions: ['v5d', 'v5s'], }, 'v5d': { name: 'Godan verb, dictionary form', @@ -88,10 +88,6 @@ const conditions = { ], isDictionaryForm: false, }, - 'v5m': { - name: 'Godan verb, polite (masu) form', - isDictionaryForm: false, - }, 'v5s': { name: 'Godan verb, short causative form', isDictionaryForm: false, @@ -136,6 +132,14 @@ const conditions = { ], isDictionaryForm: true, }, + '-masu': { + name: 'Polite -masu ending', + isDictionaryForm: false, + }, + '-masen': { + name: 'Polite negative -masen ending', + isDictionaryForm: false, + }, '-te': { name: 'Intermediate -te endings for progressive or perfect tense', isDictionaryForm: false, @@ -152,6 +156,10 @@ const conditions = { name: '-ta past form ending', isDictionaryForm: false, }, + '-n': { + name: '-n negative ending', + isDictionaryForm: false, + }, '-na': { name: 'Intermediate -na ending (imperative negative)', isDictionaryForm: false, @@ -194,6 +202,7 @@ export const japaneseTransforms = { suffixInflection('べば', 'ぶ', ['-ba'], ['v5']), suffixInflection('めば', 'む', ['-ba'], ['v5']), suffixInflection('れば', 'る', ['-ba'], ['v1', 'v5', 'vk', 'vs', 'vz']), + suffixInflection('れば', '', ['-ba'], ['-masu']), ], }, '-ya': { @@ -535,6 +544,7 @@ export const japaneseTransforms = { suffixInflection('副うたら', '副う', [], ['v5']), suffixInflection('厭うたら', '厭う', [], ['v5']), suffixInflection('のたもうたら', 'のたまう', [], ['v5']), + suffixInflection('ましたら', 'ます', [], ['-masu']), ], }, '-tari': { @@ -635,7 +645,7 @@ export const japaneseTransforms = { suffixInflection('副うて', '副う', ['-te'], ['v5']), suffixInflection('厭うて', '厭う', ['-te'], ['v5']), suffixInflection('のたもうて', 'のたまう', ['-te'], ['v5']), - suffixInflection('まして', 'ます', [], ['v']), + suffixInflection('まして', 'ます', [], ['-masu']), ], }, '-zu': { @@ -712,54 +722,22 @@ export const japaneseTransforms = { }, ], rules: [ - suffixInflection('ん', 'る', [], ['v1']), - suffixInflection('かん', 'く', [], ['v5']), - suffixInflection('がん', 'ぐ', [], ['v5']), - suffixInflection('さん', 'す', [], ['v5']), - suffixInflection('たん', 'つ', [], ['v5']), - suffixInflection('なん', 'ぬ', [], ['v5']), - suffixInflection('ばん', 'ぶ', [], ['v5']), - suffixInflection('まん', 'む', [], ['v5']), - suffixInflection('らん', 'る', [], ['v5']), - suffixInflection('わん', 'う', [], ['v5']), - suffixInflection('ぜん', 'ずる', [], ['vz']), - suffixInflection('せん', 'する', [], ['vs']), - suffixInflection('為ん', '為る', [], ['vs']), - suffixInflection('こん', 'くる', [], ['vk']), - suffixInflection('来ん', '来る', [], ['vk']), - suffixInflection('來ん', '來る', [], ['vk']), - ], - }, - '-n past': { - name: '-n', - description: 'Past negative form of verbs; a sound change of ぬ.\n' + - 'Usage: Attach んかった to the irrealis form (mizenkei) of verbs.\n' + - 'する becomes せんかった', - i18n: [ - { - language: 'ja', - name: '~んかった', - description: '打消の過去を示す。なかった。', - }, - ], - rules: [ - suffixInflection('んかった', 'る', [], ['v1']), - suffixInflection('かんかった', 'く', [], ['v5']), - suffixInflection('がんかった', 'ぐ', [], ['v5']), - suffixInflection('さんかった', 'す', [], ['v5']), - suffixInflection('たんかった', 'つ', [], ['v5']), - suffixInflection('なんかった', 'ぬ', [], ['v5']), - suffixInflection('ばんかった', 'ぶ', [], ['v5']), - suffixInflection('まんかった', 'む', [], ['v5']), - suffixInflection('らんかった', 'る', [], ['v5']), - suffixInflection('わんかった', 'う', [], ['v5']), - suffixInflection('ぜんかった', 'ずる', [], ['vz']), - suffixInflection('せんかった', 'する', [], ['vs']), - suffixInflection('為んかった', '為る', [], ['vs']), - suffixInflection('こんかった', 'くる', [], ['vk']), - suffixInflection('来んかった', '来る', [], ['vk']), - suffixInflection('來んかった', '來る', [], ['vk']), - suffixInflection('ませんかった', 'ません', [], ['v']), + suffixInflection('ん', 'る', ['-n'], ['v1']), + suffixInflection('かん', 'く', ['-n'], ['v5']), + suffixInflection('がん', 'ぐ', ['-n'], ['v5']), + suffixInflection('さん', 'す', ['-n'], ['v5']), + suffixInflection('たん', 'つ', ['-n'], ['v5']), + suffixInflection('なん', 'ぬ', ['-n'], ['v5']), + suffixInflection('ばん', 'ぶ', ['-n'], ['v5']), + suffixInflection('まん', 'む', ['-n'], ['v5']), + suffixInflection('らん', 'る', ['-n'], ['v5']), + suffixInflection('わん', 'う', ['-n'], ['v5']), + suffixInflection('ぜん', 'ずる', ['-n'], ['vz']), + suffixInflection('せん', 'する', ['-n'], ['vs']), + suffixInflection('為ん', '為る', ['-n'], ['vs']), + suffixInflection('こん', 'くる', ['-n'], ['vk']), + suffixInflection('来ん', '来る', ['-n'], ['vk']), + suffixInflection('來ん', '來る', ['-n'], ['vk']), ], }, '-nbakari': { @@ -1090,7 +1068,7 @@ export const japaneseTransforms = { suffixInflection('こない', 'くる', ['adj-i'], ['vk']), suffixInflection('来ない', '来る', ['adj-i'], ['vk']), suffixInflection('來ない', '來る', ['adj-i'], ['vk']), - suffixInflection('ません', 'ます', ['v'], ['v']), + suffixInflection('ません', 'ます', ['-masen'], ['-masu']), ], }, '-sa': { @@ -1188,8 +1166,9 @@ export const japaneseTransforms = { suffixInflection('副うた', '副う', ['past'], ['v5']), suffixInflection('厭うた', '厭う', ['past'], ['v5']), suffixInflection('のたもうた', 'のたまう', ['past'], ['v5']), - suffixInflection('ました', 'ます', ['past'], ['v']), - suffixInflection('ませんでした', 'ません', ['past'], ['v']), + suffixInflection('ました', 'ます', ['past'], ['-masu']), + suffixInflection('でした', '', ['past'], ['-masen']), + suffixInflection('かった', '', ['past'], ['-masen', '-n']), ], }, '-masu': { @@ -1203,23 +1182,23 @@ export const japaneseTransforms = { }, ], rules: [ - suffixInflection('ます', 'る', ['v1'], ['v1']), - suffixInflection('います', 'う', ['v5m'], ['v5d', 'v5s']), - suffixInflection('きます', 'く', ['v5m'], ['v5d', 'v5s']), - suffixInflection('ぎます', 'ぐ', ['v5m'], ['v5d', 'v5s']), - suffixInflection('します', 'す', ['v5m'], ['v5d', 'v5s']), - suffixInflection('ちます', 'つ', ['v5m'], ['v5d', 'v5s']), - suffixInflection('にます', 'ぬ', ['v5m'], ['v5d', 'v5s']), - suffixInflection('びます', 'ぶ', ['v5m'], ['v5d', 'v5s']), - suffixInflection('みます', 'む', ['v5m'], ['v5d', 'v5s']), - suffixInflection('ります', 'る', ['v5m'], ['v5d', 'v5s']), - suffixInflection('じます', 'ずる', ['vz'], ['vz']), - suffixInflection('します', 'する', ['vs'], ['vs']), - suffixInflection('為ます', '為る', ['vs'], ['vs']), - suffixInflection('きます', 'くる', ['vk'], ['vk']), - suffixInflection('来ます', '来る', ['vk'], ['vk']), - suffixInflection('來ます', '來る', ['vk'], ['vk']), - suffixInflection('くあります', 'い', ['v'], ['adj-i']), + suffixInflection('ます', 'る', ['-masu'], ['v1']), + suffixInflection('います', 'う', ['-masu'], ['v5d', 'v5s']), + suffixInflection('きます', 'く', ['-masu'], ['v5d', 'v5s']), + suffixInflection('ぎます', 'ぐ', ['-masu'], ['v5d', 'v5s']), + suffixInflection('します', 'す', ['-masu'], ['v5d', 'v5s']), + suffixInflection('ちます', 'つ', ['-masu'], ['v5d', 'v5s']), + suffixInflection('にます', 'ぬ', ['-masu'], ['v5d', 'v5s']), + suffixInflection('びます', 'ぶ', ['-masu'], ['v5d', 'v5s']), + suffixInflection('みます', 'む', ['-masu'], ['v5d', 'v5s']), + suffixInflection('ります', 'る', ['-masu'], ['v5d', 'v5s']), + suffixInflection('じます', 'ずる', ['-masu'], ['vz']), + suffixInflection('します', 'する', ['-masu'], ['vs']), + suffixInflection('為ます', '為る', ['-masu'], ['vs']), + suffixInflection('きます', 'くる', ['-masu'], ['vk']), + suffixInflection('来ます', '来る', ['-masu'], ['vk']), + suffixInflection('來ます', '來る', ['-masu'], ['vk']), + suffixInflection('くあります', 'い', ['-masu'], ['adj-i']), ], }, 'potential': { @@ -1307,7 +1286,7 @@ export const japaneseTransforms = { suffixInflection('こよう', 'くる', [], ['vk']), suffixInflection('来よう', '来る', [], ['vk']), suffixInflection('來よう', '來る', [], ['vk']), - suffixInflection('ましょう', 'ます', [], ['v']), + suffixInflection('ましょう', 'ます', [], ['-masu']), suffixInflection('かろう', 'い', [], ['adj-i']), ], }, @@ -1336,6 +1315,7 @@ export const japaneseTransforms = { suffixInflection('こまい', 'くる', [], ['vk']), suffixInflection('来まい', '来る', [], ['vk']), suffixInflection('來まい', '來る', [], ['vk']), + suffixInflection('まい', '', [], ['-masu']), ], }, 'causative-passive': { diff --git a/test/language/japanese-transforms.test.js b/test/language/japanese-transforms.test.js index a238b7ab65..8626ce49f3 100644 --- a/test/language/japanese-transforms.test.js +++ b/test/language/japanese-transforms.test.js @@ -39,7 +39,7 @@ const tests = [ {term: '愛しい', source: '愛しかった', rule: 'adj-i', reasons: ['-ta']}, {term: '愛しい', source: '愛しくありません', rule: 'adj-i', reasons: ['-masu', 'negative']}, {term: '愛しい', source: '愛しくありませんでした', rule: 'adj-i', reasons: ['-masu', 'negative', '-ta']}, - {term: '愛しい', source: '愛しくありませんかった', rule: 'adj-i', reasons: ['-masu', 'negative', '-n past']}, + {term: '愛しい', source: '愛しくありませんかった', rule: 'adj-i', reasons: ['-masu', 'negative', '-ta']}, {term: '愛しい', source: '愛しき', rule: 'adj-i', reasons: ['-ki']}, {term: '愛しい', source: '愛しげ', rule: 'adj-i', reasons: ['-ge']}, {term: '愛しい', source: '愛し気', rule: 'adj-i', reasons: ['-ge']}, @@ -91,7 +91,7 @@ const tests = [ {term: '食べる', source: '食べず', rule: 'v1', reasons: ['-zu']}, {term: '食べる', source: '食べぬ', rule: 'v1', reasons: ['-nu']}, {term: '食べる', source: '食べん', rule: 'v1', reasons: ['-n']}, - {term: '食べる', source: '食べんかった', rule: 'v1', reasons: ['-n past']}, + {term: '食べる', source: '食べんかった', rule: 'v1', reasons: ['-n', '-ta']}, {term: '食べる', source: '食べんばかり', rule: 'v1', reasons: ['-nbakari']}, {term: '食べる', source: '食べざる', rule: 'v1', reasons: ['-zaru']}, {term: '食べる', source: '食べねば', rule: 'v1', reasons: ['-neba']}, @@ -155,7 +155,7 @@ const tests = [ {term: '買う', source: '買わず', rule: 'v5', reasons: ['-zu']}, {term: '買う', source: '買わぬ', rule: 'v5', reasons: ['-nu']}, {term: '買う', source: '買わん', rule: 'v5', reasons: ['-n']}, - {term: '買う', source: '買わんかった', rule: 'v5', reasons: ['-n past']}, + {term: '買う', source: '買わんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '買う', source: '買わんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '買う', source: '買わざる', rule: 'v5', reasons: ['-zaru']}, {term: '買う', source: '買わねば', rule: 'v5', reasons: ['-neba']}, @@ -171,6 +171,11 @@ const tests = [ {term: '買う', source: '買ってる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '買う', source: '買っとる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '買う', source: '買ってしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '買う', source: '買いますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '買う', source: '買いましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '買う', source: '買いますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '買う', source: '買いませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -218,7 +223,7 @@ const tests = [ {term: '行く', source: '行かず', rule: 'v5', reasons: ['-zu']}, {term: '行く', source: '行かぬ', rule: 'v5', reasons: ['-nu']}, {term: '行く', source: '行かん', rule: 'v5', reasons: ['-n']}, - {term: '行く', source: '行かんかった', rule: 'v5', reasons: ['-n past']}, + {term: '行く', source: '行かんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '行く', source: '行かんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '行く', source: '行かざる', rule: 'v5', reasons: ['-zaru']}, {term: '行く', source: '行かねば', rule: 'v5', reasons: ['-neba']}, @@ -234,6 +239,11 @@ const tests = [ {term: '行く', source: '行ってる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '行く', source: '行っとる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '行く', source: '行ってしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '行く', source: '行きますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '行く', source: '行きましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '行く', source: '行きますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '行く', source: '行きませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -281,7 +291,7 @@ const tests = [ {term: '泳ぐ', source: '泳がず', rule: 'v5', reasons: ['-zu']}, {term: '泳ぐ', source: '泳がぬ', rule: 'v5', reasons: ['-nu']}, {term: '泳ぐ', source: '泳がん', rule: 'v5', reasons: ['-n']}, - {term: '泳ぐ', source: '泳がんかった', rule: 'v5', reasons: ['-n past']}, + {term: '泳ぐ', source: '泳がんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '泳ぐ', source: '泳がんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '泳ぐ', source: '泳がざる', rule: 'v5', reasons: ['-zaru']}, {term: '泳ぐ', source: '泳がねば', rule: 'v5', reasons: ['-neba']}, @@ -296,6 +306,11 @@ const tests = [ {term: '泳ぐ', source: '泳いでおる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '泳ぐ', source: '泳いでる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '泳ぐ', source: '泳いでしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '泳ぐ', source: '泳ぎますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '泳ぐ', source: '泳ぎましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '泳ぐ', source: '泳ぎますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '泳ぐ', source: '泳ぎませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -343,7 +358,7 @@ const tests = [ {term: '話す', source: '話さず', rule: 'v5', reasons: ['-zu']}, {term: '話す', source: '話さぬ', rule: 'v5', reasons: ['-nu']}, {term: '話す', source: '話さん', rule: 'v5', reasons: ['-n']}, - {term: '話す', source: '話さんかった', rule: 'v5', reasons: ['-n past']}, + {term: '話す', source: '話さんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '話す', source: '話さざる', rule: 'v5', reasons: ['-zaru']}, {term: '話す', source: '話さねば', rule: 'v5', reasons: ['-neba']}, {term: '話す', source: '話さにゃ', rule: 'v5', reasons: ['-neba', '-ya']}, @@ -360,8 +375,13 @@ const tests = [ {term: '話す', source: '話してしまう', rule: 'v5', reasons: ['-te', '-shimau']}, {term: '増す', source: '増せん', rule: 'v5', reasons: ['potential', '-n']}, - {term: '増す', source: '増せんかった', rule: 'v5', reasons: ['potential', '-n past']}, + {term: '増す', source: '増せんかった', rule: 'v5', reasons: ['potential', '-n', '-ta']}, {term: '増す', source: '増せんばかり', rule: 'v5', reasons: ['potential', '-nbakari']}, + + {term: '話す', source: '話しますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '話す', source: '話しましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '話す', source: '話しますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '話す', source: '話しませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -409,7 +429,7 @@ const tests = [ {term: '待つ', source: '待たず', rule: 'v5', reasons: ['-zu']}, {term: '待つ', source: '待たぬ', rule: 'v5', reasons: ['-nu']}, {term: '待つ', source: '待たん', rule: 'v5', reasons: ['-n']}, - {term: '待つ', source: '待たんかった', rule: 'v5', reasons: ['-n past']}, + {term: '待つ', source: '待たんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '待つ', source: '待たんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '待つ', source: '待たざる', rule: 'v5', reasons: ['-zaru']}, {term: '待つ', source: '待たねば', rule: 'v5', reasons: ['-neba']}, @@ -425,6 +445,11 @@ const tests = [ {term: '待つ', source: '待ってる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '待つ', source: '待っとる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '待つ', source: '待ってしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '待つ', source: '待ちますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '待つ', source: '待ちましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '待つ', source: '待ちますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '待つ', source: '待ちませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -472,7 +497,7 @@ const tests = [ {term: '死ぬ', source: '死なず', rule: 'v5', reasons: ['-zu']}, {term: '死ぬ', source: '死なぬ', rule: 'v5', reasons: ['-nu']}, {term: '死ぬ', source: '死なん', rule: 'v5', reasons: ['-n']}, - {term: '死ぬ', source: '死なんかった', rule: 'v5', reasons: ['-n past']}, + {term: '死ぬ', source: '死なんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '死ぬ', source: '死なんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '死ぬ', source: '死なざる', rule: 'v5', reasons: ['-zaru']}, {term: '死ぬ', source: '死なねば', rule: 'v5', reasons: ['-neba']}, @@ -487,6 +512,11 @@ const tests = [ {term: '死ぬ', source: '死んでおる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '死ぬ', source: '死んでる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '死ぬ', source: '死んでしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '死ぬ', source: '死にますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '死ぬ', source: '死にましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '死ぬ', source: '死にますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '死ぬ', source: '死にませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -534,7 +564,7 @@ const tests = [ {term: '遊ぶ', source: '遊ばず', rule: 'v5', reasons: ['-zu']}, {term: '遊ぶ', source: '遊ばぬ', rule: 'v5', reasons: ['-nu']}, {term: '遊ぶ', source: '遊ばん', rule: 'v5', reasons: ['-n']}, - {term: '遊ぶ', source: '遊ばんかった', rule: 'v5', reasons: ['-n past']}, + {term: '遊ぶ', source: '遊ばんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '遊ぶ', source: '遊ばんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '遊ぶ', source: '遊ばざる', rule: 'v5', reasons: ['-zaru']}, {term: '遊ぶ', source: '遊ばねば', rule: 'v5', reasons: ['-neba']}, @@ -549,6 +579,11 @@ const tests = [ {term: '遊ぶ', source: '遊んでおる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '遊ぶ', source: '遊んでる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '遊ぶ', source: '遊んでしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '遊ぶ', source: '遊びますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '遊ぶ', source: '遊びましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '遊ぶ', source: '遊びますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '遊ぶ', source: '遊びませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -596,7 +631,7 @@ const tests = [ {term: '飲む', source: '飲まず', rule: 'v5', reasons: ['-zu']}, {term: '飲む', source: '飲まぬ', rule: 'v5', reasons: ['-nu']}, {term: '飲む', source: '飲まん', rule: 'v5', reasons: ['-n']}, - {term: '飲む', source: '飲まんかった', rule: 'v5', reasons: ['-n past']}, + {term: '飲む', source: '飲まんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '飲む', source: '飲まんばかり', rule: 'v5', reasons: ['-nbakari']}, {term: '飲む', source: '飲まざる', rule: 'v5', reasons: ['-zaru']}, {term: '飲む', source: '飲まねば', rule: 'v5', reasons: ['-neba']}, @@ -611,6 +646,11 @@ const tests = [ {term: '飲む', source: '飲んでおる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '飲む', source: '飲んでる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '飲む', source: '飲んでしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '飲む', source: '飲みますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '飲む', source: '飲みましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '飲む', source: '飲みますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '飲む', source: '飲みませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -658,7 +698,7 @@ const tests = [ {term: '作る', source: '作らず', rule: 'v5', reasons: ['-zu']}, {term: '作る', source: '作らぬ', rule: 'v5', reasons: ['-nu']}, {term: '作る', source: '作らん', rule: 'v5', reasons: ['-n']}, - {term: '作る', source: '作らんかった', rule: 'v5', reasons: ['-n past']}, + {term: '作る', source: '作らんかった', rule: 'v5', reasons: ['-n', '-ta']}, {term: '作る', source: '作らざる', rule: 'v5', reasons: ['-zaru']}, {term: '作る', source: '作らねば', rule: 'v5', reasons: ['-neba']}, {term: '作る', source: '作らにゃ', rule: 'v5', reasons: ['-neba', '-ya']}, @@ -673,6 +713,11 @@ const tests = [ {term: '作る', source: '作ってる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '作る', source: '作っとる', rule: 'v5', reasons: ['-te', '-teiru']}, {term: '作る', source: '作ってしまう', rule: 'v5', reasons: ['-te', '-shimau']}, + + {term: '作る', source: '作りますまい', rule: 'v5', reasons: ['-masu', '-mai']}, + {term: '作る', source: '作りましたら', rule: 'v5', reasons: ['-masu', '-tara']}, + {term: '作る', source: '作りますれば', rule: 'v5', reasons: ['-masu', '-ba']}, + {term: '作る', source: '作りませんかった', rule: 'v5', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -724,7 +769,7 @@ const tests = [ {term: '為る', source: '為ず', rule: 'vs', reasons: ['-zu']}, {term: '為る', source: '為ぬ', rule: 'vs', reasons: ['-nu']}, {term: '為る', source: '為ん', rule: 'vs', reasons: ['-n']}, - {term: '為る', source: '為んかった', rule: 'vs', reasons: ['-n past']}, + {term: '為る', source: '為んかった', rule: 'vs', reasons: ['-n', '-ta']}, {term: '為る', source: '為んばかり', rule: 'vs', reasons: ['-nbakari']}, {term: '為る', source: '為ざる', rule: 'vs', reasons: ['-zaru']}, {term: '為る', source: '為ねば', rule: 'vs', reasons: ['-neba']}, @@ -742,6 +787,11 @@ const tests = [ {term: '為る', source: '為とる', rule: 'vs', reasons: ['-te', '-teiru']}, {term: '為る', source: '為てしまう', rule: 'vs', reasons: ['-te', '-shimau']}, + {term: '為る', source: '為ますまい', rule: 'vs', reasons: ['-masu', '-mai']}, + {term: '為る', source: '為ましたら', rule: 'vs', reasons: ['-masu', '-tara']}, + {term: '為る', source: '為ますれば', rule: 'vs', reasons: ['-masu', '-ba']}, + {term: '為る', source: '為ませんかった', rule: 'vs', reasons: ['-masu', 'negative', '-ta']}, + {term: 'する', source: 'する', rule: 'vs', reasons: []}, {term: 'する', source: 'します', rule: 'vs', reasons: ['-masu']}, {term: 'する', source: 'した', rule: 'vs', reasons: ['-ta']}, @@ -789,7 +839,7 @@ const tests = [ {term: 'する', source: 'せず', rule: 'vs', reasons: ['-zu']}, {term: 'する', source: 'せぬ', rule: 'vs', reasons: ['-nu']}, {term: 'する', source: 'せん', rule: 'vs', reasons: ['-n']}, - {term: 'する', source: 'せんかった', rule: 'vs', reasons: ['-n past']}, + {term: 'する', source: 'せんかった', rule: 'vs', reasons: ['-n', '-ta']}, {term: 'する', source: 'せんばかり', rule: 'vs', reasons: ['-nbakari']}, {term: 'する', source: 'せざる', rule: 'vs', reasons: ['-zaru']}, {term: 'する', source: 'せねば', rule: 'vs', reasons: ['-neba']}, @@ -808,6 +858,11 @@ const tests = [ {term: 'する', source: 'しとる', rule: 'vs', reasons: ['-te', '-teiru']}, {term: 'する', source: 'してしまう', rule: 'vs', reasons: ['-te', '-shimau']}, + {term: 'する', source: 'しますまい', rule: 'vs', reasons: ['-masu', '-mai']}, + {term: 'する', source: 'しましたら', rule: 'vs', reasons: ['-masu', '-tara']}, + {term: 'する', source: 'しますれば', rule: 'vs', reasons: ['-masu', '-ba']}, + {term: 'する', source: 'しませんかった', rule: 'vs', reasons: ['-masu', 'negative', '-ta']}, + {term: '来る', source: '来る', rule: 'vk', reasons: []}, {term: '来る', source: '来ます', rule: 'vk', reasons: ['-masu']}, {term: '来る', source: '来た', rule: 'vk', reasons: ['-ta']}, @@ -849,7 +904,7 @@ const tests = [ {term: '来る', source: '来ず', rule: 'vk', reasons: ['-zu']}, {term: '来る', source: '来ぬ', rule: 'vk', reasons: ['-nu']}, {term: '来る', source: '来ん', rule: 'vk', reasons: ['-n']}, - {term: '来る', source: '来んかった', rule: 'vk', reasons: ['-n past']}, + {term: '来る', source: '来んかった', rule: 'vk', reasons: ['-n', '-ta']}, {term: '来る', source: '来んばかり', rule: 'vk', reasons: ['-nbakari']}, {term: '来る', source: '来ざる', rule: 'vk', reasons: ['-zaru']}, {term: '来る', source: '来ねば', rule: 'vk', reasons: ['-neba']}, @@ -867,6 +922,11 @@ const tests = [ {term: '来る', source: '来とる', rule: 'vk', reasons: ['-te', '-teiru']}, {term: '来る', source: '来てしまう', rule: 'vk', reasons: ['-te', '-shimau']}, + {term: '来る', source: '来ますまい', rule: 'vk', reasons: ['-masu', '-mai']}, + {term: '来る', source: '来ましたら', rule: 'vk', reasons: ['-masu', '-tara']}, + {term: '来る', source: '来ますれば', rule: 'vk', reasons: ['-masu', '-ba']}, + {term: '来る', source: '来ませんかった', rule: 'vk', reasons: ['-masu', 'negative', '-ta']}, + {term: '來る', source: '來る', rule: 'vk', reasons: []}, {term: '來る', source: '來ます', rule: 'vk', reasons: ['-masu']}, {term: '來る', source: '來た', rule: 'vk', reasons: ['-ta']}, @@ -908,7 +968,7 @@ const tests = [ {term: '來る', source: '來ず', rule: 'vk', reasons: ['-zu']}, {term: '來る', source: '來ぬ', rule: 'vk', reasons: ['-nu']}, {term: '來る', source: '來ん', rule: 'vk', reasons: ['-n']}, - {term: '來る', source: '來んかった', rule: 'vk', reasons: ['-n past']}, + {term: '來る', source: '來んかった', rule: 'vk', reasons: ['-n', '-ta']}, {term: '來る', source: '來んばかり', rule: 'vk', reasons: ['-nbakari']}, {term: '來る', source: '來ざる', rule: 'vk', reasons: ['-zaru']}, {term: '來る', source: '來ねば', rule: 'vk', reasons: ['-neba']}, @@ -926,6 +986,11 @@ const tests = [ {term: '來る', source: '來とる', rule: 'vk', reasons: ['-te', '-teiru']}, {term: '來る', source: '來てしまう', rule: 'vk', reasons: ['-te', '-shimau']}, + {term: '來る', source: '來ますまい', rule: 'vk', reasons: ['-masu', '-mai']}, + {term: '來る', source: '來ましたら', rule: 'vk', reasons: ['-masu', '-tara']}, + {term: '來る', source: '來ますれば', rule: 'vk', reasons: ['-masu', '-ba']}, + {term: '來る', source: '來ませんかった', rule: 'vk', reasons: ['-masu', 'negative', '-ta']}, + {term: 'くる', source: 'くる', rule: 'vk', reasons: []}, {term: 'くる', source: 'きます', rule: 'vk', reasons: ['-masu']}, {term: 'くる', source: 'きた', rule: 'vk', reasons: ['-ta']}, @@ -967,7 +1032,7 @@ const tests = [ {term: 'くる', source: 'こず', rule: 'vk', reasons: ['-zu']}, {term: 'くる', source: 'こぬ', rule: 'vk', reasons: ['-nu']}, {term: 'くる', source: 'こん', rule: 'vk', reasons: ['-n']}, - {term: 'くる', source: 'こんかった', rule: 'vk', reasons: ['-n past']}, + {term: 'くる', source: 'こんかった', rule: 'vk', reasons: ['-n', '-ta']}, {term: 'くる', source: 'こんばかり', rule: 'vk', reasons: ['-nbakari']}, {term: 'くる', source: 'こざる', rule: 'vk', reasons: ['-zaru']}, {term: 'くる', source: 'こねば', rule: 'vk', reasons: ['-neba']}, @@ -984,6 +1049,11 @@ const tests = [ {term: 'くる', source: 'きてる', rule: 'vk', reasons: ['-te', '-teiru']}, {term: 'くる', source: 'きとる', rule: 'vk', reasons: ['-te', '-teiru']}, {term: 'くる', source: 'きてしまう', rule: 'vk', reasons: ['-te', '-shimau']}, + + {term: 'くる', source: 'きますまい', rule: 'vk', reasons: ['-masu', '-mai']}, + {term: 'くる', source: 'きましたら', rule: 'vk', reasons: ['-masu', '-tara']}, + {term: 'くる', source: 'きますれば', rule: 'vk', reasons: ['-masu', '-ba']}, + {term: 'くる', source: 'きませんかった', rule: 'vk', reasons: ['-masu', 'negative', '-ta']}, ], }, { @@ -1041,7 +1111,7 @@ const tests = [ {term: '論ずる', source: '論ぜず', rule: 'vz', reasons: ['-zu']}, {term: '論ずる', source: '論ぜぬ', rule: 'vz', reasons: ['-nu']}, {term: '論ずる', source: '論ぜん', rule: 'vz', reasons: ['-n']}, - {term: '論ずる', source: '論ぜんかった', rule: 'vz', reasons: ['-n past']}, + {term: '論ずる', source: '論ぜんかった', rule: 'vz', reasons: ['-n', '-ta']}, {term: '論ずる', source: '論ぜんばかり', rule: 'vz', reasons: ['-nbakari']}, {term: '論ずる', source: '論ぜざる', rule: 'vz', reasons: ['-zaru']}, {term: '論ずる', source: '論ぜねば', rule: 'vz', reasons: ['-neba']}, @@ -1257,6 +1327,11 @@ const tests = [ {term: '食べる', source: '食べて', rule: null, reasons: ['-te', '-teiru', 'continuative']}, {term: 'なる', source: 'なりません', rule: null, reasons: ['-masu', 'potential', '-n']}, {term: '食べる', source: '食べさせられる', rule: null, reasons: ['short causative', 'potential', 'potential or passive']}, + {term: '食べる', source: '食べまさない', rule: null, reasons: ['-masu', 'negative']}, + {term: '食べる', source: '食べますな', rule: null, reasons: ['-masu', 'imperative negative']}, + {term: '食べる', source: '食べましたい', rule: null, reasons: ['-masu', '-tai']}, + {term: '済ます', source: '済ません', rule: null, reasons: ['-masu', 'negative']}, + {term: '済ます', source: '済ましょう', rule: null, reasons: ['-masu', 'volitional']}, ], }, // Kansai-ben