Pop-up dictionary browser extension for language learning. Successor to Yomichan. (PERSONAL FORK)

display inflection rule descriptions (#1000)

* load descriptions in deinflector

* description functions in deinflectors

* show descriptions in title

* use toaster

* use names without internal

* css lint

* reformat transform descriptors

* fix merge errors

* done?

* rename method

authored by

StefanVukovic99 and committed by
GitHub
7955fc85 d2fce502

+1188 -801
+3
ext/css/display.css
··· 855 855 .inflection-source-icon[data-inflection-source='both']::after { 856 856 content: '🧩📖'; 857 857 } 858 + .inflection[title] { 859 + cursor: pointer; 860 + } 858 861 859 862 860 863 /* Headwords */
+43
ext/data/templates/anki-field-templates-upgrade-v38.handlebars
··· 1 + {{<<<<<<<}} 2 + {{#*inline "conjugation"}} 3 + {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} 4 + {{~set "multiple" false~}} 5 + {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} 6 + {{~set "multiple" true~}} 7 + {{~/if~}} 8 + {{~#if (get "multiple")~}}<ul>{{/if~}} 9 + {{~#each definition.inflectionRuleChainCandidates~}} 10 + {{~#if (op ">" inflectionRules.length 0)~}} 11 + {{~#if (get "multiple")~}}<li>{{/if~}} 12 + {{~#each inflectionRules~}} 13 + {{~#if (op ">" @index 0)}} « {{/if~}} 14 + {{.}} 15 + {{~/each~}} 16 + {{~#if (get "multiple")~}}</li>{{/if~}} 17 + {{~/if~}} 18 + {{~/each~}} 19 + {{~#if (get "multiple")~}}</ul>{{/if~}} 20 + {{~/if~}} 21 + {{/inline}} 22 + {{=======}} 23 + {{#*inline "conjugation"}} 24 + {{~#if (op ">" definition.inflectionRuleChainCandidates.length 0)~}} 25 + {{~set "multiple" false~}} 26 + {{~#if (op ">" definition.inflectionRuleChainCandidates.length 1)~}} 27 + {{~set "multiple" true~}} 28 + {{~/if~}} 29 + {{~#if (get "multiple")~}}<ul>{{/if~}} 30 + {{~#each definition.inflectionRuleChainCandidates~}} 31 + {{~#if (op ">" inflectionRules.length 0)~}} 32 + {{~#if (get "multiple")~}}<li>{{/if~}} 33 + {{~#each inflectionRules~}} 34 + {{~#if (op ">" @index 0)}} « {{/if~}} 35 + {{name}} 36 + {{~/each~}} 37 + {{~#if (get "multiple")~}}</li>{{/if~}} 38 + {{~/if~}} 39 + {{~/each~}} 40 + {{~#if (get "multiple")~}}</ul>{{/if~}} 41 + {{~/if~}} 42 + {{/inline}} 43 + {{>>>>>>>}}
+1 -1
ext/data/templates/default-anki-field-templates.handlebars
··· 324 324 {{~#if (get "multiple")~}}<li>{{/if~}} 325 325 {{~#each inflectionRules~}} 326 326 {{~#if (op ">" @index 0)}} « {{/if~}} 327 - {{.}} 327 + {{name}} 328 328 {{~/each~}} 329 329 {{~#if (get "multiple")~}}</li>{{/if~}} 330 330 {{~/if~}}
+9
ext/js/data/options-util.js
··· 545 545 this._updateVersion35, 546 546 this._updateVersion36, 547 547 this._updateVersion37, 548 + this._updateVersion38, 548 549 ]; 549 550 /* eslint-enable @typescript-eslint/unbound-method */ 550 551 if (typeof targetVersion === 'number' && targetVersion < result.length) { ··· 1302 1303 */ 1303 1304 async _updateVersion37(options) { 1304 1305 await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v37.handlebars'); 1306 + } 1307 + 1308 + /** 1309 + * - Updated `conjugation` handlebars for new inflection chain format. 1310 + * @type {import('options-util').UpdateFunction} 1311 + */ 1312 + async _updateVersion38(options) { 1313 + await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v38.handlebars'); 1305 1314 } 1306 1315 1307 1316 /**
+5 -3
ext/js/display/display-generator.js
··· 401 401 } 402 402 403 403 /** 404 - * @param {string} inflection 404 + * @param {import('dictionary').InflectionRule} inflection 405 405 * @returns {DocumentFragment} 406 406 */ 407 407 _createTermInflection(inflection) { 408 + const {name, description} = inflection; 408 409 const fragment = this._templates.instantiateFragment('inflection'); 409 410 const node = this._querySelector(fragment, '.inflection'); 410 - this._setTextContent(node, inflection); 411 - node.dataset.reason = inflection; 411 + this._setTextContent(node, name); 412 + if (description) { node.title = description; } 413 + node.dataset.reason = name; 412 414 return fragment; 413 415 } 414 416
+30
ext/js/display/display.js
··· 162 162 this._contentTextScanner = null; 163 163 /** @type {?import('./display-notification.js').DisplayNotification} */ 164 164 this._tagNotification = null; 165 + /** @type {?import('./display-notification.js').DisplayNotification} */ 166 + this._inflectionNotification = null; 165 167 /** @type {HTMLElement} */ 166 168 this._footerNotificationContainer = querySelectorNotNull(document, '#content-footer'); 167 169 /** @type {OptionToggleHotkeyHandler} */ ··· 180 182 this._onDebugLogClickBind = this._onDebugLogClick.bind(this); 181 183 /** @type {(event: MouseEvent) => void} */ 182 184 this._onTagClickBind = this._onTagClick.bind(this); 185 + /** @type {(event: MouseEvent) => void} */ 186 + this._onInflectionClickBind = this._onInflectionClick.bind(this); 183 187 /** @type {(event: MouseEvent) => void} */ 184 188 this._onMenuButtonClickBind = this._onMenuButtonClick.bind(this); 185 189 /** @type {(event: import('popup-menu').MenuCloseEvent) => void} */ ··· 1026 1030 /** 1027 1031 * @param {MouseEvent} e 1028 1032 */ 1033 + _onInflectionClick(e) { 1034 + const node = /** @type {HTMLElement} */ (e.currentTarget); 1035 + this._showInflectionNotification(node); 1036 + } 1037 + 1038 + /** 1039 + * @param {MouseEvent} e 1040 + */ 1029 1041 _onMenuButtonClick(e) { 1030 1042 const node = /** @type {HTMLElement} */ (e.currentTarget); 1031 1043 ··· 1083 1095 const content = this._displayGenerator.createTagFooterNotificationDetails(parent, dictionaryEntry); 1084 1096 this._tagNotification.setContent(content); 1085 1097 this._tagNotification.open(); 1098 + } 1099 + 1100 + /** 1101 + * @param {HTMLSpanElement} inflectionNode 1102 + */ 1103 + _showInflectionNotification(inflectionNode) { 1104 + const description = inflectionNode.title; 1105 + if (!description || !(inflectionNode instanceof HTMLSpanElement)) { return; } 1106 + 1107 + if (this._inflectionNotification === null) { 1108 + this._inflectionNotification = this.createNotification(true); 1109 + } 1110 + 1111 + this._inflectionNotification.setContent(description); 1112 + this._inflectionNotification.open(); 1086 1113 } 1087 1114 1088 1115 /** ··· 1796 1823 eventListeners.addEventListener(entry, 'click', this._onEntryClickBind); 1797 1824 for (const node of entry.querySelectorAll('.headword-kanji-link')) { 1798 1825 eventListeners.addEventListener(node, 'click', this._onKanjiLookupBind); 1826 + } 1827 + for (const node of entry.querySelectorAll('.inflection[data-reason]')) { 1828 + eventListeners.addEventListener(node, 'click', this._onInflectionClickBind); 1799 1829 } 1800 1830 for (const node of entry.querySelectorAll('.tag-label')) { 1801 1831 eventListeners.addEventListener(node, 'click', this._onTagClickBind);
+7 -7
ext/js/language/de/german-transforms.js
··· 64 64 isDictionaryForm: true, 65 65 }, 66 66 }, 67 - transforms: [ 68 - { 67 + transforms: { 68 + 'nominalization': { 69 69 name: 'nominalization', 70 70 description: 'Noun formed from a verb', 71 71 rules: [ ··· 73 73 suffixInflection('lung', 'eln', [], []), 74 74 ], 75 75 }, 76 - { 76 + '-bar': { 77 77 name: '-bar', 78 78 description: '-able adjective from a verb', 79 79 rules: [ ··· 81 81 suffixInflection('bar', 'n', [], ['v']), // Lieferbar 82 82 ], 83 83 }, 84 - { 84 + 'negative': { 85 85 name: 'negative', 86 86 description: 'Negation', 87 87 rules: [ 88 88 prefixInflection('un', '', [], ['adj']), 89 89 ], 90 90 }, 91 - { 91 + 'separated prefix': { 92 92 name: 'separated prefix', 93 93 description: 'Separable prefix', 94 94 rules: [ 95 95 ...separatedPrefixInflections, 96 96 ], 97 97 }, 98 - { 98 + 'zu-infinitive': { 99 99 name: 'zu-infinitive', 100 100 description: 'zu-infinitive', 101 101 rules: [ 102 102 ...zuInfinitiveInflections, 103 103 ], 104 104 }, 105 - ], 105 + }, 106 106 };
+18 -18
ext/js/language/en/english-transforms.js
··· 148 148 isDictionaryForm: true, 149 149 }, 150 150 }, 151 - transforms: [ 152 - { 151 + transforms: { 152 + 'plural': { 153 153 name: 'plural', 154 154 description: 'Plural form of a noun', 155 155 rules: [ ··· 160 160 suffixInflection('ves', 'f', ['np'], ['ns']), 161 161 ], 162 162 }, 163 - { 163 + 'possessive': { 164 164 name: 'possessive', 165 165 description: 'Possessive form of a noun', 166 166 rules: [ ··· 168 168 suffixInflection('s\'', 's', ['n'], ['n']), 169 169 ], 170 170 }, 171 - { 171 + 'past': { 172 172 name: 'past', 173 173 description: 'Simple past tense of a verb', 174 174 rules: [ ··· 176 176 ...createPhrasalVerbInflectionsFromSuffixInflections(pastSuffixInflections), 177 177 ], 178 178 }, 179 - { 179 + 'ing': { 180 180 name: 'ing', 181 181 description: 'Present participle of a verb', 182 182 rules: [ ··· 184 184 ...createPhrasalVerbInflectionsFromSuffixInflections(ingSuffixInflections), 185 185 ], 186 186 }, 187 - { 187 + '3rd pers. sing. pres': { 188 188 name: '3rd pers. sing. pres', 189 189 description: 'Third person singular present tense of a verb', 190 190 rules: [ ··· 192 192 ...createPhrasalVerbInflectionsFromSuffixInflections(thirdPersonSgPresentSuffixInflections), 193 193 ], 194 194 }, 195 - { 195 + 'interposed object': { 196 196 name: 'interposed object', 197 197 description: 'Phrasal verb with interposed object', 198 198 rules: [ 199 199 phrasalVerbInterposedObjectRule, 200 200 ], 201 201 }, 202 - { 202 + 'archaic': { 203 203 name: 'archaic', 204 204 description: 'Archaic form of a word', 205 205 rules: [ 206 206 suffixInflection('\'d', 'ed', ['v'], ['v']), 207 207 ], 208 208 }, 209 - { 209 + 'adverb': { 210 210 name: 'adverb', 211 211 description: 'Adverb form of an adjective', 212 212 rules: [ ··· 215 215 suffixInflection('ly', 'le', ['adv'], ['adj']), // 'humbly' 216 216 ], 217 217 }, 218 - { 218 + 'comparative': { 219 219 name: 'comparative', 220 220 description: 'Comparative form of an adjective', 221 221 rules: [ ··· 225 225 ...doubledConsonantInflection('bdgmnt', 'er', ['adj'], ['adj']), 226 226 ], 227 227 }, 228 - { 228 + 'superlative': { 229 229 name: 'superlative', 230 230 description: 'Superlative form of an adjective', 231 231 rules: [ ··· 235 235 ...doubledConsonantInflection('bdgmnt', 'est', ['adj'], ['adj']), 236 236 ], 237 237 }, 238 - { 238 + 'dropped g': { 239 239 name: 'dropped g', 240 240 description: 'Dropped g in -ing form of a verb', 241 241 rules: [ 242 242 suffixInflection('in\'', 'ing', ['v'], ['v']), 243 243 ], 244 244 }, 245 - { 245 + '-y': { 246 246 name: '-y', 247 247 description: 'Adjective formed from a verb or noun', 248 248 rules: [ ··· 251 251 ...doubledConsonantInflection('glmnprst', 'y', [], ['n', 'v']), // 'baggy', 'saggy' 252 252 ], 253 253 }, 254 - { 254 + 'un-': { 255 255 name: 'un-', 256 256 description: 'Negative form of an adjective, adverb, or verb', 257 257 rules: [ 258 258 prefixInflection('un', '', ['adj', 'adv', 'v'], ['adj', 'adv', 'v']), 259 259 ], 260 260 }, 261 - { 261 + 'going-to future': { 262 262 name: 'going-to future', 263 263 description: 'Going-to future tense of a verb', 264 264 rules: [ 265 265 prefixInflection('going to ', '', ['v'], ['v']), 266 266 ], 267 267 }, 268 - { 268 + 'will future': { 269 269 name: 'will future', 270 270 description: 'Will-future tense of a verb', 271 271 rules: [ 272 272 prefixInflection('will ', '', ['v'], ['v']), 273 273 ], 274 274 }, 275 - { 275 + 'imperative negative': { 276 276 name: 'imperative negative', 277 277 description: 'Negative imperative form of a verb', 278 278 rules: [ ··· 280 280 prefixInflection('do not ', '', ['v'], ['v']), 281 281 ], 282 282 }, 283 - ], 283 + }, 284 284 };
+5 -5
ext/js/language/es/spanish-transforms.js
··· 73 73 isDictionaryForm: true, 74 74 }, 75 75 }, 76 - transforms: [ 77 - { 76 + transforms: { 77 + 'plural': { 78 78 name: 'plural', 79 79 description: 'Plural form of a noun', 80 80 rules: [ ··· 85 85 ...[...'aeiou'].map((v) => suffixInflection(`${v}nes`, `${addAccent(v)}n`, ['np'], ['ns'])), // 'canciones' -> canción 86 86 ], 87 87 }, 88 - { 88 + 'feminine adjective': { 89 89 name: 'feminine adjective', 90 90 description: 'feminine form of an adjective', 91 91 rules: [ 92 92 suffixInflection('a', 'o', ['adj'], ['adj']), 93 93 ], 94 94 }, 95 - { 95 + 'present indicative': { 96 96 name: 'present indicative', 97 97 description: 'Present indicative form of a verb', 98 98 rules: [ ··· 167 167 wholeWordInflection('han', 'haber', ['v'], ['v']), 168 168 ], 169 169 }, 170 - ], 170 + }, 171 171 };
+49 -49
ext/js/language/ja/japanese-transforms.js
··· 130 130 isDictionaryForm: false, 131 131 }, 132 132 }, 133 - transforms: [ 134 - { 133 + transforms: { 134 + '-ba': { 135 135 name: '-ba', 136 136 description: 'Conditional', 137 137 i18n: [ ··· 154 154 suffixInflection('れば', 'る', ['-ba'], ['v1', 'v5', 'vk', 'vs', 'vz']), 155 155 ], 156 156 }, 157 - { 157 + '-ya': { 158 158 name: '-ya', 159 159 description: 'Conditional (Contraction)', 160 160 i18n: [ ··· 178 178 suffixInflection('りゃ', 'れば', [], ['-ba']), 179 179 ], 180 180 }, 181 - { 181 + '-cha': { 182 182 name: '-cha', 183 183 description: 'Contraction of -teha', 184 184 i18n: [ ··· 208 208 suffixInflection('來ちゃ', '來る', ['v5'], ['vk']), 209 209 ], 210 210 }, 211 - { 211 + '-chau': { 212 212 name: '-chau', 213 213 rules: [ 214 214 suffixInflection('ちゃう', 'る', ['v5'], ['v1']), ··· 230 230 suffixInflection('來ちゃう', '來る', ['v5'], ['vk']), 231 231 ], 232 232 }, 233 - { 233 + '-chimau': { 234 234 name: '-chimau', 235 235 rules: [ 236 236 suffixInflection('ちまう', 'る', ['v5'], ['v1']), ··· 252 252 suffixInflection('來ちまう', '來る', ['v5'], ['vk']), 253 253 ], 254 254 }, 255 - { 255 + '-shimau': { 256 256 name: '-shimau', 257 257 rules: [ 258 258 suffixInflection('てしまう', 'て', ['v5'], ['-te']), 259 259 suffixInflection('でしまう', 'で', ['v5'], ['-te']), 260 260 ], 261 261 }, 262 - { 262 + '-nasai': { 263 263 name: '-nasai', 264 264 rules: [ 265 265 suffixInflection('なさい', 'る', [], ['v1']), ··· 280 280 suffixInflection('來なさい', '來る', [], ['vk']), 281 281 ], 282 282 }, 283 - { 283 + '-sou': { 284 284 name: '-sou', 285 285 rules: [ 286 286 suffixInflection('そう', 'い', [], ['adj-i']), ··· 302 302 suffixInflection('來そう', '來る', [], ['vk']), 303 303 ], 304 304 }, 305 - { 305 + '-sugiru': { 306 306 name: '-sugiru', 307 307 rules: [ 308 308 suffixInflection('すぎる', 'い', ['v1'], ['adj-i']), ··· 324 324 suffixInflection('來すぎる', '來る', ['v1'], ['vk']), 325 325 ], 326 326 }, 327 - { 327 + '-tai': { 328 328 name: '-tai', 329 329 rules: [ 330 330 suffixInflection('たい', 'る', ['adj-i'], ['v1']), ··· 345 345 suffixInflection('來たい', '來る', ['adj-i'], ['vk']), 346 346 ], 347 347 }, 348 - { 348 + '-tara': { 349 349 name: '-tara', 350 350 rules: [ 351 351 suffixInflection('かったら', 'い', [], ['adj-i']), ··· 385 385 suffixInflection('のたもうたら', 'のたまう', [], ['v5']), 386 386 ], 387 387 }, 388 - { 388 + '-tari': { 389 389 name: '-tari', 390 390 rules: [ 391 391 suffixInflection('かったり', 'い', [], ['adj-i']), ··· 425 425 suffixInflection('のたもうたり', 'のたまう', [], ['v5']), 426 426 ], 427 427 }, 428 - { 428 + '-te': { 429 429 name: '-te', 430 430 rules: [ 431 431 suffixInflection('くて', 'い', ['-te'], ['adj-i']), ··· 466 466 suffixInflection('まして', 'ます', [], ['v']), 467 467 ], 468 468 }, 469 - { 469 + '-zu': { 470 470 name: '-zu', 471 471 rules: [ 472 472 suffixInflection('ず', 'る', [], ['v1']), ··· 487 487 suffixInflection('來ず', '來る', [], ['vk']), 488 488 ], 489 489 }, 490 - { 490 + '-nu': { 491 491 name: '-nu', 492 492 rules: [ 493 493 suffixInflection('ぬ', 'る', [], ['v1']), ··· 508 508 suffixInflection('來ぬ', '來る', [], ['vk']), 509 509 ], 510 510 }, 511 - { 511 + '-n': { 512 512 name: '-n', 513 513 rules: [ 514 514 suffixInflection('ん', 'る', [], ['v1']), ··· 529 529 suffixInflection('來ん', '來る', [], ['vk']), 530 530 ], 531 531 }, 532 - { 532 + '-mu': { 533 533 name: '-mu', 534 534 rules: [ 535 535 suffixInflection('む', 'る', [], ['v1']), ··· 550 550 suffixInflection('來む', '來る', [], ['vk']), 551 551 ], 552 552 }, 553 - { 553 + '-zaru': { 554 554 name: '-zaru', 555 555 rules: [ 556 556 suffixInflection('ざる', 'る', [], ['v1']), ··· 571 571 suffixInflection('來ざる', '來る', [], ['vk']), 572 572 ], 573 573 }, 574 - { 574 + '-neba': { 575 575 name: '-neba', 576 576 rules: [ 577 577 suffixInflection('ねば', 'る', [], ['v1']), ··· 592 592 suffixInflection('來ねば', '來る', [], ['vk']), 593 593 ], 594 594 }, 595 - { 595 + 'adv': { 596 596 name: 'adv', 597 597 rules: [ 598 598 suffixInflection('く', 'い', ['adv'], ['adj-i']), 599 599 ], 600 600 }, 601 - { 601 + 'causative': { 602 602 name: 'causative', 603 603 rules: [ 604 604 suffixInflection('させる', 'る', ['v1'], ['v1']), ··· 622 622 suffixInflection('來させる', '來る', ['v1'], ['vk']), 623 623 ], 624 624 }, 625 - { 625 + 'imperative': { 626 626 name: 'imperative', 627 627 rules: [ 628 628 suffixInflection('ろ', 'る', [], ['v1']), ··· 647 647 suffixInflection('來い', '來る', [], ['vk']), 648 648 ], 649 649 }, 650 - { 650 + 'imperative negative': { 651 651 name: 'imperative negative', 652 652 rules: [ 653 653 suffixInflection('な', '', [], ['v']), 654 654 ], 655 655 }, 656 - { 656 + 'masu stem': { 657 657 name: 'masu stem', 658 658 rules: [ 659 659 suffixInflection('い', 'いる', [], ['v1d']), ··· 693 693 suffixInflection('來', '來る', [], ['vk']), 694 694 ], 695 695 }, 696 - { 696 + 'negative': { 697 697 name: 'negative', 698 698 rules: [ 699 699 suffixInflection('くない', 'い', ['adj-i'], ['adj-i']), ··· 716 716 suffixInflection('ません', 'ます', ['v'], ['v']), 717 717 ], 718 718 }, 719 - { 719 + 'noun': { 720 720 name: 'noun', 721 721 rules: [ 722 722 suffixInflection('さ', 'い', [], ['adj-i']), 723 723 ], 724 724 }, 725 - { 725 + 'passive': { 726 726 name: 'passive', 727 727 rules: [ 728 728 suffixInflection('かれる', 'く', ['v1'], ['v5']), ··· 743 743 suffixInflection('來られる', '來る', ['v1'], ['vk']), 744 744 ], 745 745 }, 746 - { 746 + 'past': { 747 747 name: 'past', 748 748 rules: [ 749 749 suffixInflection('かった', 'い', ['past'], ['adj-i']), ··· 785 785 suffixInflection('ませんでした', 'ません', ['past'], ['v']), 786 786 ], 787 787 }, 788 - { 788 + 'polite': { 789 789 name: 'polite', 790 790 rules: [ 791 791 suffixInflection('ます', 'る', ['v1'], ['v1']), ··· 807 807 suffixInflection('くあります', 'い', ['v'], ['adj-i']), 808 808 ], 809 809 }, 810 - { 810 + 'potential': { 811 811 name: 'potential', 812 812 rules: [ 813 813 suffixInflection('れる', 'る', ['v1'], ['v1', 'v5']), ··· 826 826 suffixInflection('來れる', '來る', ['v1'], ['vk']), 827 827 ], 828 828 }, 829 - { 829 + 'potential or passive': { 830 830 name: 'potential or passive', 831 831 rules: [ 832 832 suffixInflection('られる', 'る', ['v1'], ['v1']), ··· 839 839 suffixInflection('來られる', '來る', ['v1'], ['vk']), 840 840 ], 841 841 }, 842 - { 842 + 'volitional': { 843 843 name: 'volitional', 844 844 rules: [ 845 845 suffixInflection('よう', 'る', [], ['v1']), ··· 861 861 suffixInflection('ましょう', 'ます', [], ['v']), 862 862 ], 863 863 }, 864 - { 864 + 'causative passive': { 865 865 name: 'causative passive', 866 866 rules: [ 867 867 suffixInflection('かされる', 'く', ['v1'], ['v5']), ··· 874 874 suffixInflection('わされる', 'う', ['v1'], ['v5']), 875 875 ], 876 876 }, 877 - { 877 + '-toku': { 878 878 name: '-toku', 879 879 rules: [ 880 880 suffixInflection('とく', 'る', ['v5'], ['v1']), ··· 895 895 suffixInflection('來とく', '來る', ['v5'], ['vk']), 896 896 ], 897 897 }, 898 - { 898 + 'progressive or perfect': { 899 899 name: 'progressive or perfect', 900 900 rules: [ 901 901 suffixInflection('ている', 'て', ['v1'], ['-te']), ··· 908 908 suffixInflection('ないでいる', 'ない', ['v1'], ['adj-i']), 909 909 ], 910 910 }, 911 - { 911 + '-ki': { 912 912 name: '-ki', 913 913 rules: [ 914 914 suffixInflection('き', 'い', [], ['adj-i']), 915 915 ], 916 916 }, 917 - { 917 + '-ge': { 918 918 name: '-ge', 919 919 rules: [ 920 920 suffixInflection('げ', 'い', [], ['adj-i']), 921 921 suffixInflection('気', 'い', [], ['adj-i']), 922 922 ], 923 923 }, 924 - { 924 + '-garu': { 925 925 name: '-garu', 926 926 rules: [ 927 927 suffixInflection('がる', 'い', ['v5'], ['adj-i']), 928 928 ], 929 929 }, 930 - { 930 + '-e': { 931 931 name: '-e', 932 932 rules: [ 933 933 suffixInflection('ねえ', 'ない', [], ['adj-i']), ··· 974 974 suffixInflection('てぇ', 'たい', [], ['adj-i']), 975 975 ], 976 976 }, 977 - { 977 + 'slang': { 978 978 name: 'slang', 979 979 rules: [ 980 980 suffixInflection('てぇてぇ', 'とうとい', [], ['adj-i']), ··· 989 989 suffixInflection('おやさい', 'おやすみ', [], []), 990 990 ], 991 991 }, 992 - { 992 + 'kansai-ben negative': { 993 993 name: 'kansai-ben', 994 994 description: 'Negative form of kansai-ben verbs', 995 995 rules: [ ··· 1001 1001 suffixInflection('うてへん', 'ってない', [], ['adj-i']), 1002 1002 ], 1003 1003 }, 1004 - { 1004 + 'kansai-ben -te': { 1005 1005 name: 'kansai-ben', 1006 1006 description: '-te form of kansai-ben verbs', 1007 1007 rules: [ ··· 1022 1022 suffixInflection('ゆうて', 'いって', ['-te'], ['-te']), 1023 1023 ], 1024 1024 }, 1025 - { 1025 + 'kansai-ben past': { 1026 1026 name: 'kansai-ben', 1027 1027 description: 'past form of kansai-ben terms', 1028 1028 rules: [ ··· 1043 1043 suffixInflection('ゆうた', 'いった', ['past'], ['past']), 1044 1044 ], 1045 1045 }, 1046 - { 1046 + 'kansai-ben -tara': { 1047 1047 name: 'kansai-ben', 1048 1048 description: '-tara form of kansai-ben terms', 1049 1049 rules: [ ··· 1064 1064 suffixInflection('ゆうたら', 'いったら', [], []), 1065 1065 ], 1066 1066 }, 1067 - { 1067 + 'kansai-ben -ku': { 1068 1068 name: 'kansai-ben', 1069 1069 description: '-ku stem of kansai-ben adjectives', 1070 1070 rules: [ ··· 1081 1081 suffixInflection('しゅう', 'しく', [], ['adv']), 1082 1082 ], 1083 1083 }, 1084 - { 1084 + 'kansai-ben adjective -te': { 1085 1085 name: 'kansai-ben', 1086 1086 description: '-te form of kansai-ben adjectives', 1087 1087 rules: [ ··· 1098 1098 suffixInflection('しゅうて', 'しくて', ['-te'], ['-te']), 1099 1099 ], 1100 1100 }, 1101 - { 1101 + 'kansai-ben adjective negative': { 1102 1102 name: 'kansai-ben', 1103 1103 description: 'Negative form of kansai-ben adjectives', 1104 1104 rules: [ ··· 1115 1115 suffixInflection('しゅうない', 'しくない', ['adj-i'], ['adj-i']), 1116 1116 ], 1117 1117 }, 1118 - ], 1118 + }, 1119 1119 };
+461 -461
ext/js/language/ko/korean-transforms.js
··· 100 100 isDictionaryForm: false, 101 101 }, 102 102 }, 103 - transforms: [ 104 - { 103 + transforms: { 104 + '어간': { 105 105 name: '어간', 106 106 description: 'Stem', 107 107 rules: [ ··· 140 140 suffixInflection('ㅡ', 'ㅡㄷㅏ', [], ['v', 'adj']), 141 141 ], 142 142 }, 143 - { 143 + '-거나': { 144 144 name: '-거나', 145 145 rules: [ 146 146 suffixInflection('ㄱㅓㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 147 147 suffixInflection('ㄱㅓㄴㅏ', '', [], ['p', 'f', 'euob', 'eusi']), 148 148 ], 149 149 }, 150 - { 150 + '-거늘': { 151 151 name: '-거늘', 152 152 rules: [ 153 153 suffixInflection('ㄱㅓㄴㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 154 154 suffixInflection('ㄱㅓㄴㅡㄹ', '', [], ['p', 'f', 'euob', 'eusi']), 155 155 ], 156 156 }, 157 - { 157 + '-거니': { 158 158 name: '-거니', 159 159 rules: [ 160 160 suffixInflection('ㄱㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 161 161 suffixInflection('ㄱㅓㄴㅣ', '', [], ['p', 'f', 'euob', 'eusi']), 162 162 ], 163 163 }, 164 - { 164 + '-거니와': { 165 165 name: '-거니와', 166 166 rules: [ 167 167 suffixInflection('ㄱㅓㄴㅣㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 168 168 suffixInflection('ㄱㅓㄴㅣㅇㅗㅏ', '', [], ['p', 'f', 'eusi']), 169 169 ], 170 170 }, 171 - { 171 + '-거던': { 172 172 name: '-거던', 173 173 rules: [ 174 174 suffixInflection('ㄱㅓㄷㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 175 175 suffixInflection('ㄱㅓㄷㅓㄴ', '', [], ['p', 'f', 'eusi']), 176 176 ], 177 177 }, 178 - { 178 + '-거드면': { 179 179 name: '-거드면', 180 180 rules: [ 181 181 suffixInflection('ㄱㅓㄷㅡㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 182 182 suffixInflection('ㄱㅓㄷㅡㅁㅕㄴ', '', [], ['p', 'f', 'eusi']), 183 183 ], 184 184 }, 185 - { 185 + '-거든': { 186 186 name: '-거든', 187 187 rules: [ 188 188 suffixInflection('ㄱㅓㄷㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 189 189 suffixInflection('ㄱㅓㄷㅡㄴ', '', [], ['p', 'f', 'eusi']), 190 190 ], 191 191 }, 192 - { 192 + '-거들랑': { 193 193 name: '-거들랑', 194 194 rules: [ 195 195 suffixInflection('ㄱㅓㄷㅡㄹㄹㅏㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 196 196 suffixInflection('ㄱㅓㄷㅡㄹㄹㅏㅇ', '', [], ['p', 'f', 'eusi']), 197 197 ], 198 198 }, 199 - { 199 + '-거라': { 200 200 name: '-거라', 201 201 rules: [ 202 202 suffixInflection('ㄱㅓㄹㅏ', 'ㄷㅏ', [], ['v']), 203 203 ], 204 204 }, 205 - { 205 + '-건': { 206 206 name: '-건', 207 207 rules: [ 208 208 suffixInflection('ㄱㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 209 209 suffixInflection('ㄱㅓㄴ', '', [], ['p', 'f', 'euob', 'eusi']), 210 210 ], 211 211 }, 212 - { 212 + '-건대': { 213 213 name: '-건대', 214 214 rules: [ 215 215 suffixInflection('ㄱㅓㄴㄷㅐ', 'ㄷㅏ', [], ['v']), 216 216 suffixInflection('ㄱㅓㄴㄷㅐ', '', [], ['p', 'eusi', 'jaob']), 217 217 ], 218 218 }, 219 - { 219 + '-건마는': { 220 220 name: '-건마는', 221 221 rules: [ 222 222 suffixInflection('ㄱㅓㄴㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 223 223 suffixInflection('ㄱㅓㄴㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']), 224 224 ], 225 225 }, 226 - { 226 + '-건만': { 227 227 name: '-건만', 228 228 rules: [ 229 229 suffixInflection('ㄱㅓㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 230 230 suffixInflection('ㄱㅓㄴㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 231 231 ], 232 232 }, 233 - { 233 + '-걸랑': { 234 234 name: '-걸랑', 235 235 rules: [ 236 236 suffixInflection('ㄱㅓㄹㄹㅏㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 237 237 suffixInflection('ㄱㅓㄹㄹㅏㅇ', '', [], ['p', 'f', 'eusi']), 238 238 ], 239 239 }, 240 - { 240 + '-것다': { 241 241 name: '-것다', 242 242 rules: [ 243 243 suffixInflection('ㄱㅓㅅㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 244 244 suffixInflection('ㄱㅓㅅㄷㅏ', '', [], ['p', 'eusi']), 245 245 ], 246 246 }, 247 - { 247 + '-것마는': { 248 248 name: '-것마는', 249 249 rules: [ 250 250 suffixInflection('ㄱㅓㅅㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 251 251 suffixInflection('ㄱㅓㅅㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']), 252 252 ], 253 253 }, 254 - { 254 + '-게': { 255 255 name: '-게', 256 256 rules: [ 257 257 suffixInflection('ㄱㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 258 258 suffixInflection('ㄱㅔ', '', [], ['p', 'eusi']), 259 259 ], 260 260 }, 261 - { 261 + '-게끔': { 262 262 name: '-게끔', 263 263 rules: [ 264 264 suffixInflection('ㄱㅔㄲㅡㅁ', 'ㄷㅏ', [], ['v', 'adj']), 265 265 suffixInflection('ㄱㅔㄲㅡㅁ', '', [], ['eusi']), 266 266 ], 267 267 }, 268 - { 268 + '-게나': { 269 269 name: '-게나', 270 270 rules: [ 271 271 suffixInflection('ㄱㅔㄴㅏ', 'ㄷㅏ', [], ['v']), 272 272 suffixInflection('ㄱㅔㄴㅏ', '', [], ['eusi']), 273 273 ], 274 274 }, 275 - { 275 + '-게시리': { 276 276 name: '-게시리', 277 277 rules: [ 278 278 suffixInflection('ㄱㅔㅅㅣㄹㅣ', 'ㄷㅏ', [], ['v', 'adj']), 279 279 suffixInflection('ㄱㅔㅅㅣㄹㅣ', '', [], ['eusi']), 280 280 ], 281 281 }, 282 - { 282 + '-겠': { 283 283 name: '-겠', 284 284 rules: [ 285 285 suffixInflection('ㄱㅔㅆ', 'ㄷㅏ', ['f'], ['v', 'adj', 'ida']), 286 286 suffixInflection('ㄱㅔㅆ', '', ['f'], ['p', 'eusi']), 287 287 ], 288 288 }, 289 - { 289 + '-고': { 290 290 name: '-고', 291 291 rules: [ 292 292 suffixInflection('ㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 293 293 suffixInflection('ㄱㅗ', '', [], ['p', 'f', 'eusi', 'saob', 'euob', 'euo', 'sab', 'jaob', 'jab']), 294 294 ], 295 295 }, 296 - { 296 + '-고는 하다': { 297 297 name: '-고는 하다', 298 298 rules: [ 299 299 suffixInflection('ㄱㅗㄴㅡㄴ ㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v']), 300 300 suffixInflection('ㄱㅗㄴㅡㄴ ㅎㅏㄷㅏ', '', ['v'], ['eusi']), 301 301 ], 302 302 }, 303 - { 303 + '-곤 하다': { 304 304 name: '-곤 하다', 305 305 rules: [ 306 306 suffixInflection('ㄱㅗㄴ ㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v']), 307 307 suffixInflection('ㄱㅗㄴ ㅎㅏㄷㅏ', '', ['v'], ['eusi']), 308 308 ], 309 309 }, 310 - { 310 + '-고는': { 311 311 name: '-고는', 312 312 rules: [ 313 313 suffixInflection('ㄱㅗㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj']), 314 314 suffixInflection('ㄱㅗㄴㅡㄴ', '', [], ['eusi']), 315 315 ], 316 316 }, 317 - { 317 + '-곤': { 318 318 name: '-곤', 319 319 rules: [ 320 320 suffixInflection('ㄱㅗㄴ', 'ㄷㅏ', [], ['v', 'adj']), 321 321 suffixInflection('ㄱㅗㄴ', '', [], ['eusi']), 322 322 ], 323 323 }, 324 - { 324 + '-고도': { 325 325 name: '-고도', 326 326 rules: [ 327 327 suffixInflection('ㄱㅗㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 328 328 suffixInflection('ㄱㅗㄷㅗ', '', [], ['eusi']), 329 329 ], 330 330 }, 331 - { 331 + '-고말고': { 332 332 name: '-고말고', 333 333 rules: [ 334 334 suffixInflection('ㄱㅗㅁㅏㄹㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 335 335 suffixInflection('ㄱㅗㅁㅏㄹㄱㅗ', '', [], ['p', 'eusi']), 336 336 ], 337 337 }, 338 - { 338 + '-고서': { 339 339 name: '-고서', 340 340 rules: [ 341 341 suffixInflection('ㄱㅗㅅㅓ', 'ㄷㅏ', [], ['v']), ··· 343 343 suffixInflection('ㅇㅏㄴㅣㄱㅗㅅㅓ', 'ㅇㅏㄴㅣㄷㅏ', [], ['adj']), 344 344 ], 345 345 }, 346 - { 346 + '-고야': { 347 347 name: '-고야', 348 348 rules: [ 349 349 suffixInflection('ㄱㅗㅇㅑ', 'ㄷㅏ', [], ['v']), 350 350 suffixInflection('ㄱㅗㅇㅑ', '', [], ['eusi']), 351 351 ], 352 352 }, 353 - { 353 + '-고자': { 354 354 name: '-고자', 355 355 rules: [ 356 356 suffixInflection('ㄱㅗㅈㅏ', 'ㄷㅏ', [], ['v']), ··· 359 359 suffixInflection('ㅇㅓㅂㅅㄱㅗㅈㅏ', '없다', [], []), 360 360 ], 361 361 }, 362 - { 362 + '-고저': { 363 363 name: '-고저', 364 364 rules: [ 365 365 suffixInflection('ㄱㅗㅈㅓ', 'ㄷㅏ', [], ['v']), ··· 368 368 suffixInflection('ㅇㅓㅂㅅㄱㅗㅈㅓ', '없다', [], []), 369 369 ], 370 370 }, 371 - { 371 + '-관데': { 372 372 name: '-관데', 373 373 rules: [ 374 374 suffixInflection('ㄱㅗㅏㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 375 375 suffixInflection('ㄱㅗㅏㄴㄷㅔ', '', [], ['p', 'eusi']), 376 376 ], 377 377 }, 378 - { 378 + '-구나': { 379 379 name: '-구나', 380 380 rules: [ 381 381 suffixInflection('ㄱㅜㄴㅏ', 'ㄷㅏ', [], ['adj', 'ida']), 382 382 suffixInflection('ㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']), 383 383 ], 384 384 }, 385 - { 385 + '-구려': { 386 386 name: '-구려', 387 387 rules: [ 388 388 suffixInflection('ㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 389 389 suffixInflection('ㄱㅜㄹㅕ', '', [], ['p', 'f', 'eusi']), 390 390 ], 391 391 }, 392 - { 392 + '-구료': { 393 393 name: '-구료', 394 394 rules: [ 395 395 suffixInflection('ㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 396 396 suffixInflection('ㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']), 397 397 ], 398 398 }, 399 - { 399 + '-구만': { 400 400 name: '-구만', 401 401 rules: [ 402 402 suffixInflection('ㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 403 403 suffixInflection('ㄱㅜㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 404 404 ], 405 405 }, 406 - { 406 + '-구먼': { 407 407 name: '-구먼', 408 408 rules: [ 409 409 suffixInflection('ㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 410 410 suffixInflection('ㄱㅜㅁㅓㄴ', '', [], ['p', 'f', 'eusi']), 411 411 ], 412 412 }, 413 - { 413 + '-구면': { 414 414 name: '-구면', 415 415 rules: [ 416 416 suffixInflection('ㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 417 417 suffixInflection('ㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']), 418 418 ], 419 419 }, 420 - { 420 + '-군': { 421 421 name: '-군', 422 422 rules: [ 423 423 suffixInflection('ㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 424 424 suffixInflection('ㄱㅜㄴ', '', [], ['p', 'f', 'eusi']), 425 425 ], 426 426 }, 427 - { 427 + '-기': { 428 428 name: '-기', 429 429 rules: [ 430 430 suffixInflection('ㄱㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 431 431 suffixInflection('ㄱㅣ', '', [], ['p', 'f', 'eusi']), 432 432 ], 433 433 }, 434 - { 434 + '-기로': { 435 435 name: '-기로', 436 436 rules: [ 437 437 suffixInflection('ㄱㅣㄹㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 438 438 ], 439 439 }, 440 - { 440 + '-기로니': { 441 441 name: '-기로니', 442 442 rules: [ 443 443 suffixInflection('ㄱㅣㄹㅗㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 444 444 ], 445 445 }, 446 - { 446 + '-기로서': { 447 447 name: '-기로서', 448 448 rules: [ 449 449 suffixInflection('ㄱㅣㄹㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 450 450 suffixInflection('ㄱㅣㄹㅗㅅㅓ', '', [], ['p']), 451 451 ], 452 452 }, 453 - { 453 + '-기로서니': { 454 454 name: '-기로서니', 455 455 rules: [ 456 456 suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 457 457 suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㅣ', '', [], ['p']), 458 458 ], 459 459 }, 460 - { 460 + '-기로선들': { 461 461 name: '-기로선들', 462 462 rules: [ 463 463 suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㄷㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 464 464 suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㄷㅡㄹ', '', [], ['p']), 465 465 ], 466 466 }, 467 - { 467 + '-기에': { 468 468 name: '-기에', 469 469 rules: [ 470 470 suffixInflection('ㄱㅣㅇㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 471 471 suffixInflection('ㄱㅣㅇㅔ', '', [], ['p', 'f', 'eusi']), 472 472 ], 473 473 }, 474 - { 474 + '-길래': { 475 475 name: '-길래', 476 476 rules: [ 477 477 suffixInflection('ㄱㅣㄹㄹㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 478 478 suffixInflection('ㄱㅣㄹㄹㅐ', '', [], ['p', 'eusi']), 479 479 ], 480 480 }, 481 - { 481 + '-(으)ㄹ': { 482 482 name: '-(으)ㄹ', 483 483 rules: [ 484 484 suffixInflection('ㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 492 492 suffixInflection('ㅇㅡㄹ', '', [], ['p']), 493 493 ], 494 494 }, 495 - { 495 + '-(으)ㄹ거': { 496 496 name: '-(으)ㄹ거나', 497 497 rules: [ 498 498 suffixInflection('ㄹㄱㅓㄴㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 506 506 suffixInflection('ㅇㅡㄹㄱㅓㄴㅏ', '', [], ['p', 'f']), 507 507 ], 508 508 }, 509 - { 509 + '-(으)ㄹ걸': { 510 510 name: '-(으)ㄹ걸', 511 511 rules: [ 512 512 suffixInflection('ㄹㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 520 520 suffixInflection('ㅇㅡㄹㄱㅓㄹ', '', [], ['p']), 521 521 ], 522 522 }, 523 - { 523 + '-(으)ㄹ게': { 524 524 name: '-(으)ㄹ게', 525 525 rules: [ 526 526 suffixInflection('ㄹㄱㅔ', 'ㄷㅏ', [], ['v']), ··· 531 531 suffixInflection('ㄹㅇㅡㄹㄱㅔ', 'ㄷㄷㅏ', [], ['v']), 532 532 ], 533 533 }, 534 - { 534 + '-(으)ㄹ 거야': { 535 535 name: '-(으)ㄹ 거야', 536 536 rules: [ 537 537 suffixInflection('ㄹ ㄱㅓㅇㅑ', 'ㄷㅏ', [], ['v', 'adj']), ··· 543 543 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅇㅑ', 'ㄷㄷㅏ', [], ['v', 'adj']), 544 544 ], 545 545 }, 546 - { 546 + '-(으)ㄹ 거예요': { 547 547 name: '-(으)ㄹ 거예요', 548 548 rules: [ 549 549 suffixInflection('ㄹ ㄱㅓㅇㅖㅇㅛ', 'ㄷㅏ', [], ['v', 'adj']), ··· 555 555 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅇㅖㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']), 556 556 ], 557 557 }, 558 - { 558 + '-(으)ㄹ 것이다': { 559 559 name: '-(으)ㄹ 것이다', 560 560 rules: [ 561 561 suffixInflection('ㄹ ㄱㅓㅅㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 567 567 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅅㅇㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']), 568 568 ], 569 569 }, 570 - { 570 + '-(으)ㄹ 것입니다': { 571 571 name: '-(으)ㄹ 것입니다', 572 572 rules: [ 573 573 suffixInflection('ㄹ ㄱㅓㅅㅇㅣㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 579 579 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅅㅇㅣㅂㄴㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']), 580 580 ], 581 581 }, 582 - { 582 + '-(으)ㄹ 거다': { 583 583 name: '-(으)ㄹ 거다', 584 584 rules: [ 585 585 suffixInflection('ㄹ ㄱㅓㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 591 591 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']), 592 592 ], 593 593 }, 594 - { 594 + '-(으)ㄹ 겁니다': { 595 595 name: '-(으)ㄹ 겁니다', 596 596 rules: [ 597 597 suffixInflection('ㄹ ㄱㅓㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 603 603 suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅂㄴㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']), 604 604 ], 605 605 }, 606 - { 606 + '-(으)ㄹ께': { 607 607 name: '-(으)ㄹ께', 608 608 rules: [ 609 609 suffixInflection('ㄹㄲㅔ', 'ㄷㅏ', [], ['v', 'adj']), ··· 615 615 suffixInflection('ㄹㅇㅡㄹㄲㅔ', 'ㄷㄷㅏ', [], ['v', 'adj']), 616 616 ], 617 617 }, 618 - { 618 + '-(으)나': { 619 619 name: '-(으)나', 620 620 rules: [ 621 621 suffixInflection('ㄴㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 629 629 suffixInflection('ㄴㅏ', '', [], ['p', 'f', 'eusi', 'sao']), 630 630 ], 631 631 }, 632 - { 632 + '-나니': { 633 633 name: '-나니', 634 634 rules: [ 635 635 suffixInflection('ㄴㅏㄴㅣ', 'ㄷㅏ', [], ['v']), 636 636 suffixInflection('ㄴㅏㄴㅣ', '', [], ['p', 'f', 'eusi', 'sab', 'euob']), 637 637 ], 638 638 }, 639 - { 639 + '-(으)나마': { 640 640 name: '-(으)나마', 641 641 rules: [ 642 642 suffixInflection('ㄴㅏㅁㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 650 650 suffixInflection('ㅇㅡㄴㅏㅁㅏ', '', [], ['p', 'f']), 651 651 ], 652 652 }, 653 - { 653 + '-나이까': { 654 654 name: '-나이까', 655 655 rules: [ 656 656 suffixInflection('ㄴㅏㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 657 657 suffixInflection('ㄴㅏㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi', 'saob', 'euob']), 658 658 ], 659 659 }, 660 - { 660 + '-나이다': { 661 661 name: '-나이다', 662 662 rules: [ 663 663 suffixInflection('ㄴㅏㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 664 664 suffixInflection('ㄴㅏㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi', 'saob', 'jaob', 'jab', 'euob']), 665 665 ], 666 666 }, 667 - { 667 + '-남': { 668 668 name: '-남', 669 669 rules: [ 670 670 suffixInflection('ㄴㅏㅁ', 'ㄷㅏ', [], ['v']), 671 671 suffixInflection('ㄴㅏㅁ', '', [], ['p', 'f', 'eusi']), 672 672 ], 673 673 }, 674 - { 674 + '-(으)냐': { 675 675 name: '-(으)냐', 676 676 rules: [ 677 677 suffixInflection('ㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 685 685 suffixInflection('ㅇㅡㄴㅑ', '', [], ['p', 'f', 'eusi']), 686 686 ], 687 687 }, 688 - { 688 + '-(으)냐고': { 689 689 name: '-(으)냐고', 690 690 rules: [ 691 691 suffixInflection('ㄴㅑㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 699 699 suffixInflection('ㅇㅡㄴㅑㄱㅗ', '', [], ['p', 'f', 'eusi']), 700 700 ], 701 701 }, 702 - { 702 + '-너라': { 703 703 name: '-너라', 704 704 rules: [ 705 705 suffixInflection('ㄴㅓㄹㅏ', 'ㄷㅏ', [], ['v']), 706 706 ], 707 707 }, 708 - { 708 + '-네': { 709 709 name: '-네', 710 710 rules: [ 711 711 suffixInflection('ㄴㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 713 713 suffixInflection('ㄴㅔ', '', [], ['p', 'f', 'eusi']), 714 714 ], 715 715 }, 716 - { 716 + '-노니': { 717 717 name: '-노니', 718 718 rules: [ 719 719 suffixInflection('ㄴㅗㄴㅣ', 'ㄷㅏ', [], ['v']), 720 720 suffixInflection('ㄴㅗㄴㅣ', '', [], ['p', 'f', 'eusi', 'sab', 'euob']), 721 721 ], 722 722 }, 723 - { 723 + '-노라': { 724 724 name: '-노라', 725 725 rules: [ 726 726 suffixInflection('ㄴㅗㄹㅏ', 'ㄷㅏ', [], ['v']), 727 727 suffixInflection('ㄴㅗㄹㅏ', '', [], ['p', 'f']), 728 728 ], 729 729 }, 730 - { 730 + '-노라고': { 731 731 name: '-노라고', 732 732 rules: [ 733 733 suffixInflection('ㄴㅗㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v']), 734 734 ], 735 735 }, 736 - { 736 + '-노라니': { 737 737 name: '-노라니', 738 738 rules: [ 739 739 suffixInflection('ㄴㅗㄹㅏㄴㅣ', 'ㄷㅏ', [], ['v', 'adj']), 740 740 ], 741 741 }, 742 - { 742 + '-노라니까': { 743 743 name: '-노라니까', 744 744 rules: [ 745 745 suffixInflection('ㄴㅗㄹㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 746 746 ], 747 747 }, 748 - { 748 + '-노라면': { 749 749 name: '-노라면', 750 750 rules: [ 751 751 suffixInflection('ㄴㅗㄹㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']), ··· 754 754 suffixInflection('ㅇㅓㅂㅅㄴㅗㄹㅏㅁㅕㄴ', '없다', [], []), 755 755 ], 756 756 }, 757 - { 757 + '-(으)뇨': { 758 758 name: '-(으)뇨', 759 759 rules: [ 760 760 suffixInflection('ㄴㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 767 767 suffixInflection('ㄴㅛ', '', [], ['eusi']), 768 768 ], 769 769 }, 770 - { 770 + '-누': { 771 771 name: '-누', 772 772 rules: [ 773 773 suffixInflection('ㄴㅜ', 'ㄷㅏ', [], ['v', 'adj']), 774 774 suffixInflection('ㄴㅜ', '', [], ['p', 'f']), 775 775 ], 776 776 }, 777 - { 777 + '-누나': { 778 778 name: '-누나', 779 779 rules: [ 780 780 suffixInflection('ㄴㅜㄴㅏ', 'ㄷㅏ', [], ['v']), 781 781 suffixInflection('ㄴㅜㄴㅏ', '', [], ['eusi']), 782 782 ], 783 783 }, 784 - { 784 + '-누만': { 785 785 name: '-누만', 786 786 rules: [ 787 787 suffixInflection('ㄴㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v']), 788 788 suffixInflection('ㄴㅜㅁㅏㄴ', '', [], ['eusi']), 789 789 ], 790 790 }, 791 - { 791 + '-누먼': { 792 792 name: '-누먼', 793 793 rules: [ 794 794 suffixInflection('ㄴㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v']), 795 795 suffixInflection('ㄴㅜㅁㅓㄴ', '', [], ['eusi']), 796 796 ], 797 797 }, 798 - { 798 + '-느냐': { 799 799 name: '-느냐', 800 800 rules: [ 801 801 suffixInflection('ㄴㅡㄴㅑ', 'ㄷㅏ', [], ['v', 'adj']), 802 802 suffixInflection('ㄴㅡㄴㅑ', '', [], ['p', 'f', 'eusi']), 803 803 ], 804 804 }, 805 - { 805 + '-느냐고': { 806 806 name: '-느냐고', 807 807 rules: [ 808 808 suffixInflection('ㄴㅡㄴㅑㄱㅗ', 'ㄷㅏ', [], ['v', 'adj']), 809 809 suffixInflection('ㄴㅡㄴㅑㄱㅗ', '', [], ['p', 'f', 'eusi']), 810 810 ], 811 811 }, 812 - { 812 + '-느뇨': { 813 813 name: '-느뇨', 814 814 rules: [ 815 815 suffixInflection('ㄴㅡㄴㅛ', 'ㄷㅏ', [], ['v', 'adj']), 816 816 suffixInflection('ㄴㅡㄴㅛ', '', [], ['p', 'f', 'eusi']), 817 817 ], 818 818 }, 819 - { 819 + '-느니': { 820 820 name: '-느니', 821 821 rules: [ 822 822 suffixInflection('ㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'adj']), 823 823 suffixInflection('ㄴㅡㄴㅣ', '', [], ['p', 'f', 'eusi']), 824 824 ], 825 825 }, 826 - { 826 + '-느니만': { 827 827 name: '-느니만', 828 828 rules: [ 829 829 suffixInflection('ㄴㅡㄴㅣㅁㅏㄴ ㅁㅗㅅㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v', 'adj']), 830 830 ], 831 831 }, 832 - { 832 + '-느라': { 833 833 name: '-느라', 834 834 rules: [ 835 835 suffixInflection('ㄴㅡㄹㅏ', 'ㄷㅏ', [], ['v']), 836 836 suffixInflection('ㄴㅡㄹㅏ', '', [], ['eusi']), 837 837 ], 838 838 }, 839 - { 839 + '-느라고': { 840 840 name: '-느라고', 841 841 rules: [ 842 842 suffixInflection('ㄴㅡㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v']), 843 843 suffixInflection('ㄴㅡㄹㅏㄱㅗ', '', [], ['eusi']), 844 844 ], 845 845 }, 846 - { 846 + '-는': { 847 847 name: '-는', 848 848 rules: [ 849 849 suffixInflection('ㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 852 852 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴ', '없다', [], ['adj']), 853 853 ], 854 854 }, 855 - { 855 + '-(으)ㄴ': { 856 856 name: '-(으)ㄴ', 857 857 rules: [ 858 858 suffixInflection('ㄴ', 'ㄷㅏ', [], ['v', 'adj']), ··· 861 861 suffixInflection('ㄴ', '', [], ['eusi', 'f']), 862 862 ], 863 863 }, 864 - { 864 + '-(으/느)ㄴ가': { 865 865 name: '-(으/느)ㄴ가', 866 866 rules: [ 867 867 suffixInflection('ㄴㄱㅏ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 874 874 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅏ', '없다', [], []), 875 875 ], 876 876 }, 877 - { 877 + '-(으/느)ㄴ감': { 878 878 name: '-(으/느)ㄴ감', 879 879 rules: [ 880 880 suffixInflection('ㄴㄱㅏㅁ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 887 887 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅏㅁ', '없다', [], []), 888 888 ], 889 889 }, 890 - { 890 + '-(으/느)ㄴ걸': { 891 891 name: '-(으/느)ㄴ걸', 892 892 rules: [ 893 893 suffixInflection('ㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 900 900 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅓㄹ', '없다', [], []), 901 901 ], 902 902 }, 903 - { 903 + '-(으/느)ㄴ고': { 904 904 name: '-(으/느)ㄴ고', 905 905 rules: [ 906 906 suffixInflection('ㄴㄱㅗ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 913 913 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅗ', '없다', [], []), 914 914 ], 915 915 }, 916 - { 916 + '-는구나': { 917 917 name: '-는구나', 918 918 rules: [ 919 919 suffixInflection('ㄴㅡㄴㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v']), 920 920 suffixInflection('ㄴㅡㄴㄱㅜㄴㅏ', '', [], ['eusi']), 921 921 ], 922 922 }, 923 - { 923 + '-는구려': { 924 924 name: '-는구려', 925 925 rules: [ 926 926 suffixInflection('ㄴㅡㄴㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v']), 927 927 suffixInflection('ㄴㅡㄴㄱㅜㄹㅕ', '', [], ['eusi']), 928 928 ], 929 929 }, 930 - { 930 + '-는구료': { 931 931 name: '-는구료', 932 932 rules: [ 933 933 suffixInflection('ㄴㅡㄴㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v']), 934 934 suffixInflection('ㄴㅡㄴㄱㅜㄹㅛ', '', [], ['eusi']), 935 935 ], 936 936 }, 937 - { 937 + '-는구만': { 938 938 name: '-는구만', 939 939 rules: [ 940 940 suffixInflection('ㄴㅡㄴㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v']), 941 941 suffixInflection('ㄴㅡㄴㄱㅜㅁㅏㄴ', '', [], ['eusi']), 942 942 ], 943 943 }, 944 - { 944 + '-는구먼': { 945 945 name: '-는구먼', 946 946 rules: [ 947 947 suffixInflection('ㄴㅡㄴㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v']), 948 948 suffixInflection('ㄴㅡㄴㄱㅜㅁㅓㄴ', '', [], ['eusi']), 949 949 ], 950 950 }, 951 - { 951 + '-는구면': { 952 952 name: '-는구면', 953 953 rules: [ 954 954 suffixInflection('ㄴㅡㄴㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v']), 955 955 suffixInflection('ㄴㅡㄴㄱㅜㅁㅕㄴ', '', [], ['eusi']), 956 956 ], 957 957 }, 958 - { 958 + '-는군': { 959 959 name: '-는군', 960 960 rules: [ 961 961 suffixInflection('ㄴㅡㄴㄱㅜㄴ', 'ㄷㅏ', [], ['v']), 962 962 suffixInflection('ㄴㅡㄴㄱㅜㄴ', '', [], ['eusi']), 963 963 ], 964 964 }, 965 - { 965 + '-는궈니': { 966 966 name: '-는궈니', 967 967 rules: [ 968 968 suffixInflection('ㄴㅡㄴㄱㅜㅓㄴㅣ', 'ㄷㅏ', [], ['v']), ··· 971 971 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅜㅓㄴㅣ', '없다', [], []), 972 972 ], 973 973 }, 974 - { 974 + '-는과니': { 975 975 name: '-는과니', 976 976 rules: [ 977 977 suffixInflection('ㄴㅡㄴㄱㅗㅏㄴㅣ', 'ㄷㅏ', [], ['v']), ··· 980 980 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅗㅏㄴㅣ', '없다', [], []), 981 981 ], 982 982 }, 983 - { 983 + '-(느)ㄴ다': { 984 984 name: '-(느)ㄴ다', 985 985 rules: [ 986 986 suffixInflection('ㄴㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 989 989 suffixInflection('ㄴㄷㅏ', '', [], ['eusi']), 990 990 ], 991 991 }, 992 - { 992 + '-((느)ㄴ)다고': { 993 993 name: '-((느)ㄴ)다고', 994 994 rules: [ 995 995 suffixInflection('ㄴㄷㅏㄱㅗ', 'ㄷㅏ', [], ['v']), ··· 1000 1000 suffixInflection('ㄷㅏㄱㅗ', '', [], ['p', 'f', 'eusi']), 1001 1001 ], 1002 1002 }, 1003 - { 1003 + '-((느)ㄴ)다나': { 1004 1004 name: '-((느)ㄴ)다나', 1005 1005 rules: [ 1006 1006 suffixInflection('ㄴㄷㅏㄴㅏ', 'ㄷㅏ', [], ['v']), ··· 1011 1011 suffixInflection('ㄷㅏㄴㅏ', '', [], ['p', 'f', 'eusi']), 1012 1012 ], 1013 1013 }, 1014 - { 1014 + '-((느)ㄴ)다네': { 1015 1015 name: '-((느)ㄴ)다네', 1016 1016 rules: [ 1017 1017 suffixInflection('ㄴㄷㅏㄴㅔ', 'ㄷㅏ', [], ['v']), ··· 1022 1022 suffixInflection('ㄷㅏㄴㅔ', '', [], ['p', 'f', 'eusi']), 1023 1023 ], 1024 1024 }, 1025 - { 1025 + '-((느)ㄴ)다느니': { 1026 1026 name: '-((느)ㄴ)다느니', 1027 1027 rules: [ 1028 1028 suffixInflection('ㄴㄷㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v']), ··· 1033 1033 suffixInflection('ㄷㅏㄴㅡㄴㅣ', '', [], ['p', 'f', 'eusi']), 1034 1034 ], 1035 1035 }, 1036 - { 1036 + '-((느)ㄴ)다니': { 1037 1037 name: '-((느)ㄴ)다니', 1038 1038 rules: [ 1039 1039 suffixInflection('ㄴㄷㅏㄴㅣ', 'ㄷㅏ', [], ['v']), ··· 1044 1044 suffixInflection('ㄷㅏㄴㅣ', '', [], ['p', 'f', 'eusi']), 1045 1045 ], 1046 1046 }, 1047 - { 1047 + '-((느)ㄴ)다니까': { 1048 1048 name: '-((느)ㄴ)다니까', 1049 1049 rules: [ 1050 1050 suffixInflection('ㄴㄷㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), ··· 1055 1055 suffixInflection('ㄷㅏㄴㅣㄲㅏ', '', [], ['p', 'f', 'eusi']), 1056 1056 ], 1057 1057 }, 1058 - { 1058 + '-((느)ㄴ)다더라': { 1059 1059 name: '-((느)ㄴ)다더라', 1060 1060 rules: [ 1061 1061 suffixInflection('ㄴㄷㅏㄷㅓㄹㅏ', 'ㄷㅏ', [], ['v']), ··· 1066 1066 suffixInflection('ㄷㅏㄷㅓㄹㅏ', '', [], ['p', 'f', 'eusi']), 1067 1067 ], 1068 1068 }, 1069 - { 1069 + '-((느)ㄴ)다마는': { 1070 1070 name: '-((느)ㄴ)다마는', 1071 1071 rules: [ 1072 1072 suffixInflection('ㄴㄷㅏㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1077 1077 suffixInflection('ㄷㅏㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']), 1078 1078 ], 1079 1079 }, 1080 - { 1080 + '-((느)ㄴ)다만': { 1081 1081 name: '-((느)ㄴ)다만', 1082 1082 rules: [ 1083 1083 suffixInflection('ㄴㄷㅏㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1088 1088 suffixInflection('ㄷㅏㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 1089 1089 ], 1090 1090 }, 1091 - { 1091 + '-((느)ㄴ)다며': { 1092 1092 name: '-((느)ㄴ)다며', 1093 1093 rules: [ 1094 1094 suffixInflection('ㄴㄷㅏㅁㅕ', 'ㄷㅏ', [], ['v']), ··· 1099 1099 suffixInflection('ㄷㅏㅁㅕ', '', [], ['p', 'f', 'eusi']), 1100 1100 ], 1101 1101 }, 1102 - { 1102 + '-((느)ㄴ)다면': { 1103 1103 name: '-((느)ㄴ)다면', 1104 1104 rules: [ 1105 1105 suffixInflection('ㄴㄷㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']), ··· 1110 1110 suffixInflection('ㄷㅏㅁㅕㄴ', '', [], ['p', 'f', 'eusi']), 1111 1111 ], 1112 1112 }, 1113 - { 1113 + '-((느)ㄴ)다면서': { 1114 1114 name: '-((느)ㄴ)다면서', 1115 1115 rules: [ 1116 1116 suffixInflection('ㄴㄷㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v']), ··· 1121 1121 suffixInflection('ㄷㅏㅁㅕㄴㅅㅓ', '', [], ['p', 'f', 'eusi']), 1122 1122 ], 1123 1123 }, 1124 - { 1124 + '-((느)ㄴ)다손': { 1125 1125 name: '-((느)ㄴ)다손', 1126 1126 rules: [ 1127 1127 suffixInflection('ㄴㄷㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v']), ··· 1132 1132 suffixInflection('ㄷㅏㅁㅕㄴㅅㅗㄴ', '', [], ['p', 'f', 'eusi']), 1133 1133 ], 1134 1134 }, 1135 - { 1135 + '-((느)ㄴ)다오': { 1136 1136 name: '-((느)ㄴ)다오', 1137 1137 rules: [ 1138 1138 suffixInflection('ㄴㄷㅏㅇㅗ', 'ㄷㅏ', [], ['v']), ··· 1143 1143 suffixInflection('ㄷㅏㅇㅗ', '', [], ['p', 'f', 'eusi']), 1144 1144 ], 1145 1145 }, 1146 - { 1146 + '-((느)ㄴ)다지': { 1147 1147 name: '-((느)ㄴ)다지', 1148 1148 rules: [ 1149 1149 suffixInflection('ㄴㄷㅏㅈㅣ', 'ㄷㅏ', [], ['v']), ··· 1154 1154 suffixInflection('ㄷㅏㅈㅣ', '', [], ['p', 'f', 'eusi']), 1155 1155 ], 1156 1156 }, 1157 - { 1157 + '-((느)ㄴ)단다': { 1158 1158 name: '-((느)ㄴ)단다', 1159 1159 rules: [ 1160 1160 suffixInflection('ㄴㄷㅏㄴㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 1165 1165 suffixInflection('ㄷㅏㄴㄷㅏ', '', [], ['p', 'f', 'eusi']), 1166 1166 ], 1167 1167 }, 1168 - { 1168 + '-((느)ㄴ)담': { 1169 1169 name: '-((느)ㄴ)담', 1170 1170 rules: [ 1171 1171 suffixInflection('ㄴㄷㅏㅁ', 'ㄷㅏ', [], ['v']), ··· 1176 1176 suffixInflection('ㄷㅏㅁ', '', [], ['p', 'f', 'eusi']), 1177 1177 ], 1178 1178 }, 1179 - { 1179 + '-((느)ㄴ)답니까': { 1180 1180 name: '-((느)ㄴ)답니까', 1181 1181 rules: [ 1182 1182 suffixInflection('ㄴㄷㅏㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), ··· 1187 1187 suffixInflection('ㄷㅏㅂㄴㅣㄲㅏ', '', [], ['p', 'f', 'eusi']), 1188 1188 ], 1189 1189 }, 1190 - { 1190 + '-((느)ㄴ)답니다': { 1191 1191 name: '-((느)ㄴ)답니다', 1192 1192 rules: [ 1193 1193 suffixInflection('ㄴㄷㅏㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 1198 1198 suffixInflection('ㄷㅏㅂㄴㅣㄷㅏ', '', [], ['p', 'f', 'eusi']), 1199 1199 ], 1200 1200 }, 1201 - { 1201 + '-((느)ㄴ)답시고': { 1202 1202 name: '-((느)ㄴ)답시고', 1203 1203 rules: [ 1204 1204 suffixInflection('ㄴㄷㅏㅂㅅㅣㄱㅗ', 'ㄷㅏ', [], ['v']), ··· 1209 1209 suffixInflection('ㄷㅏㅂㅅㅣㄱㅗ', '', [], ['p', 'f', 'eusi']), 1210 1210 ], 1211 1211 }, 1212 - { 1212 + '-((느)ㄴ)대': { 1213 1213 name: '-((느)ㄴ)대', 1214 1214 rules: [ 1215 1215 suffixInflection('ㄴㄷㅐ', 'ㄷㅏ', [], ['v']), ··· 1220 1220 suffixInflection('ㄷㅐ', '', [], ['p', 'f', 'eusi']), 1221 1221 ], 1222 1222 }, 1223 - { 1223 + '-((느)ㄴ)대요': { 1224 1224 name: '-((느)ㄴ)대요', 1225 1225 rules: [ 1226 1226 suffixInflection('ㄴㄷㅐㅇㅛ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1233 1233 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅐㅇㅛ', '없다', [], []), 1234 1234 ], 1235 1235 }, 1236 - { 1236 + '-((느)ㄴ)댄다': { 1237 1237 name: '-((느)ㄴ)댄다', 1238 1238 rules: [ 1239 1239 suffixInflection('ㄴㄷㅐㄴㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 1244 1244 suffixInflection('ㄷㅐㄴㄷㅏ', '', [], ['p', 'f', 'eusi']), 1245 1245 ], 1246 1246 }, 1247 - { 1247 + '-(으/느)ㄴ데': { 1248 1248 name: '-(으/느)ㄴ데', 1249 1249 rules: [ 1250 1250 suffixInflection('ㄴㄷㅔ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 1257 1257 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅔ', '없다', [], []), 1258 1258 ], 1259 1259 }, 1260 - { 1260 + '-(으/느)ㄴ뎁쇼': { 1261 1261 name: '-(으/느)ㄴ뎁쇼', 1262 1262 rules: [ 1263 1263 suffixInflection('ㄴㄷㅔㅂㅅㅛ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 1270 1270 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅔㅂㅅㅛ', '', [], []), 1271 1271 ], 1272 1272 }, 1273 - { 1273 + '-는도다': { 1274 1274 name: '-는도다', 1275 1275 rules: [ 1276 1276 suffixInflection('ㄴㅡㄴㄷㅗㄷㅏ', 'ㄷㅏ', [], ['v']), 1277 1277 ], 1278 1278 }, 1279 - { 1279 + '-(으/느)ㄴ바': { 1280 1280 name: '-(으/느)ㄴ바', 1281 1281 rules: [ 1282 1282 suffixInflection('ㄴㅂㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1290 1290 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅂㅏ', '없다', [], []), 1291 1291 ], 1292 1292 }, 1293 - { 1293 + '-(으/느)ㄴ지': { 1294 1294 name: '-(으/느)ㄴ지', 1295 1295 rules: [ 1296 1296 suffixInflection('ㄴㅈㅣ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 1303 1303 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣ', '없다', [], []), 1304 1304 ], 1305 1305 }, 1306 - { 1306 + '-(으/느)ㄴ지고': { 1307 1307 name: '-(으/느)ㄴ지고', 1308 1308 rules: [ 1309 1309 suffixInflection('ㄴㅈㅣㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1316 1316 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣㄱㅗ', '없다', [], []), 1317 1317 ], 1318 1318 }, 1319 - { 1319 + '-(으/느)ㄴ지라': { 1320 1320 name: '-(으/느)ㄴ지라', 1321 1321 rules: [ 1322 1322 suffixInflection('ㄴㅈㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1329 1329 suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣㄹㅏ', '없다', [], []), 1330 1330 ], 1331 1331 }, 1332 - { 1332 + '-(으)니': { 1333 1333 name: '-(으)니', 1334 1334 rules: [ 1335 1335 suffixInflection('ㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1342 1342 suffixInflection('ㅇㅡㄴㅣ', '', [], ['p', 'f', 'eusi', 'euo', 'sao', 'jao']), 1343 1343 ], 1344 1344 }, 1345 - { 1345 + '-(으)니까': { 1346 1346 name: '-(으)니까', 1347 1347 rules: [ 1348 1348 suffixInflection('ㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1356 1356 suffixInflection('ㅇㅡㄴㅣㄲㅏ', '', [], ['p', 'f']), 1357 1357 ], 1358 1358 }, 1359 - { 1359 + '-(으)니까느루': { 1360 1360 name: '-(으)니까느루', 1361 1361 rules: [ 1362 1362 suffixInflection('ㄴㅣㄲㅏㄴㅡㄹㅜ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1370 1370 suffixInflection('ㅇㅡㄴㅣㄲㅏㄴㅡㄹㅜ', '', [], ['p', 'f']), 1371 1371 ], 1372 1372 }, 1373 - { 1373 + '-(으)니까는': { 1374 1374 name: '-(으)니까는', 1375 1375 rules: [ 1376 1376 suffixInflection('ㄴㅣㄲㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1384 1384 suffixInflection('ㅇㅡㄴㅣㄲㅏㄴㅡㄴ', '', [], ['p', 'f']), 1385 1385 ], 1386 1386 }, 1387 - { 1387 + '-(으)니깐': { 1388 1388 name: '-(으)니깐', 1389 1389 rules: [ 1390 1390 suffixInflection('ㄴㅣㄲㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1398 1398 suffixInflection('ㅇㅡㄴㅣㄲㅏㄴ', '', [], ['p', 'f']), 1399 1399 ], 1400 1400 }, 1401 - { 1401 + '-(으/느)니라': { 1402 1402 name: '-(으/느)니라', 1403 1403 rules: [ 1404 1404 suffixInflection('ㄴㅣㄹㅏ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 1409 1409 suffixInflection('ㅇㅡㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']), 1410 1410 ], 1411 1411 }, 1412 - { 1412 + '-(으/느)니만치': { 1413 1413 name: '-(으/느)니만치', 1414 1414 rules: [ 1415 1415 suffixInflection('ㄴㅣㅁㅏㄴㅊㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1421 1421 suffixInflection('ㅇㅡㄴㅣㅁㅏㄴㅊㅣ', '', [], ['p', 'f']), 1422 1422 ], 1423 1423 }, 1424 - { 1424 + '-(으/느)니만큼': { 1425 1425 name: '-(으/느)니만큼', 1426 1426 rules: [ 1427 1427 suffixInflection('ㄴㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1433 1433 suffixInflection('ㅇㅡㄴㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p', 'f']), 1434 1434 ], 1435 1435 }, 1436 - { 1436 + '-다': { 1437 1437 name: '-다', 1438 1438 rules: [ 1439 1439 suffixInflection('ㄷㅏ', '', [], ['p', 'f', 'eusi', 'ida']), 1440 1440 ], 1441 1441 }, 1442 - { 1442 + '-다가': { 1443 1443 name: '-다가', 1444 1444 rules: [ 1445 1445 suffixInflection('ㄷㅏㄱㅏ', 'ㄷㅏ', [], ['v', 'adj']), 1446 1446 suffixInflection('ㄷㅏㄱㅏ', '', [], ['p', 'eusi']), 1447 1447 ], 1448 1448 }, 1449 - { 1449 + '-다가는': { 1450 1450 name: '-다가는', 1451 1451 rules: [ 1452 1452 suffixInflection('ㄷㅏㄱㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1453 1453 suffixInflection('ㄷㅏㄱㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']), 1454 1454 ], 1455 1455 }, 1456 - { 1456 + '-다간': { 1457 1457 name: '-다간', 1458 1458 rules: [ 1459 1459 suffixInflection('ㄷㅏㄱㅏㄴ', 'ㄷㅏ', [], ['v', 'adj']), 1460 1460 suffixInflection('ㄷㅏㄱㅏㄴ', '', [], ['p', 'f', 'eusi']), 1461 1461 ], 1462 1462 }, 1463 - { 1463 + '-다마다': { 1464 1464 name: '-다마다', 1465 1465 rules: [ 1466 1466 suffixInflection('ㄷㅏㅁㅏㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1467 1467 suffixInflection('ㄷㅏㅁㅏㄷㅏ', '', [], ['p', 'eusi']), 1468 1468 ], 1469 1469 }, 1470 - { 1470 + '-다시피': { 1471 1471 name: '-다시피', 1472 1472 rules: [ 1473 1473 suffixInflection('ㄷㅏㅅㅣㅍㅣ', 'ㄷㅏ', [], ['v', 'adj']), ··· 1476 1476 suffixInflection('ㅇㅓㅂㅅㄷㅏㅅㅣㅍㅣ', '없다', [], []), 1477 1477 ], 1478 1478 }, 1479 - { 1479 + '-단': { 1480 1480 name: '-단', 1481 1481 rules: [ 1482 1482 suffixInflection('ㄷㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1483 1483 suffixInflection('ㄷㅏㄴ', '', [], ['p', 'f', 'eusi']), 1484 1484 ], 1485 1485 }, 1486 - { 1486 + '-더': { 1487 1487 name: '-더', 1488 1488 rules: [ 1489 1489 suffixInflection('ㄷㅓ', 'ㄷㅏ', ['do'], ['v', 'adj', 'ida']), 1490 1490 suffixInflection('ㄷㅓ', '', ['do'], ['p', 'f', 'eusi']), 1491 1491 ], 1492 1492 }, 1493 - { 1493 + '-더구나': { 1494 1494 name: '-더구나', 1495 1495 rules: [ 1496 1496 suffixInflection('ㄷㅓㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1497 1497 suffixInflection('ㄷㅓㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']), 1498 1498 ], 1499 1499 }, 1500 - { 1500 + '-더구려': { 1501 1501 name: '-더구려', 1502 1502 rules: [ 1503 1503 suffixInflection('ㄷㅓㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1504 1504 suffixInflection('ㄷㅓㄱㅜㄹㅕ', '', [], ['p', 'f', 'eusi']), 1505 1505 ], 1506 1506 }, 1507 - { 1507 + '-더구료': { 1508 1508 name: '-더구료', 1509 1509 rules: [ 1510 1510 suffixInflection('ㄷㅓㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1511 1511 suffixInflection('ㄷㅓㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']), 1512 1512 ], 1513 1513 }, 1514 - { 1514 + '-더구만': { 1515 1515 name: '-더구만', 1516 1516 rules: [ 1517 1517 suffixInflection('ㄷㅓㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1518 1518 suffixInflection('ㄷㅓㄱㅜㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 1519 1519 ], 1520 1520 }, 1521 - { 1521 + '-더구먼': { 1522 1522 name: '-더구먼', 1523 1523 rules: [ 1524 1524 suffixInflection('ㄷㅓㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1525 1525 suffixInflection('ㄷㅓㄱㅜㅁㅓㄴ', '', [], ['p', 'f', 'eusi']), 1526 1526 ], 1527 1527 }, 1528 - { 1528 + '-더구면': { 1529 1529 name: '-더구면', 1530 1530 rules: [ 1531 1531 suffixInflection('ㄷㅓㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1532 1532 suffixInflection('ㄷㅓㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']), 1533 1533 ], 1534 1534 }, 1535 - { 1535 + '-더군': { 1536 1536 name: '-더군', 1537 1537 rules: [ 1538 1538 suffixInflection('ㄷㅓㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1539 1539 suffixInflection('ㄷㅓㄱㅜㄴ', '', [], ['p', 'f', 'eusi']), 1540 1540 ], 1541 1541 }, 1542 - { 1542 + '-더냐': { 1543 1543 name: '-더냐', 1544 1544 rules: [ 1545 1545 suffixInflection('ㄷㅓㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1546 1546 suffixInflection('ㄷㅓㄴㅑ', '', [], ['p', 'f', 'eusi']), 1547 1547 ], 1548 1548 }, 1549 - { 1549 + '-더뇨': { 1550 1550 name: '-더뇨', 1551 1551 rules: [ 1552 1552 suffixInflection('ㄷㅓㄴㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1553 1553 suffixInflection('ㄷㅓㄴㅛ', '', [], ['p', 'f', 'eusi']), 1554 1554 ], 1555 1555 }, 1556 - { 1556 + '-더니': { 1557 1557 name: '-더니', 1558 1558 rules: [ 1559 1559 suffixInflection('ㄷㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1560 1560 suffixInflection('ㄷㅓㄴㅣ', '', [], ['p', 'f', 'eusi', 'euob', 'euo', 'sab']), 1561 1561 ], 1562 1562 }, 1563 - { 1563 + '-더니라': { 1564 1564 name: '-더니라', 1565 1565 rules: [ 1566 1566 suffixInflection('ㄷㅓㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1567 1567 suffixInflection('ㄷㅓㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']), 1568 1568 ], 1569 1569 }, 1570 - { 1570 + '-더니마는': { 1571 1571 name: '-더니마는', 1572 1572 rules: [ 1573 1573 suffixInflection('ㄷㅓㄴㅣㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1574 1574 suffixInflection('ㄷㅓㄴㅣㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']), 1575 1575 ], 1576 1576 }, 1577 - { 1577 + '-더니만': { 1578 1578 name: '-더니만', 1579 1579 rules: [ 1580 1580 suffixInflection('ㄷㅓㄴㅣㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1581 1581 suffixInflection('ㄷㅓㄴㅣㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 1582 1582 ], 1583 1583 }, 1584 - { 1584 + '-더니이까': { 1585 1585 name: '-더니이까', 1586 1586 rules: [ 1587 1587 suffixInflection('ㄷㅓㄴㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1588 1588 suffixInflection('ㄷㅓㄴㅣㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi']), 1589 1589 ], 1590 1590 }, 1591 - { 1591 + '-더니이다': { 1592 1592 name: '-더니이다', 1593 1593 rules: [ 1594 1594 suffixInflection('ㄷㅓㄴㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1595 1595 suffixInflection('ㄷㅓㄴㅣㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi']), 1596 1596 ], 1597 1597 }, 1598 - { 1598 + '-더라도': { 1599 1599 name: '-더라도', 1600 1600 rules: [ 1601 1601 suffixInflection('ㄷㅓㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1602 1602 suffixInflection('ㄷㅓㄹㅏㄷㅗ', '', [], ['p', 'f', 'eusi']), 1603 1603 ], 1604 1604 }, 1605 - { 1605 + '-더이까': { 1606 1606 name: '-더이까', 1607 1607 rules: [ 1608 1608 suffixInflection('ㄷㅓㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1609 1609 suffixInflection('ㄷㅓㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi']), 1610 1610 ], 1611 1611 }, 1612 - { 1612 + '-더이다': { 1613 1613 name: '-더이다', 1614 1614 rules: [ 1615 1615 suffixInflection('ㄷㅓㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1616 1616 suffixInflection('ㄷㅓㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi']), 1617 1617 ], 1618 1618 }, 1619 - { 1619 + '-던': { 1620 1620 name: '-던', 1621 1621 rules: [ 1622 1622 suffixInflection('ㄷㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1623 1623 suffixInflection('ㄷㅓㄴ', '', [], ['p', 'f', 'eusi']), 1624 1624 ], 1625 1625 }, 1626 - { 1626 + '-던가': { 1627 1627 name: '-던가', 1628 1628 rules: [ 1629 1629 suffixInflection('ㄷㅓㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1630 1630 suffixInflection('ㄷㅓㄴㄱㅏ', '', [], ['p', 'f', 'eusi']), 1631 1631 ], 1632 1632 }, 1633 - { 1633 + '-던감': { 1634 1634 name: '-던감', 1635 1635 rules: [ 1636 1636 suffixInflection('ㄷㅓㄴㄱㅏㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1637 1637 suffixInflection('ㄷㅓㄴㄱㅏㅁ', '', [], ['p', 'f', 'eusi']), 1638 1638 ], 1639 1639 }, 1640 - { 1640 + '-던걸': { 1641 1641 name: '-던걸', 1642 1642 rules: [ 1643 1643 suffixInflection('ㄷㅓㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1644 1644 suffixInflection('ㄷㅓㄴㄱㅓㄹ', '', [], ['p', 'f', 'eusi']), 1645 1645 ], 1646 1646 }, 1647 - { 1647 + '-던고': { 1648 1648 name: '-던고', 1649 1649 rules: [ 1650 1650 suffixInflection('ㄷㅓㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1651 1651 suffixInflection('ㄷㅓㄴㄱㅗ', '', [], ['p', 'f', 'eusi']), 1652 1652 ], 1653 1653 }, 1654 - { 1654 + '-던데': { 1655 1655 name: '-던데', 1656 1656 rules: [ 1657 1657 suffixInflection('ㄷㅓㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1658 1658 suffixInflection('ㄷㅓㄴㄷㅔ', '', [], ['p', 'f', 'eusi']), 1659 1659 ], 1660 1660 }, 1661 - { 1661 + '-던들': { 1662 1662 name: '-던들', 1663 1663 rules: [ 1664 1664 suffixInflection('ㄷㅓㄴㄷㅡㄹ', '', [], ['p']), 1665 1665 ], 1666 1666 }, 1667 - { 1667 + '-던바': { 1668 1668 name: '-던바', 1669 1669 rules: [ 1670 1670 suffixInflection('ㄷㅓㄴㅂㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1671 1671 suffixInflection('ㄷㅓㄴㅂㅏ', '', [], ['p', 'f', 'eusi']), 1672 1672 ], 1673 1673 }, 1674 - { 1674 + '-던지': { 1675 1675 name: '-던지', 1676 1676 rules: [ 1677 1677 suffixInflection('ㄷㅓㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1678 1678 suffixInflection('ㄷㅓㄴㅈㅣ', '', [], ['p', 'f', 'eusi']), 1679 1679 ], 1680 1680 }, 1681 - { 1681 + '-데': { 1682 1682 name: '-데', 1683 1683 rules: [ 1684 1684 suffixInflection('ㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1685 1685 suffixInflection('ㄷㅔ', '', [], ['p', 'f', 'eusi']), 1686 1686 ], 1687 1687 }, 1688 - { 1688 + '-데요': { 1689 1689 name: '-데요', 1690 1690 rules: [ 1691 1691 suffixInflection('ㄷㅔㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1692 1692 suffixInflection('ㄷㅔㅇㅛ', '', [], ['p', 'f', 'eusi']), 1693 1693 ], 1694 1694 }, 1695 - { 1695 + '-도다': { 1696 1696 name: '-도다', 1697 1697 rules: [ 1698 1698 suffixInflection('ㄷㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1699 1699 suffixInflection('ㄷㅗㄷㅏ', '', [], ['p', 'f', 'eusi']), 1700 1700 ], 1701 1701 }, 1702 - { 1702 + '-도록': { 1703 1703 name: '-도록', 1704 1704 rules: [ 1705 1705 suffixInflection('ㄷㅗㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj']), 1706 1706 suffixInflection('ㄷㅗㄹㅗㄱ', '', [], ['eusi']), 1707 1707 ], 1708 1708 }, 1709 - { 1709 + '-(으)되': { 1710 1710 name: '-(으)되', 1711 1711 rules: [ 1712 1712 suffixInflection('ㄷㅗㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 1715 1715 suffixInflection('ㅇㅡㄷㅗㅣ', '', [], ['p', 'f']), 1716 1716 ], 1717 1717 }, 1718 - { 1718 + '-드구나': { 1719 1719 name: '-드구나', 1720 1720 rules: [ 1721 1721 suffixInflection('ㄷㅡㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1722 1722 suffixInflection('ㄷㅡㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']), 1723 1723 ], 1724 1724 }, 1725 - { 1725 + '-드구료': { 1726 1726 name: '-드구료', 1727 1727 rules: [ 1728 1728 suffixInflection('ㄷㅡㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1729 1729 suffixInflection('ㄷㅡㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']), 1730 1730 ], 1731 1731 }, 1732 - { 1732 + '-드구면': { 1733 1733 name: '-드구면', 1734 1734 rules: [ 1735 1735 suffixInflection('ㄷㅡㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1736 1736 suffixInflection('ㄷㅡㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']), 1737 1737 ], 1738 1738 }, 1739 - { 1739 + '-드군': { 1740 1740 name: '-드군', 1741 1741 rules: [ 1742 1742 suffixInflection('ㄷㅡㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1743 1743 suffixInflection('ㄷㅡㄱㅜㄴ', '', [], ['p', 'f', 'eusi']), 1744 1744 ], 1745 1745 }, 1746 - { 1746 + '-드냐': { 1747 1747 name: '-드냐', 1748 1748 rules: [ 1749 1749 suffixInflection('ㄷㅡㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1750 1750 suffixInflection('ㄷㅡㄴㅑ', '', [], ['p', 'f', 'eusi']), 1751 1751 ], 1752 1752 }, 1753 - { 1753 + '-드니': { 1754 1754 name: '-드니', 1755 1755 rules: [ 1756 1756 suffixInflection('ㄷㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1757 1757 suffixInflection('ㄷㅡㄴㅣ', '', [], ['p', 'f', 'eusi']), 1758 1758 ], 1759 1759 }, 1760 - { 1760 + '-드니라': { 1761 1761 name: '-드니라', 1762 1762 rules: [ 1763 1763 suffixInflection('ㄷㅡㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1764 1764 suffixInflection('ㄷㅡㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']), 1765 1765 ], 1766 1766 }, 1767 - { 1767 + '-드라': { 1768 1768 name: '-드라', 1769 1769 rules: [ 1770 1770 suffixInflection('ㄷㅡㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1771 1771 suffixInflection('ㄷㅡㄹㅏ', '', [], ['p', 'f', 'eusi']), 1772 1772 ], 1773 1773 }, 1774 - { 1774 + '-드라도': { 1775 1775 name: '-드라도', 1776 1776 rules: [ 1777 1777 suffixInflection('ㄷㅡㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1778 1778 suffixInflection('ㄷㅡㄹㅏㄷㅗ', '', [], ['p', 'f', 'eusi']), 1779 1779 ], 1780 1780 }, 1781 - { 1781 + '-드라면': { 1782 1782 name: '-드라면', 1783 1783 rules: [ 1784 1784 suffixInflection('ㄷㅡㄹㅏㅁㅕㄴ', '', [], ['p']), 1785 1785 ], 1786 1786 }, 1787 - { 1787 + '-드래도': { 1788 1788 name: '-드래도', 1789 1789 rules: [ 1790 1790 suffixInflection('ㄷㅡㄹㅐㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1791 1791 suffixInflection('ㄷㅡㄹㅐㄷㅗ', '', [], ['p', 'f', 'eusi']), 1792 1792 ], 1793 1793 }, 1794 - { 1794 + '-든': { 1795 1795 name: '-든', 1796 1796 rules: [ 1797 1797 suffixInflection('ㄷㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1798 1798 suffixInflection('ㄷㅡㄴ', '', [], ['p', 'eusi']), 1799 1799 ], 1800 1800 }, 1801 - { 1801 + '-든가': { 1802 1802 name: '-든가', 1803 1803 rules: [ 1804 1804 suffixInflection('ㄷㅡㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1805 1805 suffixInflection('ㄷㅡㄴㄱㅏ', '', [], ['p', 'eusi']), 1806 1806 ], 1807 1807 }, 1808 - { 1808 + '-든걸': { 1809 1809 name: '-든걸', 1810 1810 rules: [ 1811 1811 suffixInflection('ㄷㅡㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1812 1812 suffixInflection('ㄷㅡㄴㄱㅓㄹ', '', [], ['p', 'f', 'eusi']), 1813 1813 ], 1814 1814 }, 1815 - { 1815 + '-든고': { 1816 1816 name: '-든고', 1817 1817 rules: [ 1818 1818 suffixInflection('ㄷㅡㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1819 1819 suffixInflection('ㄷㅡㄴㄱㅗ', '', [], ['p', 'f', 'eusi']), 1820 1820 ], 1821 1821 }, 1822 - { 1822 + '-든데': { 1823 1823 name: '-든데', 1824 1824 rules: [ 1825 1825 suffixInflection('ㄷㅡㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1826 1826 suffixInflection('ㄷㅡㄴㄷㅔ', '', [], ['p', 'f', 'eusi']), 1827 1827 ], 1828 1828 }, 1829 - { 1829 + '-든들': { 1830 1830 name: '-든들', 1831 1831 rules: [ 1832 1832 suffixInflection('ㄷㅡㄴㄷㅡㄹ', '', [], ['p']), 1833 1833 ], 1834 1834 }, 1835 - { 1835 + '-든지': { 1836 1836 name: '-든지', 1837 1837 rules: [ 1838 1838 suffixInflection('ㄷㅡㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1839 1839 suffixInflection('ㄷㅡㄴㅈㅣ', '', [], ['p', 'eusi']), 1840 1840 ], 1841 1841 }, 1842 - { 1842 + '-듯': { 1843 1843 name: '-듯', 1844 1844 rules: [ 1845 1845 suffixInflection('ㄷㅡㅅ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1846 1846 suffixInflection('ㄷㅡㅅ', '', [], ['p', 'f', 'eusi']), 1847 1847 ], 1848 1848 }, 1849 - { 1849 + '-듯이': { 1850 1850 name: '-듯이', 1851 1851 rules: [ 1852 1852 suffixInflection('ㄷㅡㅅㅇㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1853 1853 suffixInflection('ㄷㅡㅅㅇㅣ', '', [], ['p', 'f', 'eusi']), 1854 1854 ], 1855 1855 }, 1856 - { 1856 + '-디': { 1857 1857 name: '-디', 1858 1858 rules: [ 1859 1859 suffixInflection('ㄷㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 1860 1860 suffixInflection('ㄷㅣ', '', [], ['p', 'f', 'eusi']), 1861 1861 ], 1862 1862 }, 1863 - { 1863 + '-(으)라': { 1864 1864 name: '-(으)라', 1865 1865 rules: [ 1866 1866 suffixInflection('ㄹㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1873 1873 suffixInflection('ㄹㅏ', '', [], ['eusi', 'do']), 1874 1874 ], 1875 1875 }, 1876 - { 1876 + '-(으)라고': { 1877 1877 name: '-(으)라고', 1878 1878 rules: [ 1879 1879 suffixInflection('ㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1886 1886 suffixInflection('ㄹㅏㄱㅗ', '', [], ['eusi', 'do']), 1887 1887 ], 1888 1888 }, 1889 - { 1889 + '-(으)라구': { 1890 1890 name: '-(으)라구', 1891 1891 rules: [ 1892 1892 suffixInflection('ㄹㅏㄱㅜ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1899 1899 suffixInflection('ㄹㅏㄱㅜ', '', [], ['eusi', 'do']), 1900 1900 ], 1901 1901 }, 1902 - { 1902 + '-(으)라나': { 1903 1903 name: '-(으)라나', 1904 1904 rules: [ 1905 1905 suffixInflection('ㄹㅏㄴㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1912 1912 suffixInflection('ㄹㅏㄴㅏ', '', [], ['eusi', 'do']), 1913 1913 ], 1914 1914 }, 1915 - { 1915 + '-(으)라네': { 1916 1916 name: '-(으)라네', 1917 1917 rules: [ 1918 1918 suffixInflection('ㄹㅏㄴㅔ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1925 1925 suffixInflection('ㄹㅏㄴㅔ', '', [], ['eusi', 'do']), 1926 1926 ], 1927 1927 }, 1928 - { 1928 + '-(으)라느니': { 1929 1929 name: '-(으)라느니', 1930 1930 rules: [ 1931 1931 suffixInflection('ㄹㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1938 1938 suffixInflection('ㄹㅏㄴㅡㄴㅣ', '', [], ['eusi', 'do']), 1939 1939 ], 1940 1940 }, 1941 - { 1941 + '-(으)라니': { 1942 1942 name: '-(으)라니', 1943 1943 rules: [ 1944 1944 suffixInflection('ㄹㅏㄴㅣ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1951 1951 suffixInflection('ㄹㅏㄴㅣ', '', [], ['eusi', 'do']), 1952 1952 ], 1953 1953 }, 1954 - { 1954 + '-(으)라니까': { 1955 1955 name: '-(으)라니까', 1956 1956 rules: [ 1957 1957 suffixInflection('ㄹㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1964 1964 suffixInflection('ㄹㅏㄴㅣㄲㅏ', '', [], ['eusi', 'do']), 1965 1965 ], 1966 1966 }, 1967 - { 1967 + '-라도': { 1968 1968 name: '-라도', 1969 1969 rules: [ 1970 1970 suffixInflection('ㅇㅏㄴㅣㄹㅏㄷㅗ', '아니다', [], ['adj']), 1971 1971 suffixInflection('ㄹㅏㄷㅗ', 'ㄷㅏ', [], ['ida']), 1972 1972 ], 1973 1973 }, 1974 - { 1974 + '-(으)라며': { 1975 1975 name: '-(으)라며', 1976 1976 rules: [ 1977 1977 suffixInflection('ㄹㅏㅁㅕ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1984 1984 suffixInflection('ㄹㅏㅁㅕ', '', [], ['eusi', 'do']), 1985 1985 ], 1986 1986 }, 1987 - { 1987 + '-(으)라면': { 1988 1988 name: '-(으)라면', 1989 1989 rules: [ 1990 1990 suffixInflection('ㄹㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 1997 1997 suffixInflection('ㄹㅏㅁㅕㄴ', '', [], ['eusi', 'do']), 1998 1998 ], 1999 1999 }, 2000 - { 2000 + '-(으)라면서': { 2001 2001 name: '-(으)라면서', 2002 2002 rules: [ 2003 2003 suffixInflection('ㄹㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2010 2010 suffixInflection('ㄹㅏㅁㅕㄴㅅㅓ', '', [], ['eusi', 'do']), 2011 2011 ], 2012 2012 }, 2013 - { 2013 + '-라서': { 2014 2014 name: '-라서', 2015 2015 rules: [ 2016 2016 suffixInflection('ㅇㅏㄴㅣㄹㅏㅅㅓ', '아니다', [], ['adj']), ··· 2018 2018 suffixInflection('ㄹㅏㅅㅓ', '', [], ['eusi']), 2019 2019 ], 2020 2020 }, 2021 - { 2021 + '-(으)라손': { 2022 2022 name: '-(으)라손', 2023 2023 rules: [ 2024 2024 suffixInflection('ㄹㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2031 2031 suffixInflection('ㄹㅏㅅㅗㄴ', '', [], ['eusi', 'do']), 2032 2032 ], 2033 2033 }, 2034 - { 2034 + '-라야': { 2035 2035 name: '-라야', 2036 2036 rules: [ 2037 2037 suffixInflection('ㅇㅏㄴㅣㄹㅏㅇㅑ', '아니다', [], ['adj']), ··· 2039 2039 suffixInflection('ㄹㅏㅇㅑ', '', [], ['eusi']), 2040 2040 ], 2041 2041 }, 2042 - { 2042 + '-라야만': { 2043 2043 name: '-라야만', 2044 2044 rules: [ 2045 2045 suffixInflection('ㅇㅏㄴㅣㄹㅏㅇㅑㅁㅏㄴ', '아니다', [], ['adj']), ··· 2047 2047 suffixInflection('ㄹㅏㅇㅑㅁㅏㄴ', '', [], ['eusi']), 2048 2048 ], 2049 2049 }, 2050 - { 2050 + '-(으)라오': { 2051 2051 name: '-(으)라오', 2052 2052 rules: [ 2053 2053 suffixInflection('ㄹㅏㅇㅗ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2060 2060 suffixInflection('ㄹㅏㅇㅗ', '', [], ['eusi', 'do']), 2061 2061 ], 2062 2062 }, 2063 - { 2063 + '-(으)라지': { 2064 2064 name: '-(으)라지', 2065 2065 rules: [ 2066 2066 suffixInflection('ㄹㅏㅈㅣ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2073 2073 suffixInflection('ㄹㅏㅈㅣ', '', [], ['eusi', 'do']), 2074 2074 ], 2075 2075 }, 2076 - { 2076 + '-(으)락': { 2077 2077 name: '-(으)락', 2078 2078 rules: [ 2079 2079 suffixInflection('ㄹㅏㄱ', 'ㄷㅏ', [], ['v', 'adj']), ··· 2085 2085 suffixInflection('ㄹㅇㅡㄹㅏㄱ', 'ㄷㄷㅏ', [], ['v', 'adj']), 2086 2086 ], 2087 2087 }, 2088 - { 2088 + '-(으)란': { 2089 2089 name: '-(으)란', 2090 2090 rules: [ 2091 2091 suffixInflection('ㄹㅏㄴ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2098 2098 suffixInflection('ㄹㅏㄴ', '', [], ['eusi', 'do']), 2099 2099 ], 2100 2100 }, 2101 - { 2101 + '-(으)란다': { 2102 2102 name: '-(으)란다', 2103 2103 rules: [ 2104 2104 suffixInflection('ㄹㅏㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2111 2111 suffixInflection('ㄹㅏㄴㄷㅏ', '', [], ['eusi', 'do']), 2112 2112 ], 2113 2113 }, 2114 - { 2114 + '-(으)람': { 2115 2115 name: '-(으)람', 2116 2116 rules: [ 2117 2117 suffixInflection('ㄹㅏㅁ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2124 2124 suffixInflection('ㄹㅏㅁ', '', [], ['eusi', 'do']), 2125 2125 ], 2126 2126 }, 2127 - { 2127 + '-(으)랍니까': { 2128 2128 name: '-(으)랍니까', 2129 2129 rules: [ 2130 2130 suffixInflection('ㄹㅏㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2137 2137 suffixInflection('ㄹㅏㅂㄴㅣㄲㅏ', '', [], ['eusi', 'do']), 2138 2138 ], 2139 2139 }, 2140 - { 2140 + '-(으)랍니다': { 2141 2141 name: '-(으)랍니다', 2142 2142 rules: [ 2143 2143 suffixInflection('ㄹㅏㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2150 2150 suffixInflection('ㄹㅏㅂㄴㅣㄷㅏ', '', [], ['eusi']), 2151 2151 ], 2152 2152 }, 2153 - { 2153 + '-랍시고': { 2154 2154 name: '-랍시고', 2155 2155 rules: [ 2156 2156 suffixInflection('ㅇㅏㄴㅣㄹㅏㅂㅅㅣㄱㅗ', '아니다', [], ['adj']), ··· 2158 2158 suffixInflection('ㄹㅏㅂㅅㅣㄱㅗ', '', [], ['eusi']), 2159 2159 ], 2160 2160 }, 2161 - { 2161 + '-(으)래': { 2162 2162 name: '-(으)래', 2163 2163 rules: [ 2164 2164 suffixInflection('ㄹㅐ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2171 2171 suffixInflection('ㄹㅐ', '', [], ['eusi']), 2172 2172 ], 2173 2173 }, 2174 - { 2174 + '-(으)래요': { 2175 2175 name: '-(으)래요', 2176 2176 rules: [ 2177 2177 suffixInflection('ㄹㅐㅇㅛ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2184 2184 suffixInflection('ㄹㅐㅇㅛ', '', [], ['eusi']), 2185 2185 ], 2186 2186 }, 2187 - { 2187 + '-(으)랴': { 2188 2188 name: '-(으)랴', 2189 2189 rules: [ 2190 2190 suffixInflection('ㄹㅑ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2196 2196 suffixInflection('ㄹㅑ', '', [], ['eusi']), 2197 2197 ], 2198 2198 }, 2199 - { 2199 + '-(으)러': { 2200 2200 name: '-(으)러', 2201 2201 rules: [ 2202 2202 suffixInflection('ㄹㅓ', 'ㄷㅏ', [], ['v', 'ida']), ··· 2208 2208 suffixInflection('ㄹㅓ', '', [], ['eusi']), 2209 2209 ], 2210 2210 }, 2211 - { 2211 + '-러니': { 2212 2212 name: '-러니', 2213 2213 rules: [ 2214 2214 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣ', '아니다', [], ['adj']), ··· 2216 2216 suffixInflection('ㄹㅓㄴㅣ', '', [], ['eusi']), 2217 2217 ], 2218 2218 }, 2219 - { 2219 + '-러니라': { 2220 2220 name: '-러니라', 2221 2221 rules: [ 2222 2222 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㄹㅏ', '아니다', [], ['adj']), ··· 2224 2224 suffixInflection('ㄹㅓㄴㅣㄹㅏ', '', [], ['eusi']), 2225 2225 ], 2226 2226 }, 2227 - { 2227 + '-러니이까': { 2228 2228 name: '-러니이까', 2229 2229 rules: [ 2230 2230 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㅇㅣㄲㅏ', '아니다', [], ['adj']), ··· 2232 2232 suffixInflection('ㄹㅓㄴㅣㅇㅣㄲㅏ', '', [], ['eusi']), 2233 2233 ], 2234 2234 }, 2235 - { 2235 + '-러니이다': { 2236 2236 name: '-러니이다', 2237 2237 rules: [ 2238 2238 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㅇㅣㄷㅏ', '아니다', [], ['adj']), ··· 2240 2240 suffixInflection('ㄹㅓㄴㅣㅇㅣㄷㅏ', '', [], ['eusi']), 2241 2241 ], 2242 2242 }, 2243 - { 2243 + '-러라': { 2244 2244 name: '-러라', 2245 2245 rules: [ 2246 2246 suffixInflection('ㅇㅏㄴㅣㄹㅓㄹㅏ', '아니다', [], ['adj']), ··· 2248 2248 suffixInflection('ㄹㅓㄹㅏ', '', [], ['eusi']), 2249 2249 ], 2250 2250 }, 2251 - { 2251 + '-러이까': { 2252 2252 name: '-러이까', 2253 2253 rules: [ 2254 2254 suffixInflection('ㅇㅏㄴㅣㄹㅓㅇㅣㄲㅏ', '아니다', [], ['adj']), ··· 2256 2256 suffixInflection('ㄹㅓㅇㅣㄲㅏ', '', [], ['eusi']), 2257 2257 ], 2258 2258 }, 2259 - { 2259 + '-러이다': { 2260 2260 name: '-러이다', 2261 2261 rules: [ 2262 2262 suffixInflection('ㅇㅏㄴㅣㄹㅓㅇㅣㄷㅏ', '아니다', [], ['adj']), ··· 2264 2264 suffixInflection('ㄹㅓㅇㅣㄷㅏ', '', [], ['eusi']), 2265 2265 ], 2266 2266 }, 2267 - { 2267 + '-런가': { 2268 2268 name: '-런가', 2269 2269 rules: [ 2270 2270 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㄱㅏ', '아니다', [], ['adj']), ··· 2272 2272 suffixInflection('ㄹㅓㄴㄱㅏ', '', [], ['eusi']), 2273 2273 ], 2274 2274 }, 2275 - { 2275 + '-런들': { 2276 2276 name: '-런들', 2277 2277 rules: [ 2278 2278 suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㄷㅡㄹ', '아니다', [], ['adj']), ··· 2280 2280 suffixInflection('ㄹㅓㄴㄷㅡㄹ', '', [], ['eusi']), 2281 2281 ], 2282 2282 }, 2283 - { 2283 + '-(으)려': { 2284 2284 name: '-(으)려', 2285 2285 rules: [ 2286 2286 suffixInflection('ㄹㅕ', 'ㄷㅏ', [], ['v']), ··· 2293 2293 suffixInflection('ㅇㅡㄹㅕ', '', [], ['p']), 2294 2294 ], 2295 2295 }, 2296 - { 2296 + '-(으)려거든': { 2297 2297 name: '-(으)려거든', 2298 2298 rules: [ 2299 2299 suffixInflection('ㄹㅕㄱㅓㄷㅡㄴ', 'ㄷㅏ', [], ['v']), ··· 2306 2306 suffixInflection('ㅇㅡㄹㅕㄱㅓㄷㅡㄴ', '', [], ['p']), 2307 2307 ], 2308 2308 }, 2309 - { 2309 + '-(으)려고': { 2310 2310 name: '-(으)려고', 2311 2311 rules: [ 2312 2312 suffixInflection('ㄹㅕㄱㅗ', 'ㄷㅏ', [], ['v', 'adj']), ··· 2319 2319 suffixInflection('ㅇㅡㄹㅕㄱㅗ', '', [], ['p']), 2320 2320 ], 2321 2321 }, 2322 - { 2322 + '-(으)려나': { 2323 2323 name: '-(으)려나', 2324 2324 rules: [ 2325 2325 suffixInflection('ㄹㅕㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2333 2333 suffixInflection('ㅇㅡㄹㅕㄴㅏ', '', [], ['p']), 2334 2334 ], 2335 2335 }, 2336 - { 2336 + '-(으)려니': { 2337 2337 name: '-(으)려니', 2338 2338 rules: [ 2339 2339 suffixInflection('ㄹㅕㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2347 2347 suffixInflection('ㅇㅡㄹㅕㄴㅣ', '', [], ['p']), 2348 2348 ], 2349 2349 }, 2350 - { 2350 + '-(으)려니와': { 2351 2351 name: '-(으)려니와', 2352 2352 rules: [ 2353 2353 suffixInflection('ㄹㅕㄴㅣㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2361 2361 suffixInflection('ㅇㅡㄹㅕㄴㅣㅇㅗㅏ', '', [], ['p']), 2362 2362 ], 2363 2363 }, 2364 - { 2364 + '-(으)려든': { 2365 2365 name: '-(으)려든', 2366 2366 rules: [ 2367 2367 suffixInflection('ㄹㅕㄷㅡㄴ', 'ㄷㅏ', [], ['v']), ··· 2374 2374 suffixInflection('ㅇㅡㄹㅕㄷㅡㄴ', '', [], ['p']), 2375 2375 ], 2376 2376 }, 2377 - { 2377 + '-(으)려마': { 2378 2378 name: '-(으)려마', 2379 2379 rules: [ 2380 2380 suffixInflection('ㄹㅕㅁㅏ', 'ㄷㅏ', [], ['v']), ··· 2387 2387 suffixInflection('ㅇㅡㄹㅕㅁㅏ', '', [], ['p']), 2388 2388 ], 2389 2389 }, 2390 - { 2390 + '-(으)려면': { 2391 2391 name: '-(으)려면', 2392 2392 rules: [ 2393 2393 suffixInflection('ㄹㅕㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2401 2401 suffixInflection('ㅇㅡㄹㅕㅁㅕㄴ', '', [], ['p']), 2402 2402 ], 2403 2403 }, 2404 - { 2404 + '-(으)려무나': { 2405 2405 name: '-(으)려무나', 2406 2406 rules: [ 2407 2407 suffixInflection('ㄹㅕㅁㅜㄴㅏ', 'ㄷㅏ', [], ['v']), ··· 2414 2414 suffixInflection('ㅇㅡㄹㅕㅁㅜㄴㅏ', '', [], ['p']), 2415 2415 ], 2416 2416 }, 2417 - { 2417 + '-(으)련': { 2418 2418 name: '-(으)련', 2419 2419 rules: [ 2420 2420 suffixInflection('ㄹㅕㄴ', 'ㄷㅏ', [], ['v']), ··· 2427 2427 suffixInflection('ㅇㅡㄹㅕㄴ', '', [], ['p']), 2428 2428 ], 2429 2429 }, 2430 - { 2430 + '-(으)련마는': { 2431 2431 name: '-(으)련마는', 2432 2432 rules: [ 2433 2433 suffixInflection('ㄹㅕㄴㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2441 2441 suffixInflection('ㅇㅡㄹㅕㄴㅁㅏㄴㅡㄴ', '', [], ['p']), 2442 2442 ], 2443 2443 }, 2444 - { 2444 + '-(으)련만': { 2445 2445 name: '-(으)련만', 2446 2446 rules: [ 2447 2447 suffixInflection('ㄹㅕㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2455 2455 suffixInflection('ㅇㅡㄹㅕㄴㅁㅏㄴ', '', [], ['p']), 2456 2456 ], 2457 2457 }, 2458 - { 2458 + '-(으)렴': { 2459 2459 name: '-(으)렴', 2460 2460 rules: [ 2461 2461 suffixInflection('ㄹㅕㅁ', 'ㄷㅏ', [], ['v']), ··· 2468 2468 suffixInflection('ㅇㅡㄹㅕㅁ', '', [], ['p']), 2469 2469 ], 2470 2470 }, 2471 - { 2471 + '-(으)렵니까': { 2472 2472 name: '-(으)렵니까', 2473 2473 rules: [ 2474 2474 suffixInflection('ㄹㅕㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), ··· 2481 2481 suffixInflection('ㅇㅡㄹㅕㅂㄴㅣㄲㅏ', '', [], ['p']), 2482 2482 ], 2483 2483 }, 2484 - { 2484 + '-(으)렵니다': { 2485 2485 name: '-(으)렵니다', 2486 2486 rules: [ 2487 2487 suffixInflection('ㄹㅕㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 2494 2494 suffixInflection('ㅇㅡㄹㅕㅂㄴㅣㄷㅏ', '', [], ['p']), 2495 2495 ], 2496 2496 }, 2497 - { 2497 + '-(으)렷다': { 2498 2498 name: '-(으)렷다', 2499 2499 rules: [ 2500 2500 suffixInflection('ㄹㅕㅅㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2508 2508 suffixInflection('ㅇㅡㄹㅕㅅㄷㅏ', '', [], ['p']), 2509 2509 ], 2510 2510 }, 2511 - { 2511 + '-로고': { 2512 2512 name: '-로고', 2513 2513 rules: [ 2514 2514 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅗ', '아니다', [], ['adj']), ··· 2516 2516 suffixInflection('ㄹㅗㄱㅗ', '', [], ['eusi']), 2517 2517 ], 2518 2518 }, 2519 - { 2519 + '-로고나': { 2520 2520 name: '-로고나', 2521 2521 rules: [ 2522 2522 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅗㄴㅏ', '아니다', [], ['adj']), ··· 2524 2524 suffixInflection('ㄹㅗㄱㅗㄴㅏ', '', [], ['eusi']), 2525 2525 ], 2526 2526 }, 2527 - { 2527 + '-로구나': { 2528 2528 name: '-로구나', 2529 2529 rules: [ 2530 2530 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄴㅏ', '아니다', [], ['adj']), ··· 2532 2532 suffixInflection('ㄹㅗㄱㅜㄴㅏ', '', [], ['eusi']), 2533 2533 ], 2534 2534 }, 2535 - { 2535 + '-로구려': { 2536 2536 name: '-로구려', 2537 2537 rules: [ 2538 2538 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄹㅕ', '아니다', [], ['adj']), ··· 2540 2540 suffixInflection('ㄹㅗㄱㅜㄹㅕ', '', [], ['eusi']), 2541 2541 ], 2542 2542 }, 2543 - { 2543 + '-로구료': { 2544 2544 name: '-로구료', 2545 2545 rules: [ 2546 2546 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄹㅛ', '아니다', [], ['adj']), ··· 2548 2548 suffixInflection('ㄹㅗㄱㅜㄹㅛ', '', [], ['eusi']), 2549 2549 ], 2550 2550 }, 2551 - { 2551 + '-로구만': { 2552 2552 name: '-로구만', 2553 2553 rules: [ 2554 2554 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅏㄴ', '아니다', [], ['adj']), ··· 2556 2556 suffixInflection('ㄹㅗㄱㅜㅁㅏㄴ', '', [], ['eusi']), 2557 2557 ], 2558 2558 }, 2559 - { 2559 + '-로구먼': { 2560 2560 name: '-로구먼', 2561 2561 rules: [ 2562 2562 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅓㄴ', '아니다', [], ['adj']), ··· 2564 2564 suffixInflection('ㄹㅗㄱㅜㅁㅓㄴ', '', [], ['eusi']), 2565 2565 ], 2566 2566 }, 2567 - { 2567 + '-로구면': { 2568 2568 name: '-로구면', 2569 2569 rules: [ 2570 2570 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅕㄴ', '아니다', [], ['adj']), ··· 2572 2572 suffixInflection('ㄹㅗㄱㅜㅁㅕㄴ', '', [], ['eusi']), 2573 2573 ], 2574 2574 }, 2575 - { 2575 + '-로군': { 2576 2576 name: '-로군', 2577 2577 rules: [ 2578 2578 suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄴ', '아니다', [], ['adj']), ··· 2580 2580 suffixInflection('ㄹㅗㄱㅜㄴ', '', [], ['eusi']), 2581 2581 ], 2582 2582 }, 2583 - { 2583 + '-로다': { 2584 2584 name: '-로다', 2585 2585 rules: [ 2586 2586 suffixInflection('ㅇㅏㄴㅣㄹㅗㄷㅏ', '아니다', [], ['adj']), ··· 2588 2588 suffixInflection('ㄹㅗㄷㅏ', '', [], ['eusi']), 2589 2589 ], 2590 2590 }, 2591 - { 2591 + '-로되': { 2592 2592 name: '-로되', 2593 2593 rules: [ 2594 2594 suffixInflection('ㅇㅏㄴㅣㄹㅗㄷㅗㅣ', '아니다', [], ['adj']), ··· 2596 2596 suffixInflection('ㄹㅗㄷㅗㅣ', '', [], ['eusi']), 2597 2597 ], 2598 2598 }, 2599 - { 2599 + '-로라': { 2600 2600 name: '-로라', 2601 2601 rules: [ 2602 2602 suffixInflection('ㅇㅏㄴㅣㄹㅗㄹㅏ', '아니다', [], ['adj']), ··· 2604 2604 suffixInflection('', '다', [], ['ida']), 2605 2605 ], 2606 2606 }, 2607 - { 2607 + '-로서니': { 2608 2608 name: '-로서니', 2609 2609 rules: [ 2610 2610 suffixInflection('ㅇㅏㄴㅣㄹㅗㅅㅓㄴㅣ', '아니다', [], ['adj']), ··· 2612 2612 suffixInflection('ㄹㅗㅅㅓㄴㅣ', '다', [], ['ida']), 2613 2613 ], 2614 2614 }, 2615 - { 2615 + '-로세': { 2616 2616 name: '-로세', 2617 2617 rules: [ 2618 2618 suffixInflection('ㅇㅏㄴㅣㄹㅗㅅㅔ', '아니다', [], ['adj']), ··· 2620 2620 suffixInflection('ㄹㅗㅅㅔ', '', [], ['eusi']), 2621 2621 ], 2622 2622 }, 2623 - { 2623 + '-(으)리': { 2624 2624 name: '-(으)리', 2625 2625 rules: [ 2626 2626 suffixInflection('ㄹㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2634 2634 suffixInflection('ㅇㅡㄹㅣ', '', [], ['p']), 2635 2635 ], 2636 2636 }, 2637 - { 2637 + '-(으)리까': { 2638 2638 name: '-(으)리까', 2639 2639 rules: [ 2640 2640 suffixInflection('ㄹㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2648 2648 suffixInflection('ㅇㅡㄹㅣㄲㅏ', '', [], ['p']), 2649 2649 ], 2650 2650 }, 2651 - { 2651 + '-(으)리니': { 2652 2652 name: '-(으)리니', 2653 2653 rules: [ 2654 2654 suffixInflection('ㄹㅣㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2662 2662 suffixInflection('ㅇㅡㄹㅣㄴㅣ', '', [], ['p']), 2663 2663 ], 2664 2664 }, 2665 - { 2665 + '-(으)리니라': { 2666 2666 name: '-(으)리니라', 2667 2667 rules: [ 2668 2668 suffixInflection('ㄹㅣㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2676 2676 suffixInflection('ㅇㅡㄹㅣㄴㅣㄹㅏ', '', [], ['p']), 2677 2677 ], 2678 2678 }, 2679 - { 2679 + '-(으)리다': { 2680 2680 name: '-(으)리다', 2681 2681 rules: [ 2682 2682 suffixInflection('ㄹㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2690 2690 suffixInflection('ㅇㅡㄹㅣㄷㅏ', '', [], ['p']), 2691 2691 ], 2692 2692 }, 2693 - { 2693 + '-(으)리라': { 2694 2694 name: '-(으)리라', 2695 2695 rules: [ 2696 2696 suffixInflection('ㄹㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2704 2704 suffixInflection('ㅇㅡㄹㅣㄹㅏ', '', [], ['p']), 2705 2705 ], 2706 2706 }, 2707 - { 2707 + '-(으)리로다': { 2708 2708 name: '-(으)리로다', 2709 2709 rules: [ 2710 2710 suffixInflection('ㄹㅣㄹㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2718 2718 suffixInflection('ㅇㅡㄹㅣㄹㅗㄷㅏ', '', [], ['p']), 2719 2719 ], 2720 2720 }, 2721 - { 2721 + '-(으)리만치': { 2722 2722 name: '-(으)리만치', 2723 2723 rules: [ 2724 2724 suffixInflection('ㄹㅣㅁㅏㄴㅊㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2732 2732 suffixInflection('ㅇㅡㄹㅣㅁㅏㄴㅊㅣ', '', [], ['p']), 2733 2733 ], 2734 2734 }, 2735 - { 2735 + '-(으)리만큼': { 2736 2736 name: '-(으)리만큼', 2737 2737 rules: [ 2738 2738 suffixInflection('ㄹㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2746 2746 suffixInflection('ㅇㅡㄹㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p']), 2747 2747 ], 2748 2748 }, 2749 - { 2749 + '-(으)리오': { 2750 2750 name: '-(으)리오', 2751 2751 rules: [ 2752 2752 suffixInflection('ㄹㅣㅇㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2760 2760 suffixInflection('ㅇㅡㄹㅣㅇㅗ', '', [], ['p']), 2761 2761 ], 2762 2762 }, 2763 - { 2763 + '-(으)마': { 2764 2764 name: '-(으)마', 2765 2765 rules: [ 2766 2766 suffixInflection('ㅁㅏ', 'ㄷㅏ', [], ['v']), ··· 2771 2771 suffixInflection('ㄹㅇㅡㅁㅏ', 'ㄷㄷㅏ', [], ['v']), 2772 2772 ], 2773 2773 }, 2774 - { 2774 + '-(으)매': { 2775 2775 name: '-(으)매', 2776 2776 rules: [ 2777 2777 suffixInflection('ㅁㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2785 2785 suffixInflection('ㅇㅡㅁㅐ', '', [], ['p', 'f']), 2786 2786 ], 2787 2787 }, 2788 - { 2788 + '-(으)며': { 2789 2789 name: '-(으)며', 2790 2790 rules: [ 2791 2791 suffixInflection('ㅁㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2799 2799 suffixInflection('ㅇㅡㅁㅕ', '', [], ['p', 'f']), 2800 2800 ], 2801 2801 }, 2802 - { 2802 + '-(으)면': { 2803 2803 name: '-(으)면', 2804 2804 rules: [ 2805 2805 suffixInflection('ㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2813 2813 suffixInflection('ㅇㅡㅁㅕㄴ', '', [], ['p', 'f']), 2814 2814 ], 2815 2815 }, 2816 - { 2816 + '-(으)면서': { 2817 2817 name: '-(으)면서', 2818 2818 rules: [ 2819 2819 suffixInflection('ㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2827 2827 suffixInflection('ㅇㅡㅁㅕㄴㅅㅓ', '', [], ['p', 'f']), 2828 2828 ], 2829 2829 }, 2830 - { 2830 + '-(으)므로': { 2831 2831 name: '-(으)므로', 2832 2832 rules: [ 2833 2833 suffixInflection('ㅁㅡㄹㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2841 2841 suffixInflection('ㅇㅡㅁㅡㄹㅗ', '', [], ['p', 'f']), 2842 2842 ], 2843 2843 }, 2844 - { 2844 + '-(으)사': { 2845 2845 name: '-(으)사', 2846 2846 rules: [ 2847 2847 suffixInflection('ㅅㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 2853 2853 suffixInflection('ㄹㅇㅡ', 'ㄷㄷㅏ', [], ['v', 'adj']), 2854 2854 ], 2855 2855 }, 2856 - { 2857 - name: '-사오-', 2856 + '-사오': { 2857 + name: '-사오', 2858 2858 rules: [ 2859 2859 suffixInflection('ㅅㅏㅇㅗ', 'ㄷㅏ', ['sao'], ['v', 'adj']), 2860 2860 suffixInflection('ㅅㅏㅇㅗ', '', ['sao'], ['p', 'f']), 2861 2861 ], 2862 2862 }, 2863 - { 2863 + '-사오니까': { 2864 2864 name: '-사오니까', 2865 2865 rules: [ 2866 2866 suffixInflection('ㅅㅏㅇㅗㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2867 2867 suffixInflection('ㅅㅏㅇㅗㄴㅣㄲㅏ', '', [], ['p', 'f']), 2868 2868 ], 2869 2869 }, 2870 - { 2870 + '-사오리까': { 2871 2871 name: '-사오리까', 2872 2872 rules: [ 2873 2873 suffixInflection('ㅅㅏㅇㅗㄹㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2874 2874 suffixInflection('ㅅㅏㅇㅗㄹㅣㄲㅏ', '', [], ['p', 'f']), 2875 2875 ], 2876 2876 }, 2877 - { 2877 + '-사오리다': { 2878 2878 name: '-사오리다', 2879 2879 rules: [ 2880 2880 suffixInflection('ㅅㅏㅇㅗㄹㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2881 2881 suffixInflection('ㅅㅏㅇㅗㄹㅣㄷㅏ', '', [], ['p', 'f']), 2882 2882 ], 2883 2883 }, 2884 - { 2884 + '-사오리이까': { 2885 2885 name: '-사오리이까', 2886 2886 rules: [ 2887 2887 suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2888 2888 suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄲㅏ', '', [], ['p', 'f']), 2889 2889 ], 2890 2890 }, 2891 - { 2891 + '-사오리이다': { 2892 2892 name: '-사오리이다', 2893 2893 rules: [ 2894 2894 suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2895 2895 suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄷㅏ', '', [], ['p', 'f']), 2896 2896 ], 2897 2897 }, 2898 - { 2898 + '-사오이다': { 2899 2899 name: '-사오이다', 2900 2900 rules: [ 2901 2901 suffixInflection('ㅅㅏㅇㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2902 2902 suffixInflection('ㅅㅏㅇㅗㅇㅣㄷㅏ', '', [], ['p', 'f']), 2903 2903 ], 2904 2904 }, 2905 - { 2906 - name: '-사옵-', 2905 + '-사옵': { 2906 + name: '-사옵', 2907 2907 rules: [ 2908 2908 suffixInflection('ㅅㅏㅇㅗㅂ', 'ㄷㅏ', ['saob'], ['v', 'adj']), 2909 2909 suffixInflection('ㅅㅏㅇㅗㅂ', '', ['saob'], ['p', 'f']), 2910 2910 ], 2911 2911 }, 2912 - { 2912 + '-사옵니까': { 2913 2913 name: '-사옵니까', 2914 2914 rules: [ 2915 2915 suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2916 2916 suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄲㅏ', '', [], ['p', 'f']), 2917 2917 ], 2918 2918 }, 2919 - { 2919 + '-사옵니다': { 2920 2920 name: '-사옵니다', 2921 2921 rules: [ 2922 2922 suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2923 2923 suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄷㅏ', '', [], ['p', 'f']), 2924 2924 ], 2925 2925 }, 2926 - { 2926 + '-사옵디까': { 2927 2927 name: '-사옵디까', 2928 2928 rules: [ 2929 2929 suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2930 2930 suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄲㅏ', '', [], ['p', 'f']), 2931 2931 ], 2932 2932 }, 2933 - { 2933 + '-사옵디다': { 2934 2934 name: '-사옵디다', 2935 2935 rules: [ 2936 2936 suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2937 2937 suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄷㅏ', '', [], ['p', 'f']), 2938 2938 ], 2939 2939 }, 2940 - { 2940 + '-사와': { 2941 2941 name: '-사와', 2942 2942 rules: [ 2943 2943 suffixInflection('ㅅㅏㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2944 2944 suffixInflection('ㅅㅏㅇㅗㅏ', '', [], ['p', 'f']), 2945 2945 ], 2946 2946 }, 2947 - { 2947 + '-사외다': { 2948 2948 name: '-사외다', 2949 2949 rules: [ 2950 2950 suffixInflection('ㅅㅏㅇㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 2951 2951 suffixInflection('ㅅㅏㅇㅗㅣㄷㅏ', '', [], ['p', 'f']), 2952 2952 ], 2953 2953 }, 2954 - { 2954 + '-(으)사이다': { 2955 2955 name: '-(으)사이다', 2956 2956 rules: [ 2957 2957 suffixInflection('ㅅㅏㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 2963 2963 suffixInflection('ㄹㅇㅡㅅㅏㅇㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']), 2964 2964 ], 2965 2965 }, 2966 - { 2967 - name: '-삽-', 2966 + '-삽': { 2967 + name: '-삽', 2968 2968 rules: [ 2969 2969 suffixInflection('ㅅㅏㅂ', 'ㄷㅏ', ['sab'], ['v', 'adj']), 2970 2970 suffixInflection('ㅅㅏㅂ', '', ['sab'], ['p', 'f']), 2971 2971 ], 2972 2972 }, 2973 - { 2973 + '-(으)세': { 2974 2974 name: '-(으)세', 2975 2975 rules: [ 2976 2976 suffixInflection('ㅅㅔ', 'ㄷㅏ', [], ['v']), ··· 2981 2981 suffixInflection('ㄹㅇㅡㅅㅔ', 'ㄷㄷㅏ', [], ['v']), 2982 2982 ], 2983 2983 }, 2984 - { 2984 + '-세나': { 2985 2985 name: '-세나', 2986 2986 rules: [ 2987 2987 suffixInflection('ㅅㅔㄴㅏ', 'ㄷㅏ', [], ['v']), 2988 2988 ], 2989 2989 }, 2990 - { 2990 + '-(으)세요': { 2991 2991 name: '-(으)세요', 2992 2992 rules: [ 2993 2993 suffixInflection('ㅅㅔㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 2999 2999 suffixInflection('ㄹㅇㅡㅅㅔㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']), 3000 3000 ], 3001 3001 }, 3002 - { 3002 + '-(으)셔요': { 3003 3003 name: '-(으)셔요', 3004 3004 rules: [ 3005 3005 suffixInflection('ㅅㅕㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3011 3011 suffixInflection('ㄹㅇㅡㅅㅕㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']), 3012 3012 ], 3013 3013 }, 3014 - { 3014 + '-소': { 3015 3015 name: '-소', 3016 3016 rules: [ 3017 3017 suffixInflection('ㅅㅗ', 'ㄷㅏ', [], ['v', 'adj']), 3018 3018 suffixInflection('ㅅㅗ', '', [], ['p', 'f']), 3019 3019 ], 3020 3020 }, 3021 - { 3021 + '-소다': { 3022 3022 name: '-소다', 3023 3023 rules: [ 3024 3024 suffixInflection('ㅅㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 3025 3025 suffixInflection('ㅅㅗㄷㅏ', '', [], ['p', 'f']), 3026 3026 ], 3027 3027 }, 3028 - { 3028 + '-(으)소서': { 3029 3029 name: '-(으)소서', 3030 3030 rules: [ 3031 3031 suffixInflection('ㅅㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3037 3037 suffixInflection('ㄹㅇㅡㅅㅗㅅㅓ', 'ㄷㄷㅏ', [], ['v', 'adj']), 3038 3038 ], 3039 3039 }, 3040 - { 3040 + '-소이까': { 3041 3041 name: '-소이까', 3042 3042 rules: [ 3043 3043 suffixInflection('ㅅㅗㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 3044 3044 suffixInflection('ㅅㅗㅇㅣㄲㅏ', '', [], ['p', 'f']), 3045 3045 ], 3046 3046 }, 3047 - { 3047 + '-소이다': { 3048 3048 name: '-소이다', 3049 3049 rules: [ 3050 3050 suffixInflection('ㅅㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 3051 3051 suffixInflection('ㅅㅗㅇㅣㄷㅏ', '', [], ['p', 'f']), 3052 3052 ], 3053 3053 }, 3054 - { 3054 + '-쇠다': { 3055 3055 name: '-쇠다', 3056 3056 rules: [ 3057 3057 suffixInflection('ㅅㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), 3058 3058 suffixInflection('ㅅㅗㅣㄷㅏ', '', [], ['p', 'f']), 3059 3059 ], 3060 3060 }, 3061 - { 3061 + '-(스)ㅂ네': { 3062 3062 name: '-(스)ㅂ네', 3063 3063 rules: [ 3064 3064 suffixInflection('ㅂㄴㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3068 3068 suffixInflection('ㅂㄴㅔ', '', [], ['eusi']), 3069 3069 ], 3070 3070 }, 3071 - { 3071 + '-(스)ㅂ늰다': { 3072 3072 name: '-(스)ㅂ늰다', 3073 3073 rules: [ 3074 3074 suffixInflection('ㅂㄴㅡㅣㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3078 3078 suffixInflection('ㅂㄴㅡㅣㄴㄷㅏ', '', [], ['eusi']), 3079 3079 ], 3080 3080 }, 3081 - { 3081 + '-(스)ㅂ니까': { 3082 3082 name: '-(스)ㅂ니까', 3083 3083 rules: [ 3084 3084 suffixInflection('ㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3088 3088 suffixInflection('ㅂㄴㅣㄲㅏ', '', [], ['eusi']), 3089 3089 ], 3090 3090 }, 3091 - { 3091 + '-(스)ㅂ니다': { 3092 3092 name: '-(스)ㅂ니다', 3093 3093 rules: [ 3094 3094 suffixInflection('ㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3098 3098 suffixInflection('ㅂㄴㅣㄷㅏ', '', [], ['eusi']), 3099 3099 ], 3100 3100 }, 3101 - { 3101 + '-(스)ㅂ디까': { 3102 3102 name: '-(스)ㅂ디까', 3103 3103 rules: [ 3104 3104 suffixInflection('ㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3108 3108 suffixInflection('ㅂㄷㅣㄲㅏ', '', [], ['eusi']), 3109 3109 ], 3110 3110 }, 3111 - { 3111 + '-(스)ㅂ디다': { 3112 3112 name: '-(스)ㅂ디다', 3113 3113 rules: [ 3114 3114 suffixInflection('ㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3118 3118 suffixInflection('ㅂㄷㅣㄷㅏ', '', [], ['eusi']), 3119 3119 ], 3120 3120 }, 3121 - { 3121 + '-(스)ㅂ딘다': { 3122 3122 name: '-(스)ㅂ딘다', 3123 3123 rules: [ 3124 3124 suffixInflection('ㅂㄷㅣㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3128 3128 suffixInflection('ㅂㄷㅣㄴㄷㅏ', '', [], ['eusi']), 3129 3129 ], 3130 3130 }, 3131 - { 3131 + '-(스)ㅂ죠': { 3132 3132 name: '-(스)ㅂ죠', 3133 3133 rules: [ 3134 3134 suffixInflection('ㅂㅈㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3138 3138 suffixInflection('ㅂㅈㅛ', '', [], ['eusi']), 3139 3139 ], 3140 3140 }, 3141 - { 3141 + '-(스)ㅂ지요': { 3142 3142 name: '-(스)ㅂ지요', 3143 3143 rules: [ 3144 3144 suffixInflection('ㅂㅈㅣㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3148 3148 suffixInflection('ㅂㅈㅣㅇㅛ', '', [], ['eusi']), 3149 3149 ], 3150 3150 }, 3151 - { 3152 - name: '-(으)시-', 3151 + '-(으)시': { 3152 + name: '-(으)시', 3153 3153 rules: [ 3154 3154 suffixInflection('ㅅㅣ', 'ㄷㅏ', ['eusi'], ['v', 'adj', 'ida']), 3155 3155 suffixInflection('ㅇㅡㅅㅣ', 'ㄷㅏ', ['eusi'], ['v', 'adj']), ··· 3161 3161 suffixInflection('ㅅㅣ', '', ['eusi'], ['saob', 'euob', 'jaob']), 3162 3162 ], 3163 3163 }, 3164 - { 3164 + '-(으)시압': { 3165 3165 name: '-(으)시압', 3166 3166 rules: [ 3167 3167 suffixInflection('ㅅㅣㅇㅏㅂ', 'ㄷㅏ', [], ['v']), ··· 3172 3172 suffixInflection('ㄹㅇㅡㅅㅣㅇㅏㅂ', 'ㄷㄷㅏ', [], ['v']), 3173 3173 ], 3174 3174 }, 3175 - { 3175 + '-(으)시어요': { 3176 3176 name: '-(으)시어요', 3177 3177 rules: [ 3178 3178 suffixInflection('ㅅㅣㅇㅓㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3184 3184 suffixInflection('ㄹㅇㅡㅅㅣㅇㅓㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']), 3185 3185 ], 3186 3186 }, 3187 - { 3187 + '-(으)십사': { 3188 3188 name: '-(으)십사', 3189 3189 rules: [ 3190 3190 suffixInflection('ㅅㅣㅂㅅㅏ', 'ㄷㅏ', [], ['v']), ··· 3195 3195 suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅏ', 'ㄷㄷㅏ', [], ['v']), 3196 3196 ], 3197 3197 }, 3198 - { 3198 + '-(으)십시다': { 3199 3199 name: '-(으)십시다', 3200 3200 rules: [ 3201 3201 suffixInflection('ㅅㅣㅂㅅㅣㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 3206 3206 suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v']), 3207 3207 ], 3208 3208 }, 3209 - { 3209 + '-(으)십시오': { 3210 3210 name: '-(으)십시오', 3211 3211 rules: [ 3212 3212 suffixInflection('ㅅㅣㅂㅅㅣㅇㅗ', 'ㄷㅏ', [], ['v']), ··· 3217 3217 suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅣㅇㅗ', 'ㄷㄷㅏ', [], ['v']), 3218 3218 ], 3219 3219 }, 3220 - { 3220 + '-아/어': { 3221 3221 name: '-아/어', 3222 3222 rules: [ 3223 3223 suffixInflection('ㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3248 3248 suffixInflection('ㅇㅓ', '', [], ['p', 'f']), 3249 3249 ], 3250 3250 }, 3251 - { 3251 + '-아/어다': { 3252 3252 name: '-아/어다', 3253 3253 rules: [ 3254 3254 suffixInflection('ㅏㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3279 3279 suffixInflection('ㅇㅓㄷㅏ', '', [], ['p', 'f']), 3280 3280 ], 3281 3281 }, 3282 - { 3282 + '-아/어다가': { 3283 3283 name: '-아/어다가', 3284 3284 rules: [ 3285 3285 suffixInflection('ㅏㄷㅏㄱㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3313 3313 suffixInflection('ㅇㅓㄷㅏㄱㅏ', '', [], ['p', 'f']), 3314 3314 ], 3315 3315 }, 3316 - { 3316 + '-아/어도': { 3317 3317 name: '-아/어도', 3318 3318 rules: [ 3319 3319 suffixInflection('ㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3347 3347 suffixInflection('ㅇㅓㄷㅗ', '', [], ['p', 'f']), 3348 3348 ], 3349 3349 }, 3350 - { 3350 + '-아/어라': { 3351 3351 name: '-아/어라', 3352 3352 rules: [ 3353 3353 suffixInflection('ㅏㄹㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3381 3381 suffixInflection('ㅇㅓㄹㅏ', '', [], ['p', 'f']), 3382 3382 ], 3383 3383 }, 3384 - { 3384 + '-아/아서': { 3385 3385 name: '-아/아서', 3386 3386 rules: [ 3387 3387 suffixInflection('ㅏㅅㅓ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3415 3415 suffixInflection('ㅇㅓㅅㅓ', '', [], ['p', 'f']), 3416 3416 ], 3417 3417 }, 3418 - { 3418 + '-아/어야': { 3419 3419 name: '-아/어야', 3420 3420 rules: [ 3421 3421 suffixInflection('ㅏㅇㅑ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3449 3449 suffixInflection('ㅇㅓㅇㅑ', '', [], ['p', 'f']), 3450 3450 ], 3451 3451 }, 3452 - { 3452 + '-아/어야겠': { 3453 3453 name: '-아/어야겠', 3454 3454 rules: [ 3455 3455 suffixInflection('ㅏㅇㅑㄱㅔㅆ', 'ㄷㅏ', ['f'], ['v', 'adj']), ··· 3482 3482 suffixInflection('ㅓㅇㅑㄱㅔㅆ', 'ㅡㄷㅏ', ['f'], ['v', 'adj']), 3483 3483 ], 3484 3484 }, 3485 - { 3485 + '-아/어야만': { 3486 3486 name: '-아/어야만', 3487 3487 rules: [ 3488 3488 suffixInflection('ㅏㅇㅑㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3516 3516 suffixInflection('ㅇㅓㅇㅑㅁㅏㄴ', '', [], ['p', 'f']), 3517 3517 ], 3518 3518 }, 3519 - { 3519 + '-아/어야지': { 3520 3520 name: '-아/어야지', 3521 3521 rules: [ 3522 3522 suffixInflection('ㅏㅇㅑㅈㅣ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3550 3550 suffixInflection('ㅇㅓㅇㅑㅈㅣ', '', [], ['p', 'f']), 3551 3551 ], 3552 3552 }, 3553 - { 3553 + '-아/어요': { 3554 3554 name: '-아/어요', 3555 3555 rules: [ 3556 3556 suffixInflection('ㅏㅇㅛ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3585 3585 suffixInflection('ㅇㅓㅇㅛ', '', [], ['p', 'f']), 3586 3586 ], 3587 3587 }, 3588 - { 3588 + '-아/어지이다': { 3589 3589 name: '-아/어지이다', 3590 3590 rules: [ 3591 3591 suffixInflection('ㅏㅈㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3618 3618 suffixInflection('ㅇㅓㅈㅣㅇㅣㄷㅏ', '', [], ['p', 'f']), 3619 3619 ], 3620 3620 }, 3621 - { 3621 + '-았/었': { 3622 3622 name: '-았/었', 3623 3623 rules: [ 3624 3624 suffixInflection('ㅆ', 'ㄷㅏ', ['p'], ['v', 'adj']), ··· 3653 3653 suffixInflection('ㅅㅣㅇㅓㅆ', 'ㅅㅣ', ['p'], ['eusi']), 3654 3654 ], 3655 3655 }, 3656 - { 3656 + '-았/었었': { 3657 3657 name: '-았/었었', 3658 3658 rules: [ 3659 3659 suffixInflection('ㅏㅆㅇㅓㅆ', 'ㄷㅏ', ['p'], ['v', 'adj']), ··· 3686 3686 suffixInflection('ㅓㅆㅇㅓㅆ', 'ㅡㄷㅏ', ['p'], ['v', 'adj']), 3687 3687 ], 3688 3688 }, 3689 - { 3689 + '-았/었자': { 3690 3690 name: '-았/었자', 3691 3691 rules: [ 3692 3692 suffixInflection('ㅏㅆㅈㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3720 3720 suffixInflection('ㅅㅕㅆㅈㅏ', 'ㅅㅣ', [], ['eusi']), 3721 3721 ], 3722 3722 }, 3723 - { 3723 + '-야': { 3724 3724 name: '-야', 3725 3725 rules: [ 3726 3726 suffixInflection('ㅇㅏㄴㅣㅇㅑ', '아니다', [], ['adj']), 3727 3727 suffixInflection('ㅇㅣㅇㅑ', '이다', [], ['ida']), 3728 3728 ], 3729 3729 }, 3730 - { 3730 + '-언마는': { 3731 3731 name: '-언마는', 3732 3732 rules: [ 3733 3733 suffixInflection('ㅇㅓㄴㅁㅏㄴㅡㄴ', '아니다', [], ['adj']), ··· 3735 3735 suffixInflection('ㅇㅓㄴㅁㅏㄴㅡㄴ', '', [], ['eusi']), 3736 3736 ], 3737 3737 }, 3738 - { 3738 + '-언만': { 3739 3739 name: '-언만', 3740 3740 rules: [ 3741 3741 suffixInflection('ㅇㅓㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 3742 3742 suffixInflection('ㅇㅓㄴㅁㅏㄴ', '', [], ['p', 'f', 'eusi']), 3743 3743 ], 3744 3744 }, 3745 - { 3745 + '-언정': { 3746 3746 name: '-언정', 3747 3747 rules: [ 3748 3748 suffixInflection('ㅇㅓㄴㅈㅓㅇ', '아니다', [], ['adj']), ··· 3750 3750 suffixInflection('ㅇㅓㄴㅈㅓㅇ', '', [], ['eusi']), 3751 3751 ], 3752 3752 }, 3753 - { 3753 + '-에라': { 3754 3754 name: '-에라', 3755 3755 rules: [ 3756 3756 suffixInflection('ㅇㅔㄹㅏ', '', [], ['p']), 3757 3757 ], 3758 3758 }, 3759 - { 3760 - name: '-(으)오-', 3759 + '-(으)오': { 3760 + name: '-(으)오', 3761 3761 rules: [ 3762 3762 suffixInflection('ㅇㅗ', 'ㄷㅏ', ['euo'], ['v', 'adj']), 3763 3763 suffixInflection('ㅇㅡㅇㅗ', 'ㄷㅏ', ['euo'], ['v', 'adj']), ··· 3770 3770 suffixInflection('ㅇㅡㅇㅗ', '', ['euo'], ['p', 'f']), 3771 3771 ], 3772 3772 }, 3773 - { 3773 + '-(으)오니까': { 3774 3774 name: '-(으)오니까', 3775 3775 rules: [ 3776 3776 suffixInflection('ㅇㅗㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3784 3784 suffixInflection('ㅇㅡㅇㅗㄴㅣㄲㅏ', '', [], ['p', 'f']), 3785 3785 ], 3786 3786 }, 3787 - { 3787 + '-(으)오리이까': { 3788 3788 name: '-(으)오리이까', 3789 3789 rules: [ 3790 3790 suffixInflection('ㅇㅗㄹㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3797 3797 suffixInflection('ㅇㅗㄹㅣㅇㅣㄲㅏ', '', [], ['eusi']), 3798 3798 ], 3799 3799 }, 3800 - { 3800 + '-(으)오리이다': { 3801 3801 name: '-(으)오리이다', 3802 3802 rules: [ 3803 3803 suffixInflection('ㅇㅗㄹㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3810 3810 suffixInflection('ㅇㅗㄹㅣㅇㅣㄷㅏ', '', [], ['eusi']), 3811 3811 ], 3812 3812 }, 3813 - { 3813 + '-오이까': { 3814 3814 name: '-오이까', 3815 3815 rules: [ 3816 3816 suffixInflection('ㅇㅗㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3818 3818 suffixInflection('ㅇㅗㅇㅣㄲㅏ', '', [], ['eusi']), 3819 3819 ], 3820 3820 }, 3821 - { 3821 + '-(으)오이다': { 3822 3822 name: '-(으)오이다', 3823 3823 rules: [ 3824 3824 suffixInflection('ㅇㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), ··· 3832 3832 suffixInflection('ㅇㅡㅇㅗㅇㅣㄷㅏ', '', [], ['p', 'f']), 3833 3833 ], 3834 3834 }, 3835 - { 3835 + '-올습니다': { 3836 3836 name: '-올습니다', 3837 3837 rules: [ 3838 3838 suffixInflection('ㅇㅏㄴㅣㅇㅗㄹㅅㅡㅂㄴㅣㄷㅏ', '아니다', [], ['adj']), 3839 3839 suffixInflection('ㅇㅣㅇㅗㄹㅅㅡㅂㄴㅣㄷㅏ', '이다', [], ['ida']), 3840 3840 ], 3841 3841 }, 3842 - { 3842 + '-올시다': { 3843 3843 name: '-올시다', 3844 3844 rules: [ 3845 3845 suffixInflection('ㅇㅏㄴㅣㅇㅗㄹㅅㅣㄷㅏ', '아니다', [], ['adj']), 3846 3846 suffixInflection('ㅇㅣㅇㅗㄹㅅㅣㄷㅏ', '이다', [], ['ida']), 3847 3847 ], 3848 3848 }, 3849 - { 3850 - name: '-(으)옵-', 3849 + '-(으)옵': { 3850 + name: '-(으)옵', 3851 3851 rules: [ 3852 3852 suffixInflection('ㅇㅗㅂ', 'ㄷㅏ', ['euob'], ['v', 'adj', 'ida']), 3853 3853 suffixInflection('ㅇㅡㅇㅗㅂ', 'ㄷㅏ', ['euob'], ['v', 'adj']), ··· 3860 3860 suffixInflection('ㅇㅡㅇㅗㅂ', '', ['euob'], ['p', 'f']), 3861 3861 ], 3862 3862 }, 3863 - { 3863 + '-(으)옵니까': { 3864 3864 name: '-(으)옵니까', 3865 3865 rules: [ 3866 3866 suffixInflection('ㅇㅗㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3874 3874 suffixInflection('ㅇㅡㅇㅗㅂㄴㅣㄲㅏ', '', [], ['p', 'f']), 3875 3875 ], 3876 3876 }, 3877 - { 3877 + '-(으)옵니다': { 3878 3878 name: '-(으)옵니다', 3879 3879 rules: [ 3880 3880 suffixInflection('ㅇㅗㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3888 3888 suffixInflection('ㅇㅡㅇㅗㅂㄴㅣㄷㅏ', '', [], ['p', 'f']), 3889 3889 ], 3890 3890 }, 3891 - { 3891 + '-(으)옵디까': { 3892 3892 name: '-(으)옵디까', 3893 3893 rules: [ 3894 3894 suffixInflection('ㅇㅗㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3902 3902 suffixInflection('ㅇㅡㅇㅗㅂㄷㅣㄲㅏ', '', [], ['p', 'f']), 3903 3903 ], 3904 3904 }, 3905 - { 3905 + '-(으)옵디다': { 3906 3906 name: '-(으)옵디다', 3907 3907 rules: [ 3908 3908 suffixInflection('ㅇㅗㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3916 3916 suffixInflection('ㅇㅡㅇㅗㅂㄷㅣㄷㅏ', '', [], ['p', 'f']), 3917 3917 ], 3918 3918 }, 3919 - { 3919 + '-(으)옵소서': { 3920 3920 name: '-(으)옵소서', 3921 3921 rules: [ 3922 3922 suffixInflection('ㅇㅗㅂㅅㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3930 3930 suffixInflection('ㅇㅡㅇㅗㅂㅅㅗㅅㅓ', '', [], ['p', 'f']), 3931 3931 ], 3932 3932 }, 3933 - { 3933 + '-(으)와': { 3934 3934 name: '-(으)와', 3935 3935 rules: [ 3936 3936 suffixInflection('ㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3944 3944 suffixInflection('ㅇㅡㅇㅗㅏ', '', [], ['p', 'f']), 3945 3945 ], 3946 3946 }, 3947 - { 3947 + '-(으)외다': { 3948 3948 name: '-(으)외다', 3949 3949 rules: [ 3950 3950 suffixInflection('ㅇㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3958 3958 suffixInflection('ㅇㅡㅇㅗㅣㄷㅏ', '', [], ['p', 'f']), 3959 3959 ], 3960 3960 }, 3961 - { 3961 + '-요': { 3962 3962 name: '-요', 3963 3963 rules: [ 3964 3964 suffixInflection('ㅇㅏㄴㅣㅇㅛ', '아니다', [], ['ida']), 3965 3965 suffixInflection('ㅇㅛ', 'ㄷㅏ', [], ['ida']), 3966 3966 ], 3967 3967 }, 3968 - { 3968 + '-(으)우': { 3969 3969 name: '-(으)우', 3970 3970 rules: [ 3971 3971 suffixInflection('ㅇㅜ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 3979 3979 suffixInflection('ㅇㅡㅇㅜ', '', [], ['p', 'f']), 3980 3980 ], 3981 3981 }, 3982 - { 3982 + '-(으)이': { 3983 3983 name: '-(으)이', 3984 3984 rules: [ 3985 3985 suffixInflection('ㅇㅣ', 'ㄷㅏ', [], ['adj']), ··· 3988 3988 suffixInflection('ㅇㅡㅣ', 'ㄷㅏ', [], ['adj']), 3989 3989 ], 3990 3990 }, 3991 - { 3991 + '-(으)ㄴ들': { 3992 3992 name: '-(으)ㄴ들', 3993 3993 rules: [ 3994 3994 suffixInflection('ㄴㄷㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4001 4001 suffixInflection('ㄴㄷㅡㄹ', '', [], ['eusi']), 4002 4002 ], 4003 4003 }, 4004 - { 4004 + '-(으)ㄴ즉': { 4005 4005 name: '-(으)ㄴ즉', 4006 4006 rules: [ 4007 4007 suffixInflection('ㄴㅈㅡㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4015 4015 suffixInflection('ㅇㅡㄴㅈㅡㄱ', '', [], ['p']), 4016 4016 ], 4017 4017 }, 4018 - { 4018 + '-(으)ㄴ즉슨': { 4019 4019 name: '-(으)ㄴ즉슨', 4020 4020 rules: [ 4021 4021 suffixInflection('ㄴㅈㅡㄱㅅㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4029 4029 suffixInflection('ㅇㅡㄴㅈㅡㄱㅅㅡㄴ', '', [], ['p']), 4030 4030 ], 4031 4031 }, 4032 - { 4032 + '-(으)ㄹ까': { 4033 4033 name: '-(으)ㄹ까', 4034 4034 rules: [ 4035 4035 suffixInflection('ㄹㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4043 4043 suffixInflection('ㅇㅡㄹㄲㅏ', '', [], ['p']), 4044 4044 ], 4045 4045 }, 4046 - { 4046 + '-(으)ㄹ깝쇼': { 4047 4047 name: '-(으)ㄹ깝쇼', 4048 4048 rules: [ 4049 4049 suffixInflection('ㄹㄲㅏㅂㅅㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4057 4057 suffixInflection('ㅇㅡㄹㄲㅏㅂㅅㅛ', '', [], ['p']), 4058 4058 ], 4059 4059 }, 4060 - { 4060 + '-(으)ㄹ꼬': { 4061 4061 name: '-(으)ㄹ꼬', 4062 4062 rules: [ 4063 4063 suffixInflection('ㄹㄲㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4071 4071 suffixInflection('ㅇㅡㄹㄲㅗ', '', [], ['p']), 4072 4072 ], 4073 4073 }, 4074 - { 4074 + '-(으)ㄹ는지': { 4075 4075 name: '-(으)ㄹ는지', 4076 4076 rules: [ 4077 4077 suffixInflection('ㄹㄴㅡㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4085 4085 suffixInflection('ㅇㅡㄹㄴㅡㄴㅈㅣ', '', [], ['p']), 4086 4086 ], 4087 4087 }, 4088 - { 4088 + '-(으)ㄹ데라니': { 4089 4089 name: '-(으)ㄹ데라니', 4090 4090 rules: [ 4091 4091 suffixInflection('ㄹㄷㅔㄹㅏㄴㅣ', 'ㄷㅏ', [], ['adj']), ··· 4098 4098 suffixInflection('ㄹㄷㅔㄹㅏㄴㅣ', '', [], ['eusi']), 4099 4099 ], 4100 4100 }, 4101 - { 4101 + '-(으)ㄹ라': { 4102 4102 name: '-(으)ㄹ라', 4103 4103 rules: [ 4104 4104 suffixInflection('ㄹㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4112 4112 suffixInflection('ㅇㅡㄹㄹㅏ', '', [], ['p']), 4113 4113 ], 4114 4114 }, 4115 - { 4115 + '-(으)ㄹ라고': { 4116 4116 name: '-(으)ㄹ라고', 4117 4117 rules: [ 4118 4118 suffixInflection('ㄹㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4126 4126 suffixInflection('ㅇㅡㄹㄹㅏㄱㅗ', '', [], ['p']), 4127 4127 ], 4128 4128 }, 4129 - { 4129 + '-(으)ㄹ라치면': { 4130 4130 name: '-(으)ㄹ라치면', 4131 4131 rules: [ 4132 4132 suffixInflection('ㄹㄹㅏㅊㅣㅁㅕㄴ', 'ㄷㅏ', [], ['v']), ··· 4138 4138 suffixInflection('ㄹㄹㅏㅊㅣㅁㅕㄴ', '', [], ['eusi']), 4139 4139 ], 4140 4140 }, 4141 - { 4141 + '-(으)ㄹ락': { 4142 4142 name: '-(으)ㄹ락', 4143 4143 rules: [ 4144 4144 suffixInflection('ㄹㄹㅏㄱ ㅁㅏㄹㄹㅏㄱ', 'ㄷㅏ', [], ['v']), ··· 4151 4151 suffixInflection('ㅇㅡㄹㄹㅏㄱ ㅁㅏㄹㄹㅏㄱ', '', [], ['p']), 4152 4152 ], 4153 4153 }, 4154 - { 4154 + '-(으)ㄹ래': { 4155 4155 name: '-(으)ㄹ래', 4156 4156 rules: [ 4157 4157 suffixInflection('ㄹㄹㅐ', 'ㄷㅏ', [], ['v']), ··· 4163 4163 suffixInflection('ㄹㄹㅐ', '', [], ['eusi']), 4164 4164 ], 4165 4165 }, 4166 - { 4166 + '-(으)ㄹ러니': { 4167 4167 name: '-(으)ㄹ러니', 4168 4168 rules: [ 4169 4169 suffixInflection('ㄹㄹㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4177 4177 suffixInflection('ㅇㅡㄹㄹㅓㄴㅣ', '', [], ['p']), 4178 4178 ], 4179 4179 }, 4180 - { 4180 + '-(으)ㄹ러라': { 4181 4181 name: '-(으)ㄹ러라', 4182 4182 rules: [ 4183 4183 suffixInflection('ㄹㄹㅓㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4191 4191 suffixInflection('ㅇㅡㄹㄹㅓㄹㅏ', '', [], ['p']), 4192 4192 ], 4193 4193 }, 4194 - { 4194 + '-(으)ㄹ런가': { 4195 4195 name: '-(으)ㄹ런가', 4196 4196 rules: [ 4197 4197 suffixInflection('ㄹㄹㅓㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4205 4205 suffixInflection('ㅇㅡㄹㄹㅓㄴㄱㅏ', '', [], ['p']), 4206 4206 ], 4207 4207 }, 4208 - { 4208 + '-(으)ㄹ런고': { 4209 4209 name: '-(으)ㄹ런고', 4210 4210 rules: [ 4211 4211 suffixInflection('ㄹㄹㅓㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4219 4219 suffixInflection('ㅇㅡㄹㄹㅓㄴㄱㅗ', '', [], ['p']), 4220 4220 ], 4221 4221 }, 4222 - { 4222 + '-(으)ㄹ런지': { 4223 4223 name: '-(으)ㄹ런지', 4224 4224 rules: [ 4225 4225 suffixInflection('ㄹㄹㅓㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4233 4233 suffixInflection('ㅇㅡㄹㄹㅓㄴㅈㅣ', '', [], ['p']), 4234 4234 ], 4235 4235 }, 4236 - { 4236 + '-(으)ㄹ레': { 4237 4237 name: '-(으)ㄹ레', 4238 4238 rules: [ 4239 4239 suffixInflection('ㄹㄹㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4247 4247 suffixInflection('ㅇㅡㄹㄹㅔ', '', [], ['p']), 4248 4248 ], 4249 4249 }, 4250 - { 4250 + '-(으)ㄹ레라': { 4251 4251 name: '-(으)ㄹ레라', 4252 4252 rules: [ 4253 4253 suffixInflection('ㄹㄹㅔㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4261 4261 suffixInflection('ㅇㅡㄹㄹㅔㄹㅏ', '', [], ['p']), 4262 4262 ], 4263 4263 }, 4264 - { 4264 + '-(으)ㄹ려고': { 4265 4265 name: '-(으)ㄹ려고', 4266 4266 rules: [ 4267 4267 suffixInflection('ㄹㄹㅕㄱㅗ', 'ㄷㅏ', [], ['v']), ··· 4273 4273 suffixInflection('ㄹㄹㅕㄱㅗ', '', [], ['eusi']), 4274 4274 ], 4275 4275 }, 4276 - { 4276 + '-(으)ㄹ망정': { 4277 4277 name: '-(으)ㄹ망정', 4278 4278 rules: [ 4279 4279 suffixInflection('ㄹㅁㅏㅇㅈㅓㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4287 4287 suffixInflection('ㅇㅡㄹㅁㅏㅇㅈㅓㅇ', '', [], ['p']), 4288 4288 ], 4289 4289 }, 4290 - { 4290 + '-(으)ㄹ밖에': { 4291 4291 name: '-(으)ㄹ밖에', 4292 4292 rules: [ 4293 4293 suffixInflection('ㄹㅂㅏㄲㅇㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4301 4301 suffixInflection('ㅇㅡㄹㅂㅏㄲㅇㅔ', '', [], ['p']), 4302 4302 ], 4303 4303 }, 4304 - { 4304 + '-(으)ㄹ뿐더러': { 4305 4305 name: '-(으)ㄹ뿐더러', 4306 4306 rules: [ 4307 4307 suffixInflection('ㄹㅃㅜㄴㄷㅓㄹㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4315 4315 suffixInflection('ㅇㅡㄹㅃㅜㄴㄷㅓㄹㅓ', '', [], ['p']), 4316 4316 ], 4317 4317 }, 4318 - { 4318 + '-(으)ㄹ사': { 4319 4319 name: '-(으)ㄹ사', 4320 4320 rules: [ 4321 4321 suffixInflection('ㄹㅅㅏ', 'ㄷㅏ', [], ['adj']), ··· 4327 4327 suffixInflection('ㄹㅇㅡㄹㅅㅏ', 'ㄷㄷㅏ', [], ['adj']), 4328 4328 ], 4329 4329 }, 4330 - { 4330 + '-(으)ㄹ새': { 4331 4331 name: '-(으)ㄹ새', 4332 4332 rules: [ 4333 4333 suffixInflection('ㄹㅅㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4341 4341 suffixInflection('ㅇㅡㄹㅅㅐ', '', [], ['p']), 4342 4342 ], 4343 4343 }, 4344 - { 4344 + '-(으)ㄹ세': { 4345 4345 name: '-(으)ㄹ세', 4346 4346 rules: [ 4347 4347 suffixInflection('ㄹㅅㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4355 4355 suffixInflection('ㅇㅡㄹㅅㅔ', '', [], ['p']), 4356 4356 ], 4357 4357 }, 4358 - { 4358 + '-(으)ㄹ세라': { 4359 4359 name: '-(으)ㄹ세라', 4360 4360 rules: [ 4361 4361 suffixInflection('ㄹㅅㅔㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4369 4369 suffixInflection('ㅇㅡㄹㅅㅔㄹㅏ', '', [], ['p']), 4370 4370 ], 4371 4371 }, 4372 - { 4372 + '-(으)ㄹ세말이지': { 4373 4373 name: '-(으)ㄹ세말이지', 4374 4374 rules: [ 4375 4375 suffixInflection('ㄹㅅㅔㅁㅏㄹㅇㅣㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4383 4383 suffixInflection('ㅇㅡㄹㅅㅔㅁㅏㄹㅇㅣㅈㅣ', '', [], ['p']), 4384 4384 ], 4385 4385 }, 4386 - { 4386 + '-(으)ㄹ소냐': { 4387 4387 name: '-(으)ㄹ소냐', 4388 4388 rules: [ 4389 4389 suffixInflection('ㄹㅅㅗㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4397 4397 suffixInflection('ㅇㅡㄹㅅㅗㄴㅑ', '', [], ['p']), 4398 4398 ], 4399 4399 }, 4400 - { 4400 + '-(으)ㄹ손가': { 4401 4401 name: '-(으)ㄹ손가', 4402 4402 rules: [ 4403 4403 suffixInflection('ㄹㅅㅗㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4411 4411 suffixInflection('ㅇㅡㄹㅅㅗㄴㄱㅏ', '', [], ['p']), 4412 4412 ], 4413 4413 }, 4414 - { 4414 + '-(으)ㄹ수록': { 4415 4415 name: '-(으)ㄹ수록', 4416 4416 rules: [ 4417 4417 suffixInflection('ㄹㅅㅜㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4425 4425 suffixInflection('ㅇㅡㄹㅅㅜㄹㅗㄱ', '', [], ['p']), 4426 4426 ], 4427 4427 }, 4428 - { 4428 + '-(으)ㄹ시': { 4429 4429 name: '-(으)ㄹ시', 4430 4430 rules: [ 4431 4431 suffixInflection('ㄹㅅㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4439 4439 suffixInflection('ㅇㅡㄹㅅㅣ', '', [], ['p']), 4440 4440 ], 4441 4441 }, 4442 - { 4442 + '-(으)ㄹ시고': { 4443 4443 name: '-(으)ㄹ시고', 4444 4444 rules: [ 4445 4445 suffixInflection('ㄹㅅㅣㄱㅗ', 'ㄷㅏ', [], ['adj', 'ida']), ··· 4453 4453 suffixInflection('ㅇㅡㄹㅅㅣㄱㅗ', '', [], ['p']), 4454 4454 ], 4455 4455 }, 4456 - { 4456 + '-(으)ㄹ싸록': { 4457 4457 name: '-(으)ㄹ싸록', 4458 4458 rules: [ 4459 4459 suffixInflection('ㄹㅆㅏㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4467 4467 suffixInflection('ㅇㅡㄹㅆㅏㄹㅗㄱ', '', [], ['p']), 4468 4468 ], 4469 4469 }, 4470 - { 4470 + '-(으)ㄹ쏘냐': { 4471 4471 name: '-(으)ㄹ쏘냐', 4472 4472 rules: [ 4473 4473 suffixInflection('ㄹㅆㅗㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4481 4481 suffixInflection('ㅇㅡㄹㅆㅗㄴㅑ', '', [], ['p']), 4482 4482 ], 4483 4483 }, 4484 - { 4484 + '-(으)ㄹ쏜가': { 4485 4485 name: '-(으)ㄹ쏜가', 4486 4486 rules: [ 4487 4487 suffixInflection('ㄹㅆㅗㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4495 4495 suffixInflection('ㅇㅡㄹㅆㅗㄴㄱㅏ', '', [], ['p']), 4496 4496 ], 4497 4497 }, 4498 - { 4498 + '-(으)ㄹ이만큼': { 4499 4499 name: '-(으)ㄹ이만큼', 4500 4500 rules: [ 4501 4501 suffixInflection('ㄹㅇㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4509 4509 suffixInflection('ㅇㅡㄹㅇㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p']), 4510 4510 ], 4511 4511 }, 4512 - { 4512 + '-(으)ㄹ작시면': { 4513 4513 name: '-(으)ㄹ작시면', 4514 4514 rules: [ 4515 4515 suffixInflection('ㄹㅈㅏㄱㅅㅣㅁㅕㄴ', 'ㄷㅏ', [], ['v']), ··· 4521 4521 suffixInflection('ㄹㅈㅏㄱㅅㅣㅁㅕㄴ', '', [], ['eusi']), 4522 4522 ], 4523 4523 }, 4524 - { 4524 + '-(으)ㄹ지': { 4525 4525 name: '-(으)ㄹ지', 4526 4526 rules: [ 4527 4527 suffixInflection('ㄹㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4535 4535 suffixInflection('ㅇㅡㄹㅈㅣ', '', [], ['p']), 4536 4536 ], 4537 4537 }, 4538 - { 4538 + '-(으)ㄹ지나': { 4539 4539 name: '-(으)ㄹ지나', 4540 4540 rules: [ 4541 4541 suffixInflection('ㄹㅈㅣㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4549 4549 suffixInflection('ㅇㅡㄹㅈㅣㄴㅏ', '', [], ['p']), 4550 4550 ], 4551 4551 }, 4552 - { 4552 + '-(으)ㄹ지니': { 4553 4553 name: '-(으)ㄹ지니', 4554 4554 rules: [ 4555 4555 suffixInflection('ㄹㅈㅣㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4563 4563 suffixInflection('ㅇㅡㄹㅈㅣㄴㅣ', '', [], ['p']), 4564 4564 ], 4565 4565 }, 4566 - { 4566 + '-(으)ㄹ지니라': { 4567 4567 name: '-(으)ㄹ지니라', 4568 4568 rules: [ 4569 4569 suffixInflection('ㄹㅈㅣㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4577 4577 suffixInflection('ㅇㅡㄹㅈㅣㄴㅣㄹㅏ', '', [], ['p']), 4578 4578 ], 4579 4579 }, 4580 - { 4580 + '-(으)ㄹ지라': { 4581 4581 name: '-(으)ㄹ지라', 4582 4582 rules: [ 4583 4583 suffixInflection('ㄹㅈㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4591 4591 suffixInflection('ㅇㅡㄹㅈㅣㄹㅏ', '', [], ['p']), 4592 4592 ], 4593 4593 }, 4594 - { 4594 + '-(으)ㄹ지라도': { 4595 4595 name: '-(으)ㄹ지라도', 4596 4596 rules: [ 4597 4597 suffixInflection('ㄹㅈㅣㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4605 4605 suffixInflection('ㅇㅡㄹㅈㅣㄹㅏㄷㅗ', '', [], ['p']), 4606 4606 ], 4607 4607 }, 4608 - { 4608 + '-(으)ㄹ지로다': { 4609 4609 name: '-(으)ㄹ지로다', 4610 4610 rules: [ 4611 4611 suffixInflection('ㄹㅈㅣㄹㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4619 4619 suffixInflection('ㅇㅡㄹㅈㅣㄹㅗㄷㅏ', '', [], ['p']), 4620 4620 ], 4621 4621 }, 4622 - { 4622 + '-(으)ㄹ지며': { 4623 4623 name: '-(으)ㄹ지며', 4624 4624 rules: [ 4625 4625 suffixInflection('ㄹㅈㅣㅁㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4633 4633 suffixInflection('ㅇㅡㄹㅈㅣㅁㅕ', '', [], ['p']), 4634 4634 ], 4635 4635 }, 4636 - { 4636 + '-(으)ㄹ지어다': { 4637 4637 name: '-(으)ㄹ지어다', 4638 4638 rules: [ 4639 4639 suffixInflection('ㄹㅈㅣㅇㅓㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 4645 4645 suffixInflection('ㄹㅈㅣㅇㅓㄷㅏ', '', [], ['eusi']), 4646 4646 ], 4647 4647 }, 4648 - { 4648 + '-(으)ㄹ지언정': { 4649 4649 name: '-(으)ㄹ지언정', 4650 4650 rules: [ 4651 4651 suffixInflection('ㄹㅈㅣㅇㅓㄴㅈㅓㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4659 4659 suffixInflection('ㅇㅡㄹㅈㅣㅇㅓㄴㅈㅓㅇ', '', [], ['p']), 4660 4660 ], 4661 4661 }, 4662 - { 4662 + '-(으)ㄹ진대': { 4663 4663 name: '-(으)ㄹ진대', 4664 4664 rules: [ 4665 4665 suffixInflection('ㄹㅈㅣㄴㄷㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4673 4673 suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐ', '', [], ['p']), 4674 4674 ], 4675 4675 }, 4676 - { 4676 + '-(으)ㄹ진대는': { 4677 4677 name: '-(으)ㄹ진대는', 4678 4678 rules: [ 4679 4679 suffixInflection('ㄹㅈㅣㄴㄷㅐㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4687 4687 suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐㄴㅡㄴ', '', [], ['p']), 4688 4688 ], 4689 4689 }, 4690 - { 4690 + '-(으)ㄹ진댄': { 4691 4691 name: '-(으)ㄹ진댄', 4692 4692 rules: [ 4693 4693 suffixInflection('ㄹㅈㅣㄴㄷㅐㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4701 4701 suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐㄴ', '', [], ['p']), 4702 4702 ], 4703 4703 }, 4704 - { 4704 + '-(으)ㄹ진저': { 4705 4705 name: '-(으)ㄹ진저', 4706 4706 rules: [ 4707 4707 suffixInflection('ㄹㅈㅣㄴㅈㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4715 4715 suffixInflection('ㅇㅡㄹㅈㅣㄴㅈㅓ', '', [], ['p']), 4716 4716 ], 4717 4717 }, 4718 - { 4718 + '-(으)ㅁ': { 4719 4719 name: '-(으)ㅁ', 4720 4720 rules: [ 4721 4721 suffixInflection('ㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4729 4729 suffixInflection('ㅇㅡㅁ', '', [], ['p', 'f']), 4730 4730 ], 4731 4731 }, 4732 - { 4732 + '-(으)ㅁ세': { 4733 4733 name: '-(으)ㅁ세', 4734 4734 rules: [ 4735 4735 suffixInflection('ㅁㅅㅔ', 'ㄷㅏ', [], ['v']), ··· 4740 4740 suffixInflection('ㄹㅇㅡㅁㅅㅔ', 'ㄷㄷㅏ', [], ['v']), 4741 4741 ], 4742 4742 }, 4743 - { 4743 + '-(으)ㅁ도': { 4744 4744 name: '-(으)ㅁ도', 4745 4745 rules: [ 4746 4746 suffixInflection('ㅁㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4754 4754 suffixInflection('ㅇㅡㅁㄷㅗ', '', [], ['p', 'f']), 4755 4755 ], 4756 4756 }, 4757 - { 4757 + '-(으)ㅁ에랴': { 4758 4758 name: '-(으)ㅁ에랴', 4759 4759 rules: [ 4760 4760 suffixInflection('ㅁㅇㅔㄹㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), ··· 4768 4768 suffixInflection('ㅇㅡㅁㅇㅔㄹㅑ', '', [], ['p', 'f']), 4769 4769 ], 4770 4770 }, 4771 - { 4771 + '-(으)ㅂ쇼': { 4772 4772 name: '-(으)ㅂ쇼', 4773 4773 rules: [ 4774 4774 suffixInflection('ㅂㅅㅛ', 'ㄷㅏ', [], ['v']), ··· 4779 4779 suffixInflection('ㄹㅇㅡㅂㅅㅛ', 'ㄷㄷㅏ', [], ['v']), 4780 4780 ], 4781 4781 }, 4782 - { 4782 + '-(으)ㅂ시다 1': { 4783 4783 name: '-(으)ㅂ시다', 4784 4784 rules: [ 4785 4785 suffixInflection('ㅂㅅㅣㄷㅏ', 'ㄷㅏ', [], ['v']), ··· 4790 4790 suffixInflection('ㄹㅇㅡㅂㅅㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v']), 4791 4791 ], 4792 4792 }, 4793 - { 4793 + '-(으)ㅂ시다 2': { 4794 4794 name: '-(으)ㅂ시다', 4795 4795 rules: [ 4796 4796 suffixInflection('ㅂㅅㅣㅅㅏ', 'ㄷㅏ', [], ['v']), ··· 4802 4802 suffixInflection('ㅂㅅㅣㅅㅏ', '', [], ['eusi']), 4803 4803 ], 4804 4804 }, 4805 - { 4805 + '-(으)ㅂ시오': { 4806 4806 name: '-(으)ㅂ시오', 4807 4807 rules: [ 4808 4808 suffixInflection('ㅂㅅㅣㅇㅗ', 'ㄷㅏ', [], ['v']), ··· 4813 4813 suffixInflection('ㄹㅇㅡㅂㅅㅣㅇㅗ', 'ㄷㄷㅏ', [], ['v']), 4814 4814 ], 4815 4815 }, 4816 - { 4816 + '-자': { 4817 4817 name: '-자', 4818 4818 rules: [ 4819 4819 suffixInflection('ㅈㅏ', 'ㄷㅏ', [], ['v', 'ida']), 4820 4820 ], 4821 4821 }, 4822 - { 4822 + '-자고': { 4823 4823 name: '-자고', 4824 4824 rules: [ 4825 4825 suffixInflection('ㅈㅏㄱㅗ', 'ㄷㅏ', [], ['v']), 4826 4826 ], 4827 4827 }, 4828 - { 4828 + '-자구': { 4829 4829 name: '-자구', 4830 4830 rules: [ 4831 4831 suffixInflection('ㅈㅏㄱㅜ', 'ㄷㅏ', [], ['v']), 4832 4832 ], 4833 4833 }, 4834 - { 4834 + '-자꾸나': { 4835 4835 name: '-자꾸나', 4836 4836 rules: [ 4837 4837 suffixInflection('ㅈㅏㄲㅜㄴㅏ', 'ㄷㅏ', [], ['v']), 4838 4838 ], 4839 4839 }, 4840 - { 4840 + '-자느니': { 4841 4841 name: '-자느니', 4842 4842 rules: [ 4843 4843 suffixInflection('ㅈㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v']), 4844 4844 ], 4845 4845 }, 4846 - { 4846 + '-자니까': { 4847 4847 name: '-자니까', 4848 4848 rules: [ 4849 4849 suffixInflection('ㅈㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), 4850 4850 ], 4851 4851 }, 4852 - { 4852 + '-자마자': { 4853 4853 name: '-자마자', 4854 4854 rules: [ 4855 4855 suffixInflection('ㅈㅏㅁㅏㅈㅏ', 'ㄷㅏ', [], ['v']), 4856 4856 suffixInflection('ㅈㅏㅁㅏㅈㅏ', '', [], ['eusi']), 4857 4857 ], 4858 4858 }, 4859 - { 4859 + '-자며': { 4860 4860 name: '-자며', 4861 4861 rules: [ 4862 4862 suffixInflection('ㅈㅏㅁㅕ', 'ㄷㅏ', [], ['v']), 4863 4863 ], 4864 4864 }, 4865 - { 4865 + '-자면': { 4866 4866 name: '-자면', 4867 4867 rules: [ 4868 4868 suffixInflection('ㅈㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']), 4869 4869 ], 4870 4870 }, 4871 - { 4871 + '-자면서': { 4872 4872 name: '-자면서', 4873 4873 rules: [ 4874 4874 suffixInflection('ㅈㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v']), 4875 4875 ], 4876 4876 }, 4877 - { 4877 + '-자손': { 4878 4878 name: '-자손', 4879 4879 rules: [ 4880 4880 suffixInflection('ㅈㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v']), 4881 4881 ], 4882 4882 }, 4883 - { 4884 - name: '-자오-', 4883 + '-자오': { 4884 + name: '-자오', 4885 4885 rules: [ 4886 4886 suffixInflection('ㅈㅏㅇㅗ', 'ㄷㅏ', ['jao'], ['v']), 4887 4887 ], 4888 4888 }, 4889 - { 4890 - name: '-자옵-', 4889 + '-자옵': { 4890 + name: '-자옵', 4891 4891 rules: [ 4892 4892 suffixInflection('ㅈㅏㅇㅗㅂ', 'ㄷㅏ', ['jaob'], ['v']), 4893 4893 ], 4894 4894 }, 4895 - { 4896 - name: '-잡-', 4895 + '-잡': { 4896 + name: '-잡', 4897 4897 rules: [ 4898 4898 suffixInflection('ㅈㅏㅂ', 'ㄷㅏ', ['jab'], ['v']), 4899 4899 ], 4900 4900 }, 4901 - { 4901 + '-죠': { 4902 4902 name: '-죠', 4903 4903 rules: [ 4904 4904 suffixInflection('ㅈㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4905 4905 suffixInflection('ㅈㅛ', '', [], ['p', 'f', 'eusi']), 4906 4906 ], 4907 4907 }, 4908 - { 4908 + '-지': { 4909 4909 name: '-지', 4910 4910 rules: [ 4911 4911 suffixInflection('ㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4912 4912 suffixInflection('ㅈㅣ', '', [], ['p', 'f', 'eusi']), 4913 4913 ], 4914 4914 }, 4915 - { 4915 + '-지마는': { 4916 4916 name: '-지마는', 4917 4917 rules: [ 4918 4918 suffixInflection('ㅈㅣㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4919 4919 suffixInflection('ㅈㅣㅁㅏㄴㅡㄴ', '', [], ['p', 'f']), 4920 4920 ], 4921 4921 }, 4922 - { 4922 + '-지만': { 4923 4923 name: '-지만', 4924 4924 rules: [ 4925 4925 suffixInflection('ㅈㅣㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4926 4926 suffixInflection('ㅈㅣㅁㅏㄴ', '', [], ['p', 'f', 'euo', 'euob']), 4927 4927 ], 4928 4928 }, 4929 - { 4929 + '-지만서도': { 4930 4930 name: '-지만서도', 4931 4931 rules: [ 4932 4932 suffixInflection('ㅈㅣㅁㅏㄴㅅㅓㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4933 4933 suffixInflection('ㅈㅣㅁㅏㄴㅅㅓㄷㅗ', '', [], ['p', 'f']), 4934 4934 ], 4935 4935 }, 4936 - { 4936 + '-지요': { 4937 4937 name: '-지요', 4938 4938 rules: [ 4939 4939 suffixInflection('ㅈㅣㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), 4940 4940 suffixInflection('ㅈㅣㅇㅛ', '', [], ['p', 'f', 'eusi']), 4941 4941 ], 4942 4942 }, 4943 - ], 4943 + }, 4944 4944 };
+6 -6
ext/js/language/la/latin-transforms.js
··· 125 125 isDictionaryForm: true, 126 126 }, 127 127 }, 128 - transforms: [ 129 - { 128 + transforms: { 129 + plural: { 130 130 name: 'plural', 131 131 description: 'Plural declension', 132 132 rules: [ ··· 137 137 suffixInflection('a', 'um', ['adj12'], ['adj12']), 138 138 ], 139 139 }, 140 - { 140 + feminine: { 141 141 name: 'feminine', 142 142 description: 'Adjective form', 143 143 rules: [ 144 144 suffixInflection('a', 'us', ['adj12'], ['adj12']), 145 145 ], 146 146 }, 147 - { 147 + neuter: { 148 148 name: 'neuter', 149 149 description: 'Adjective form', 150 150 rules: [ 151 151 suffixInflection('um', 'us', ['adj12'], ['adj12']), 152 152 ], 153 153 }, 154 - { 154 + ablative: { 155 155 name: 'ablative', 156 156 description: 'Ablative case', 157 157 rules: [ 158 158 suffixInflection('o', 'um', ['n2s'], ['n2s']), 159 159 ], 160 160 }, 161 - ], 161 + }, 162 162 };
+22 -8
ext/js/language/language-transformer.js
··· 50 50 51 51 /** @type {import('language-transformer-internal').Transform[]} */ 52 52 const transforms2 = []; 53 - for (let i = 0, ii = transforms.length; i < ii; ++i) { 54 - const {name, rules} = transforms[i]; 53 + 54 + for (const [transformId, transform] of Object.entries(transforms)) { 55 + const {name, description, rules} = transform; 55 56 /** @type {import('language-transformer-internal').Rule[]} */ 56 57 const rules2 = []; 57 58 for (let j = 0, jj = rules.length; j < jj; ++j) { 58 59 const {type, isInflected, deinflect, conditionsIn, conditionsOut} = rules[j]; 59 60 const conditionFlagsIn = this._getConditionFlagsStrict(conditionFlagsMap, conditionsIn); 60 - if (conditionFlagsIn === null) { throw new Error(`Invalid conditionsIn for transform[${i}].rules[${j}]`); } 61 + if (conditionFlagsIn === null) { throw new Error(`Invalid conditionsIn for transform ${transformId}.rules[${j}]`); } 61 62 const conditionFlagsOut = this._getConditionFlagsStrict(conditionFlagsMap, conditionsOut); 62 - if (conditionFlagsOut === null) { throw new Error(`Invalid conditionsOut for transform[${i}].rules[${j}]`); } 63 + if (conditionFlagsOut === null) { throw new Error(`Invalid conditionsOut for transform ${transformId}.rules[${j}]`); } 63 64 rules2.push({ 64 65 type, 65 66 isInflected, ··· 70 71 } 71 72 const isInflectedTests = rules.map((rule) => rule.isInflected); 72 73 const heuristic = new RegExp(isInflectedTests.map((regExp) => regExp.source).join('|')); 73 - transforms2.push({name, rules: rules2, heuristic}); 74 + transforms2.push({id: transformId, name, description, rules: rules2, heuristic}); 74 75 } 75 76 76 77 this._nextFlagIndex = nextFlagIndex; ··· 123 124 for (const transform of this._transforms) { 124 125 if (!transform.heuristic.test(text)) { continue; } 125 126 126 - const {name, rules} = transform; 127 + const {id, rules} = transform; 127 128 for (let j = 0, jj = rules.length; j < jj; ++j) { 128 129 const rule = rules[j]; 129 130 if (!LanguageTransformer.conditionsMatch(conditions, rule.conditionsIn)) { continue; } 130 131 const {isInflected, deinflect} = rule; 131 132 if (!isInflected.test(text)) { continue; } 132 133 133 - const isCycle = trace.some((frame) => frame.transform === name && frame.ruleIndex === j && frame.text === text); 134 + const isCycle = trace.some((frame) => frame.transform === id && frame.ruleIndex === j && frame.text === text); 134 135 if (isCycle) { 135 136 log.warn(new Error(`Cycle detected in transform[${name}] rule[${j}] for text: ${text}\nTrace: ${JSON.stringify(trace)}`)); 136 137 continue; ··· 139 140 results.push(LanguageTransformer.createTransformedText( 140 141 deinflect(text), 141 142 rule.conditionsOut, 142 - this._extendTrace(trace, {transform: name, ruleIndex: j, text}), 143 + this._extendTrace(trace, {transform: id, ruleIndex: j, text}), 143 144 )); 144 145 } 145 146 } 146 147 } 147 148 return results; 149 + } 150 + 151 + /** 152 + * @param {string[]} inflectionRules 153 + * @returns {import('dictionary').InflectionRuleChain} 154 + */ 155 + getUserFacingInflectionRules(inflectionRules) { 156 + return inflectionRules.map((rule) => { 157 + const fullRule = this._transforms.find((transform) => transform.id === rule); 158 + if (typeof fullRule === 'undefined') { return {name: rule}; } 159 + const {name, description} = fullRule; 160 + return description ? {name, description} : {name}; 161 + }); 148 162 } 149 163 150 164 /**
+13
ext/js/language/multi-language-transformer.js
··· 74 74 if (typeof languageTransformer === 'undefined') { return [LanguageTransformer.createTransformedText(sourceText, 0, [])]; } 75 75 return languageTransformer.transform(sourceText); 76 76 } 77 + 78 + /** 79 + * @param {string} language 80 + * @param {string[]} inflectionRules 81 + * @returns {import('dictionary').InflectionRuleChain} 82 + */ 83 + getUserFacingInflectionRules(language, inflectionRules) { 84 + const languageTransformer = this._languageTransformers.get(language); 85 + if (typeof languageTransformer === 'undefined') { 86 + return inflectionRules.map((rule) => ({name: rule})); 87 + } 88 + return languageTransformer.getUserFacingInflectionRules(inflectionRules); 89 + } 77 90 }
+18 -18
ext/js/language/sga/old-irish-transforms.js
··· 15 15 * along with this program. If not, see <https://www.gnu.org/licenses/>. 16 16 */ 17 17 18 - import {suffixInflection, prefixInflection} from '../language-transforms.js'; 18 + import {prefixInflection, suffixInflection} from '../language-transforms.js'; 19 19 20 20 /** 21 21 * @param {boolean} notBeginning ··· 40 40 export const oldIrishTransforms = { 41 41 language: 'sga', 42 42 conditions: {}, 43 - transforms: [ 44 - { 43 + transforms: { 44 + 'nd for nn': { 45 45 name: 'nd for nn', 46 46 description: 'nd for nn', 47 47 rules: [ 48 48 suffixInflection('nd', 'nn', [], []), 49 49 ], 50 50 }, 51 - { 51 + 'cg for c': { 52 52 name: 'cg for c', 53 53 description: 'cg for c', 54 54 rules: [ 55 55 tryAlternateOrthography(false, 'cg', 'c', [], []), 56 56 ], 57 57 }, 58 - { 58 + 'td for t': { 59 59 name: 'td for t', 60 60 description: 'td for t', 61 61 rules: [ 62 62 tryAlternateOrthography(false, 'td', 't', [], []), 63 63 ], 64 64 }, 65 - { 65 + 'pb for p': { 66 66 name: 'pb for p', 67 67 description: 'pb for p', 68 68 rules: [ 69 69 tryAlternateOrthography(false, 'pb', 'p', [], []), 70 70 ], 71 71 }, 72 - { 72 + 'ǽ/æ for é': { 73 73 name: 'ǽ/æ for é', 74 74 description: 'ǽ/æ for é', 75 75 rules: [ ··· 77 77 tryAlternateOrthography(false, 'æ', 'é', [], []), 78 78 ], 79 79 }, 80 - { 80 + 'doubled vowel': { 81 81 name: 'doubled vowel', 82 82 description: 'Doubled Vowel', 83 83 rules: [ ··· 88 88 tryAlternateOrthography(true, 'uu', 'ú', [], []), 89 89 ], 90 90 }, 91 - { 91 + 'doubled consonant': { 92 92 name: 'doubled consonant', 93 93 description: 'Doubled Consonant', 94 94 rules: [ ··· 105 105 tryAlternateOrthography(true, 'ss', 's', [], []), 106 106 ], 107 107 }, 108 - { 108 + 'lenited': { 109 109 name: 'lenited', 110 110 description: 'Non-Beginning Lenition', 111 111 rules: [ ··· 114 114 tryAlternateOrthography(true, 'th', 't', [], []), 115 115 ], 116 116 }, 117 - { 117 + 'lenited (Middle Irish)': { 118 118 name: 'lenited (Middle Irish)', 119 119 description: 'Non-Beginning Lenition (Middle Irish)', 120 120 rules: [ ··· 123 123 tryAlternateOrthography(true, 'dh', 'd', [], []), 124 124 ], 125 125 }, 126 - { 126 + '[IM] nasalized': { 127 127 name: '[IM] nasalized', 128 128 description: 'Nasalized Word', 129 129 rules: [ ··· 134 134 prefixInflection('m-', '', [], []), 135 135 ], 136 136 }, 137 - { 137 + '[IM] nasalized (Middle Irish)': { 138 138 name: '[IM] nasalized (Middle Irish)', 139 139 description: 'Nasalized Word (Middle Irish)', 140 140 rules: [ ··· 143 143 prefixInflection('dt', 'd', [], []), 144 144 ], 145 145 }, 146 - { 146 + '[IM] lenited': { 147 147 name: '[IM] lenited', 148 148 description: 'Lenited Word', 149 149 rules: [ ··· 152 152 prefixInflection('th', 't', [], []), 153 153 ], 154 154 }, 155 - { 155 + '[IM] lenited (Middle Irish)': { 156 156 name: '[IM] lenited (Middle Irish)', 157 157 description: 'Lenited Word (Middle Irish)', 158 158 rules: [ ··· 161 161 prefixInflection('dh', 'd', [], []), 162 162 ], 163 163 }, 164 - { 164 + '[IM] aspirated': { 165 165 name: '[IM] aspirated', 166 166 description: 'Aspirated Word', 167 167 rules: [ ··· 173 173 prefixInflection('h-', '', [], []), 174 174 ], 175 175 }, 176 - { 176 + '[IM] geminated': { 177 177 name: '[IM] geminated', 178 178 description: 'Geminated Word', 179 179 rules: [ ··· 201 201 prefixInflection('s-s', 's', [], []), 202 202 ], 203 203 }, 204 - ], 204 + }, 205 205 };
+33 -33
ext/js/language/sq/albanian-transforms.js
··· 62 62 isDictionaryForm: true, 63 63 }, 64 64 }, 65 - transforms: [ 65 + transforms: { 66 66 // Nouns 67 - { 67 + 'definite': { 68 68 name: 'definite', 69 69 description: 'Definite form of a noun', 70 70 rules: [ ··· 85 85 suffixInflection('ja', 'e', [], ['n']), 86 86 ], 87 87 }, 88 - { 88 + 'singular definite accusative': { 89 89 name: 'singular definite accusative', 90 90 description: 'Singular definite accusative form of a noun', 91 91 rules: [ 92 92 suffixInflection('n', '', [], ['n']), 93 93 ], 94 94 }, 95 - { 95 + 'plural': { 96 96 name: 'plural', 97 97 description: 'Plural form of a noun', 98 98 rules: [ ··· 101 101 ], 102 102 }, 103 103 // Verbs 104 - { 104 + 'present indicative second-person singular': { 105 105 name: 'present indicative second-person singular', 106 106 description: 'Present indicative second-person singular form of a verb', 107 107 rules: [ ··· 111 111 suffixInflection('hesh', 'hem', [], ['v']), 112 112 ], 113 113 }, 114 - { 114 + 'present indicative third-person singular': { 115 115 name: 'present indicative third-person singular', 116 116 description: 'Present indicative third-person singular form of a verb', 117 117 rules: [ ··· 121 121 suffixInflection('het', 'hem', [], ['v']), 122 122 ], 123 123 }, 124 - { 124 + 'present indicative first-person plural': { 125 125 name: 'present indicative first-person plural', 126 126 description: 'Present indicative first-person plural form of a verb', 127 127 rules: [ ··· 130 130 suffixInflection('hemi', 'hem', [], ['v']), 131 131 ], 132 132 }, 133 - { 133 + 'present indicative second-person plural': { 134 134 name: 'present indicative second-person plural', 135 135 description: 'Present indicative second-person plural form of a verb', 136 136 rules: [ ··· 139 139 suffixInflection('heni', 'hem', [], ['v']), 140 140 ], 141 141 }, 142 - { 142 + 'present indicative third-person plural': { 143 143 name: 'present indicative third-person plural', 144 144 description: 'Present indicative third-person plural form of a verb', 145 145 rules: [ ··· 148 148 suffixInflection('hen', 'hem', [], ['v']), 149 149 ], 150 150 }, 151 - { 151 + 'imperfect first-person singular indicative': { 152 152 name: 'imperfect first-person singular indicative', 153 153 description: 'Imperfect first-person singular indicative form of a verb', 154 154 rules: [ ··· 157 157 suffixInflection('hesha', 'hem', [], ['v']), 158 158 ], 159 159 }, 160 - { 160 + 'imperfect second-person singular indicative': { 161 161 name: 'imperfect second-person singular indicative', 162 162 description: 'Imperfect second-person singular indicative form of a verb', 163 163 rules: [ ··· 166 166 suffixInflection('heshe', 'hem', [], ['v']), 167 167 ], 168 168 }, 169 - { 169 + 'imperfect third-person singular indicative': { 170 170 name: 'imperfect third-person singular indicative', 171 171 description: 'Imperfect third-person singular indicative form of a verb', 172 172 rules: [ ··· 175 175 suffixInflection('hej', 'hem', [], ['v']), 176 176 ], 177 177 }, 178 - { 178 + 'imperfect first-person plural indicative': { 179 179 name: 'imperfect first-person plural indicative', 180 180 description: 'Imperfect first-person plural indicative form of a verb', 181 181 rules: [ ··· 184 184 suffixInflection('heshim', 'hem', [], ['v']), 185 185 ], 186 186 }, 187 - { 187 + 'imperfect second-person plural indicative': { 188 188 name: 'imperfect second-person plural indicative', 189 189 description: 'Imperfect second-person plural indicative form of a verb', 190 190 rules: [ ··· 193 193 suffixInflection('heshit', 'hem', [], ['v']), 194 194 ], 195 195 }, 196 - { 196 + 'imperfect third-person plural indicative': { 197 197 name: 'imperfect third-person plural indicative', 198 198 description: 'Imperfect third-person plural indicative form of a verb', 199 199 rules: [ ··· 202 202 suffixInflection('heshin', 'hem', [], ['v']), 203 203 ], 204 204 }, 205 - { 205 + 'aorist first-person singular indicative': { 206 206 name: 'aorist first-person singular indicative', 207 207 description: 'Aorist first-person singular indicative form of a verb', 208 208 rules: [ ··· 211 211 conjugationIISuffixInflection('a', '', [], ['v']), 212 212 ], 213 213 }, 214 - { 214 + 'aorist second-person singular indicative': { 215 215 name: 'aorist second-person singular indicative', 216 216 description: 'Aorist second-person singular indicative form of a verb', 217 217 rules: [ ··· 220 220 conjugationIISuffixInflection('e', '', [], ['v']), 221 221 ], 222 222 }, 223 - { 223 + 'aorist third-person singular indicative': { 224 224 name: 'aorist third-person singular indicative', 225 225 description: 'Aorist third-person singular indicative form of a verb', 226 226 rules: [ ··· 231 231 suffixInflection('ye', 'ej', [], ['v']), 232 232 ], 233 233 }, 234 - { 234 + 'aorist first-person plural indicative': { 235 235 name: 'aorist first-person plural indicative', 236 236 description: 'Aorist first-person plural indicative form of a verb', 237 237 rules: [ ··· 241 241 conjugationIISuffixInflection('ëm', '', [], ['v']), 242 242 ], 243 243 }, 244 - { 244 + 'aorist second-person plural indicative': { 245 245 name: 'aorist second-person plural indicative', 246 246 description: 'Aorist second-person plural indicative form of a verb', 247 247 rules: [ ··· 251 251 conjugationIISuffixInflection('ët', '', [], ['v']), 252 252 ], 253 253 }, 254 - { 254 + 'aorist third-person plural indicative': { 255 255 name: 'aorist third-person plural indicative', 256 256 description: 'Aorist third-person plural indicative form of a verb', 257 257 rules: [ ··· 261 261 conjugationIISuffixInflection('ën', '', [], ['v']), 262 262 ], 263 263 }, 264 - { 264 + 'imperative second-person singular present': { 265 265 name: 'imperative second-person singular present', 266 266 description: 'Imperative second-person singular present form of a verb', 267 267 rules: [ ··· 269 269 suffixInflection('hu', 'hem', [], ['v']), 270 270 ], 271 271 }, 272 - { 272 + 'imperative second-person plural present': { 273 273 name: 'imperative second-person plural present', 274 274 description: 'Imperative second-person plural present form of a verb', 275 275 rules: [ ··· 278 278 suffixInflection('huni', 'hem', [], ['v']), 279 279 ], 280 280 }, 281 - { 281 + 'participle': { 282 282 name: 'participle', 283 283 description: 'Participle form of a verb', 284 284 rules: [ ··· 288 288 suffixInflection('yer', 'ej', [], ['v']), 289 289 ], 290 290 }, 291 - { 291 + 'mediopassive': { 292 292 name: 'mediopassive', 293 293 description: 'Mediopassive form of a verb', 294 294 rules: [ ··· 296 296 suffixInflection('hem', 'j', ['v'], ['v']), 297 297 ], 298 298 }, 299 - { 299 + 'optative first-person singular present': { 300 300 name: 'optative first-person singular present', 301 301 description: 'Optative first-person singular present form of a verb', 302 302 rules: [ 303 303 suffixInflection('fsha', 'j', [], ['v']), 304 304 ], 305 305 }, 306 - { 306 + 'optative second-person singular present': { 307 307 name: 'optative second-person singular present', 308 308 description: 'Optative second-person singular present form of a verb', 309 309 rules: [ 310 310 suffixInflection('fsh', 'j', [], ['v']), 311 311 ], 312 312 }, 313 - { 313 + 'optative third-person singular present': { 314 314 name: 'optative third-person singular present', 315 315 description: 'Optative third-person singular present form of a verb', 316 316 rules: [ 317 317 suffixInflection('ftë', 'j', [], ['v']), 318 318 ], 319 319 }, 320 - { 320 + 'optative first-person plural present': { 321 321 name: 'optative first-person plural present', 322 322 description: 'Optative first-person plural present form of a verb', 323 323 rules: [ 324 324 suffixInflection('fshim', 'j', [], ['v']), 325 325 ], 326 326 }, 327 - { 327 + 'optative second-person plural present': { 328 328 name: 'optative second-person plural present', 329 329 description: 'Optative second-person plural present form of a verb', 330 330 rules: [ 331 331 suffixInflection('fshi', 'j', [], ['v']), 332 332 ], 333 333 }, 334 - { 334 + 'optative third-person plural present': { 335 335 name: 'optative third-person plural present', 336 336 description: 'Optative third-person plural present form of a verb', 337 337 rules: [ 338 338 suffixInflection('fshin', 'j', [], ['v']), 339 339 ], 340 340 }, 341 - { 341 + 'nominalization': { 342 342 name: 'nominalization', 343 343 description: 'Noun form of a verb', 344 344 rules: [ ··· 347 347 suffixInflection('je', '', [], ['v']), 348 348 ], 349 349 }, 350 - ], 350 + }, 351 351 };
+81 -50
ext/js/language/translator.js
··· 70 70 * @returns {Promise<{dictionaryEntries: import('dictionary').TermDictionaryEntry[], originalTextLength: number}>} An object containing dictionary entries and the length of the original source text. 71 71 */ 72 72 async findTerms(mode, text, options) { 73 - const {enabledDictionaryMap, excludeDictionaryDefinitions, sortFrequencyDictionary, sortFrequencyDictionaryOrder} = options; 73 + const {enabledDictionaryMap, excludeDictionaryDefinitions, sortFrequencyDictionary, sortFrequencyDictionaryOrder, language} = options; 74 74 const tagAggregator = new TranslatorTagAggregator(); 75 - let {dictionaryEntries, originalTextLength} = await this._findTermsInternal(text, enabledDictionaryMap, options, tagAggregator); 75 + let {dictionaryEntries, originalTextLength} = await this._findTermsInternal(text, options, tagAggregator); 76 76 77 77 switch (mode) { 78 78 case 'group': 79 79 dictionaryEntries = this._groupDictionaryEntriesByHeadword(dictionaryEntries, tagAggregator); 80 80 break; 81 81 case 'merge': 82 - dictionaryEntries = await this._getRelatedDictionaryEntries(dictionaryEntries, options.mainDictionary, enabledDictionaryMap, tagAggregator); 82 + dictionaryEntries = await this._getRelatedDictionaryEntries(dictionaryEntries, options, tagAggregator); 83 83 break; 84 84 } 85 85 ··· 115 115 if (pronunciations.length > 1) { this._sortTermDictionaryEntrySimpleData(pronunciations); } 116 116 } 117 117 118 - return {dictionaryEntries, originalTextLength}; 118 + const withUserFacingInflections = this._addUserFacingInflections(language, dictionaryEntries); 119 + 120 + return {dictionaryEntries: withUserFacingInflections, originalTextLength}; 119 121 } 120 122 121 123 /** ··· 206 208 207 209 /** 208 210 * @param {string} text 209 - * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap 210 211 * @param {import('translation').FindTermsOptions} options 211 212 * @param {TranslatorTagAggregator} tagAggregator 212 - * @returns {Promise<import('translator').FindTermsResult>} 213 + * @returns {Promise<{dictionaryEntries: import('translation-internal').TermDictionaryEntry[], originalTextLength: number}>} 213 214 */ 214 - async _findTermsInternal(text, enabledDictionaryMap, options, tagAggregator) { 215 - if (options.removeNonJapaneseCharacters) { 215 + async _findTermsInternal(text, options, tagAggregator) { 216 + const {removeNonJapaneseCharacters, enabledDictionaryMap} = options; 217 + if (removeNonJapaneseCharacters) { 216 218 text = this._getJapaneseOnlyText(text); 217 219 } 218 220 if (text.length === 0) { 219 221 return {dictionaryEntries: [], originalTextLength: 0}; 220 222 } 221 223 222 - const deinflections = await this._getDeinflections(text, enabledDictionaryMap, options); 224 + const deinflections = await this._getDeinflections(text, options); 223 225 226 + return this._getDictionaryEntries(deinflections, enabledDictionaryMap, tagAggregator); 227 + } 228 + 229 + /** 230 + * @param {import('translation-internal').DatabaseDeinflection[]} deinflections 231 + * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap 232 + * @param {TranslatorTagAggregator} tagAggregator 233 + * @returns {{dictionaryEntries: import('translation-internal').TermDictionaryEntry[], originalTextLength: number}} 234 + */ 235 + _getDictionaryEntries(deinflections, enabledDictionaryMap, tagAggregator) { 224 236 let originalTextLength = 0; 225 - /** @type {import('dictionary').TermDictionaryEntry[]} */ 237 + /** @type {import('translation-internal').TermDictionaryEntry[]} */ 226 238 const dictionaryEntries = []; 227 239 const ids = new Set(); 228 240 for (const {databaseEntries, originalText, transformedText, deinflectedText, inflectionRuleChainCandidates} of deinflections) { ··· 247 259 ids.add(id); 248 260 } 249 261 } 250 - 251 262 return {dictionaryEntries, originalTextLength}; 252 263 } 253 264 254 265 /** 255 - * @param {import('dictionary').TermDictionaryEntry} existingEntry 256 - * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 266 + * @param {import('translation-internal').TermDictionaryEntry} existingEntry 267 + * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 257 268 */ 258 269 _mergeInflectionRuleChains(existingEntry, inflectionRuleChainCandidates) { 259 270 const existingChains = existingEntry.inflectionRuleChainCandidates; 260 271 261 272 for (const {source, inflectionRules} of inflectionRuleChainCandidates) { 262 - const duplicate = existingChains.find((existingChain) => this._areArraysEqualIgnoreOrder(existingChain.inflectionRules, inflectionRules)); 273 + const duplicate = existingChains.find((existingChain) => { 274 + return this._areArraysEqualIgnoreOrder(existingChain.inflectionRules, inflectionRules); 275 + }); 263 276 if (!duplicate) { 264 277 existingEntry.inflectionRuleChainCandidates.push({source, inflectionRules}); 265 278 } else if (duplicate.source !== source) { ··· 299 312 300 313 /** 301 314 * @param {string} text 302 - * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap 303 315 * @param {import('translation').FindTermsOptions} options 304 316 * @returns {Promise<import('translation-internal').DatabaseDeinflection[]>} 305 317 */ 306 - async _getDeinflections(text, enabledDictionaryMap, options) { 318 + async _getDeinflections(text, options) { 307 319 let deinflections = ( 308 320 options.deinflect ? 309 321 this._getAlgorithmDeinflections(text, options) : ··· 311 323 ); 312 324 if (deinflections.length === 0) { return []; } 313 325 314 - const {matchType, language} = options; 326 + const {matchType, language, enabledDictionaryMap} = options; 315 327 316 328 await this._addEntriesToDeinflections(language, deinflections, enabledDictionaryMap, matchType); 317 329 ··· 455 467 const {trace, conditions} = deinflection; 456 468 const postprocessedTextVariants = this._getTextVariants(deinflection.text, textPostprocessors, [null], sourceCache); 457 469 for (const transformedText of postprocessedTextVariants) { 458 - /** @type {import('dictionary').InflectionRuleChainCandidate} */ 470 + /** @type {import('translation-internal').InflectionRuleChainCandidate} */ 459 471 const inflectionRuleChainCandidate = { 460 472 source: 'algorithm', 461 473 inflectionRules: trace.map((frame) => frame.transform), ··· 577 589 * @param {string} transformedText 578 590 * @param {string} deinflectedText 579 591 * @param {number} conditions 580 - * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 592 + * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 581 593 * @returns {import('translation-internal').DatabaseDeinflection} 582 594 */ 583 595 _createDeinflection(originalText, transformedText, deinflectedText, conditions, inflectionRuleChainCandidates) { ··· 587 599 // Term dictionary entry grouping 588 600 589 601 /** 590 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 591 - * @param {string} mainDictionary 592 - * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap 602 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 603 + * @param {import('translation').FindTermsOptions} options 593 604 * @param {TranslatorTagAggregator} tagAggregator 594 - * @returns {Promise<import('dictionary').TermDictionaryEntry[]>} 605 + * @returns {Promise<import('translation-internal').TermDictionaryEntry[]>} 595 606 */ 596 - async _getRelatedDictionaryEntries(dictionaryEntries, mainDictionary, enabledDictionaryMap, tagAggregator) { 607 + async _getRelatedDictionaryEntries(dictionaryEntries, options, tagAggregator) { 608 + const {mainDictionary, enabledDictionaryMap} = options; 597 609 /** @type {import('translator').SequenceQuery[]} */ 598 610 const sequenceList = []; 599 - /** @type {import('translator').DictionaryEntryGroup[]} */ 611 + /** @type {import('translation-internal').DictionaryEntryGroup[]} */ 600 612 const groupedDictionaryEntries = []; 601 - /** @type {Map<number, import('translator').DictionaryEntryGroup>} */ 613 + /** @type {Map<number, import('translation-internal').DictionaryEntryGroup>} */ 602 614 const groupedDictionaryEntriesMap = new Map(); 603 - /** @type {Map<number, import('dictionary').TermDictionaryEntry>} */ 615 + /** @type {Map<number, import('translation-internal').TermDictionaryEntry>} */ 604 616 const ungroupedDictionaryEntriesMap = new Map(); 605 617 for (const dictionaryEntry of dictionaryEntries) { 606 618 const {definitions: [{id, dictionary, sequences: [sequence]}]} = dictionaryEntry; ··· 642 654 } 643 655 644 656 /** 645 - * @param {import('translator').DictionaryEntryGroup[]} groupedDictionaryEntries 646 - * @param {Map<number, import('dictionary').TermDictionaryEntry>} ungroupedDictionaryEntriesMap 657 + * @param {import('translation-internal').DictionaryEntryGroup[]} groupedDictionaryEntries 658 + * @param {Map<number, import('translation-internal').TermDictionaryEntry>} ungroupedDictionaryEntriesMap 647 659 * @param {import('translator').SequenceQuery[]} sequenceList 648 660 * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap 649 661 * @param {TranslatorTagAggregator} tagAggregator ··· 664 676 } 665 677 666 678 /** 667 - * @param {import('translator').DictionaryEntryGroup[]} groupedDictionaryEntries 668 - * @param {Map<number, import('dictionary').TermDictionaryEntry>} ungroupedDictionaryEntriesMap 679 + * @param {import('translation-internal').DictionaryEntryGroup[]} groupedDictionaryEntries 680 + * @param {Map<number, import('translation-internal').TermDictionaryEntry>} ungroupedDictionaryEntriesMap 669 681 * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap 670 682 * @param {import('translation').TermEnabledDictionaryMap} secondarySearchDictionaryMap 671 683 * @param {TranslatorTagAggregator} tagAggregator ··· 675 687 /** @type {import('dictionary-database').TermExactRequest[]} */ 676 688 const termList = []; 677 689 const targetList = []; 678 - /** @type {Map<string, {groups: import('translator').DictionaryEntryGroup[]}>} */ 690 + /** @type {Map<string, {groups: import('translation-internal').DictionaryEntryGroup[]}>} */ 679 691 const targetMap = new Map(); 680 692 681 693 for (const group of groupedDictionaryEntries) { ··· 733 745 } 734 746 735 747 /** 736 - * @param {Iterable<import('dictionary').TermDictionaryEntry>} dictionaryEntries 748 + * @param {Iterable<import('translation-internal').TermDictionaryEntry>} dictionaryEntries 737 749 * @param {TranslatorTagAggregator} tagAggregator 738 - * @returns {import('dictionary').TermDictionaryEntry[]} 750 + * @returns {import('translation-internal').TermDictionaryEntry[]} 739 751 */ 740 752 _groupDictionaryEntriesByHeadword(dictionaryEntries, tagAggregator) { 741 - /** @type {Map<string, import('dictionary').TermDictionaryEntry[]>} */ 753 + /** @type {Map<string, import('translation-internal').TermDictionaryEntry[]>} */ 742 754 const groups = new Map(); 743 755 for (const dictionaryEntry of dictionaryEntries) { 744 756 const {inflectionRuleChainCandidates, headwords: [{term, reading}]} = dictionaryEntry; ··· 761 773 // Removing data 762 774 763 775 /** 764 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 776 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 765 777 * @param {Set<string>} excludeDictionaryDefinitions 766 778 */ 767 779 _removeExcludedDefinitions(dictionaryEntries, excludeDictionaryDefinitions) { ··· 785 797 } 786 798 787 799 /** 788 - * @param {import('dictionary').TermDictionaryEntry} dictionaryEntry 800 + * @param {import('translation-internal').TermDictionaryEntry} dictionaryEntry 789 801 */ 790 802 _removeUnusedHeadwords(dictionaryEntry) { 791 803 const {definitions, pronunciations, frequencies, headwords} = dictionaryEntry; ··· 1071 1083 // Metadata 1072 1084 1073 1085 /** 1074 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 1086 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 1075 1087 * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap 1076 1088 * @param {TranslatorTagAggregator} tagAggregator 1077 1089 */ ··· 1543 1555 1544 1556 /** 1545 1557 * @param {boolean} isPrimary 1546 - * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 1558 + * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 1547 1559 * @param {number} score 1548 1560 * @param {number} dictionaryIndex 1549 1561 * @param {number} dictionaryPriority ··· 1551 1563 * @param {number} maxOriginalTextLength 1552 1564 * @param {import('dictionary').TermHeadword[]} headwords 1553 1565 * @param {import('dictionary').TermDefinition[]} definitions 1554 - * @returns {import('dictionary').TermDictionaryEntry} 1566 + * @returns {import('translation-internal').TermDictionaryEntry} 1555 1567 */ 1556 1568 _createTermDictionaryEntry(isPrimary, inflectionRuleChainCandidates, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount, maxOriginalTextLength, headwords, definitions) { 1557 1569 return { ··· 1576 1588 * @param {string} originalText 1577 1589 * @param {string} transformedText 1578 1590 * @param {string} deinflectedText 1579 - * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 1591 + * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 1580 1592 * @param {boolean} isPrimary 1581 1593 * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap 1582 1594 * @param {TranslatorTagAggregator} tagAggregator 1583 - * @returns {import('dictionary').TermDictionaryEntry} 1595 + * @returns {import('translation-internal').TermDictionaryEntry} 1584 1596 */ 1585 1597 _createTermDictionaryEntryFromDatabaseEntry(databaseEntry, originalText, transformedText, deinflectedText, inflectionRuleChainCandidates, isPrimary, enabledDictionaryMap, tagAggregator) { 1586 1598 const { ··· 1628 1640 } 1629 1641 1630 1642 /** 1631 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 1643 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 1632 1644 * @param {boolean} checkDuplicateDefinitions 1633 1645 * @param {TranslatorTagAggregator} tagAggregator 1634 - * @returns {import('dictionary').TermDictionaryEntry} 1646 + * @returns {import('translation-internal').TermDictionaryEntry} 1635 1647 */ 1636 1648 _createGroupedDictionaryEntry(dictionaryEntries, checkDuplicateDefinitions, tagAggregator) { 1637 1649 // Headwords are generated before sorting, so that the order of dictionaryEntries can be maintained ··· 1864 1876 } 1865 1877 1866 1878 /** 1867 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 1879 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 1868 1880 */ 1869 1881 _sortTermDictionaryEntries(dictionaryEntries) { 1870 1882 const stringComparer = this._stringComparer; 1871 1883 /** 1872 - * @param {import('dictionary').TermDictionaryEntry} v1 1873 - * @param {import('dictionary').TermDictionaryEntry} v2 1884 + * @param {import('translation-internal').TermDictionaryEntry} v1 1885 + * @param {import('translation-internal').TermDictionaryEntry} v2 1874 1886 * @returns {number} 1875 1887 */ 1876 1888 const compareFunction = (v1, v2) => { ··· 1968 1980 } 1969 1981 1970 1982 /** 1971 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 1983 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 1972 1984 */ 1973 1985 _sortTermDictionaryEntriesById(dictionaryEntries) { 1974 1986 if (dictionaryEntries.length <= 1) { return; } ··· 2033 2045 } 2034 2046 2035 2047 /** 2036 - * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries 2048 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 2037 2049 * @param {string} dictionary 2038 2050 * @param {boolean} ascending 2039 2051 */ ··· 2078 2090 } 2079 2091 2080 2092 /** 2081 - * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 2093 + * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates 2082 2094 * @returns {number} 2083 2095 */ 2084 2096 _getShortestInflectionChainLength(inflectionRuleChainCandidates) { ··· 2088 2100 length = Math.min(length, inflectionRules.length); 2089 2101 } 2090 2102 return length; 2103 + } 2104 + 2105 + 2106 + /** 2107 + * @param {string} language 2108 + * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries 2109 + * @returns {import('dictionary').TermDictionaryEntry[]} 2110 + */ 2111 + _addUserFacingInflections(language, dictionaryEntries) { 2112 + const result = []; 2113 + for (const dictionaryEntry of dictionaryEntries) { 2114 + const {inflectionRuleChainCandidates} = dictionaryEntry; 2115 + const expandedChains = inflectionRuleChainCandidates.map(({source, inflectionRules}) => ({ 2116 + source, 2117 + inflectionRules: this._multiLanguageTransformer.getUserFacingInflectionRules(language, inflectionRules), 2118 + })); 2119 + result.push({...dictionaryEntry, inflectionRuleChainCandidates: expandedChains}); 2120 + } 2121 + return result; 2091 2122 } 2092 2123 2093 2124 // Miscellaneous
+161 -53
test/data/translator-test-results-note-data1.json
··· 4579 4579 { 4580 4580 "source": "algorithm", 4581 4581 "inflectionRules": [ 4582 - "masu stem" 4582 + { 4583 + "name": "masu stem" 4584 + } 4583 4585 ] 4584 4586 } 4585 4587 ], ··· 4895 4897 { 4896 4898 "source": "algorithm", 4897 4899 "inflectionRules": [ 4898 - "masu stem" 4900 + { 4901 + "name": "masu stem" 4902 + } 4899 4903 ] 4900 4904 } 4901 4905 ], ··· 5211 5215 { 5212 5216 "source": "algorithm", 5213 5217 "inflectionRules": [ 5214 - "masu stem" 5218 + { 5219 + "name": "masu stem" 5220 + } 5215 5221 ] 5216 5222 } 5217 5223 ], ··· 5527 5533 { 5528 5534 "source": "algorithm", 5529 5535 "inflectionRules": [ 5530 - "masu stem" 5536 + { 5537 + "name": "masu stem" 5538 + } 5531 5539 ] 5532 5540 } 5533 5541 ], ··· 9718 9726 { 9719 9727 "source": "algorithm", 9720 9728 "inflectionRules": [ 9721 - "masu stem" 9729 + { 9730 + "name": "masu stem" 9731 + } 9722 9732 ] 9723 9733 } 9724 9734 ], ··· 10034 10044 { 10035 10045 "source": "algorithm", 10036 10046 "inflectionRules": [ 10037 - "masu stem" 10047 + { 10048 + "name": "masu stem" 10049 + } 10038 10050 ] 10039 10051 } 10040 10052 ], ··· 11199 11211 { 11200 11212 "source": "algorithm", 11201 11213 "inflectionRules": [ 11202 - "masu stem" 11214 + { 11215 + "name": "masu stem" 11216 + } 11203 11217 ] 11204 11218 } 11205 11219 ], ··· 11515 11529 { 11516 11530 "source": "algorithm", 11517 11531 "inflectionRules": [ 11518 - "masu stem" 11532 + { 11533 + "name": "masu stem" 11534 + } 11519 11535 ] 11520 11536 } 11521 11537 ], ··· 12899 12915 { 12900 12916 "source": "algorithm", 12901 12917 "inflectionRules": [ 12902 - "masu stem" 12918 + { 12919 + "name": "masu stem" 12920 + } 12903 12921 ] 12904 12922 } 12905 12923 ], ··· 13246 13264 { 13247 13265 "source": "algorithm", 13248 13266 "inflectionRules": [ 13249 - "masu stem" 13267 + { 13268 + "name": "masu stem" 13269 + } 13250 13270 ] 13251 13271 } 13252 13272 ], ··· 15003 15023 { 15004 15024 "source": "algorithm", 15005 15025 "inflectionRules": [ 15006 - "masu stem" 15026 + { 15027 + "name": "masu stem" 15028 + } 15007 15029 ] 15008 15030 } 15009 15031 ], ··· 16209 16231 { 16210 16232 "source": "algorithm", 16211 16233 "inflectionRules": [ 16212 - "-te", 16213 - "progressive or perfect", 16214 - "polite", 16215 - "negative", 16216 - "past" 16234 + { 16235 + "name": "-te" 16236 + }, 16237 + { 16238 + "name": "progressive or perfect" 16239 + }, 16240 + { 16241 + "name": "polite" 16242 + }, 16243 + { 16244 + "name": "negative" 16245 + }, 16246 + { 16247 + "name": "past" 16248 + } 16217 16249 ] 16218 16250 } 16219 16251 ], ··· 16637 16669 { 16638 16670 "source": "algorithm", 16639 16671 "inflectionRules": [ 16640 - "-te", 16641 - "progressive or perfect", 16642 - "polite", 16643 - "negative", 16644 - "past" 16672 + { 16673 + "name": "-te" 16674 + }, 16675 + { 16676 + "name": "progressive or perfect" 16677 + }, 16678 + { 16679 + "name": "polite" 16680 + }, 16681 + { 16682 + "name": "negative" 16683 + }, 16684 + { 16685 + "name": "past" 16686 + } 16645 16687 ] 16646 16688 } 16647 16689 ], ··· 17065 17107 { 17066 17108 "source": "algorithm", 17067 17109 "inflectionRules": [ 17068 - "-te", 17069 - "progressive or perfect", 17070 - "polite", 17071 - "negative", 17072 - "past" 17110 + { 17111 + "name": "-te" 17112 + }, 17113 + { 17114 + "name": "progressive or perfect" 17115 + }, 17116 + { 17117 + "name": "polite" 17118 + }, 17119 + { 17120 + "name": "negative" 17121 + }, 17122 + { 17123 + "name": "past" 17124 + } 17073 17125 ] 17074 17126 } 17075 17127 ], ··· 17493 17545 { 17494 17546 "source": "algorithm", 17495 17547 "inflectionRules": [ 17496 - "-te", 17497 - "progressive or perfect", 17498 - "polite", 17499 - "negative", 17500 - "past" 17548 + { 17549 + "name": "-te" 17550 + }, 17551 + { 17552 + "name": "progressive or perfect" 17553 + }, 17554 + { 17555 + "name": "polite" 17556 + }, 17557 + { 17558 + "name": "negative" 17559 + }, 17560 + { 17561 + "name": "past" 17562 + } 17501 17563 ] 17502 17564 } 17503 17565 ], ··· 17921 17983 { 17922 17984 "source": "algorithm", 17923 17985 "inflectionRules": [ 17924 - "masu stem" 17986 + { 17987 + "name": "masu stem" 17988 + } 17925 17989 ] 17926 17990 } 17927 17991 ], ··· 18237 18301 { 18238 18302 "source": "algorithm", 18239 18303 "inflectionRules": [ 18240 - "masu stem" 18304 + { 18305 + "name": "masu stem" 18306 + } 18241 18307 ] 18242 18308 } 18243 18309 ], ··· 18553 18619 { 18554 18620 "source": "algorithm", 18555 18621 "inflectionRules": [ 18556 - "masu stem" 18622 + { 18623 + "name": "masu stem" 18624 + } 18557 18625 ] 18558 18626 } 18559 18627 ], ··· 18869 18937 { 18870 18938 "source": "algorithm", 18871 18939 "inflectionRules": [ 18872 - "masu stem" 18940 + { 18941 + "name": "masu stem" 18942 + } 18873 18943 ] 18874 18944 } 18875 18945 ], ··· 21515 21585 { 21516 21586 "source": "algorithm", 21517 21587 "inflectionRules": [ 21518 - "masu stem" 21588 + { 21589 + "name": "masu stem" 21590 + } 21519 21591 ] 21520 21592 } 21521 21593 ], ··· 21831 21903 { 21832 21904 "source": "algorithm", 21833 21905 "inflectionRules": [ 21834 - "masu stem" 21906 + { 21907 + "name": "masu stem" 21908 + } 21835 21909 ] 21836 21910 } 21837 21911 ], ··· 22147 22221 { 22148 22222 "source": "algorithm", 22149 22223 "inflectionRules": [ 22150 - "masu stem" 22224 + { 22225 + "name": "masu stem" 22226 + } 22151 22227 ] 22152 22228 } 22153 22229 ], ··· 22463 22539 { 22464 22540 "source": "algorithm", 22465 22541 "inflectionRules": [ 22466 - "masu stem" 22542 + { 22543 + "name": "masu stem" 22544 + } 22467 22545 ] 22468 22546 } 22469 22547 ], ··· 25109 25187 { 25110 25188 "source": "algorithm", 25111 25189 "inflectionRules": [ 25112 - "masu stem" 25190 + { 25191 + "name": "masu stem" 25192 + } 25113 25193 ] 25114 25194 } 25115 25195 ], ··· 25425 25505 { 25426 25506 "source": "algorithm", 25427 25507 "inflectionRules": [ 25428 - "masu stem" 25508 + { 25509 + "name": "masu stem" 25510 + } 25429 25511 ] 25430 25512 } 25431 25513 ], ··· 25741 25823 { 25742 25824 "source": "algorithm", 25743 25825 "inflectionRules": [ 25744 - "masu stem" 25826 + { 25827 + "name": "masu stem" 25828 + } 25745 25829 ] 25746 25830 } 25747 25831 ], ··· 26057 26141 { 26058 26142 "source": "algorithm", 26059 26143 "inflectionRules": [ 26060 - "masu stem" 26144 + { 26145 + "name": "masu stem" 26146 + } 26061 26147 ] 26062 26148 } 26063 26149 ], ··· 27015 27101 { 27016 27102 "source": "algorithm", 27017 27103 "inflectionRules": [ 27018 - "masu stem" 27104 + { 27105 + "name": "masu stem" 27106 + } 27019 27107 ] 27020 27108 } 27021 27109 ], ··· 27337 27425 { 27338 27426 "source": "algorithm", 27339 27427 "inflectionRules": [ 27340 - "polite", 27341 - "past" 27428 + { 27429 + "name": "polite" 27430 + }, 27431 + { 27432 + "name": "past" 27433 + } 27342 27434 ] 27343 27435 } 27344 27436 ], ··· 28271 28363 { 28272 28364 "source": "algorithm", 28273 28365 "inflectionRules": [ 28274 - "masu stem" 28366 + { 28367 + "name": "masu stem" 28368 + } 28275 28369 ] 28276 28370 } 28277 28371 ], ··· 30322 30416 { 30323 30417 "source": "both", 30324 30418 "inflectionRules": [ 30325 - "past" 30419 + { 30420 + "name": "past" 30421 + } 30326 30422 ] 30327 30423 }, 30328 30424 { 30329 30425 "source": "algorithm", 30330 30426 "inflectionRules": [ 30331 - "past", 30332 - "kansai-ben" 30427 + { 30428 + "name": "past" 30429 + }, 30430 + { 30431 + "name": "kansai-ben", 30432 + "description": "past form of kansai-ben terms" 30433 + } 30333 30434 ] 30334 30435 } 30335 30436 ], ··· 32831 32932 { 32832 32933 "source": "algorithm", 32833 32934 "inflectionRules": [ 32834 - "adv", 32835 - "kansai-ben" 32935 + { 32936 + "name": "adv" 32937 + }, 32938 + { 32939 + "name": "kansai-ben", 32940 + "description": "-ku stem of kansai-ben adjectives" 32941 + } 32836 32942 ] 32837 32943 } 32838 32944 ], ··· 33184 33290 { 33185 33291 "source": "algorithm", 33186 33292 "inflectionRules": [ 33187 - "-거나" 33293 + { 33294 + "name": "-거나" 33295 + } 33188 33296 ] 33189 33297 } 33190 33298 ],
+173 -57
test/data/translator-test-results.json
··· 2461 2461 { 2462 2462 "source": "algorithm", 2463 2463 "inflectionRules": [ 2464 - "masu stem" 2464 + { 2465 + "name": "masu stem" 2466 + } 2465 2467 ] 2466 2468 } 2467 2469 ], ··· 2633 2635 { 2634 2636 "source": "algorithm", 2635 2637 "inflectionRules": [ 2636 - "masu stem" 2638 + { 2639 + "name": "masu stem" 2640 + } 2637 2641 ] 2638 2642 } 2639 2643 ], ··· 2805 2809 { 2806 2810 "source": "algorithm", 2807 2811 "inflectionRules": [ 2808 - "masu stem" 2812 + { 2813 + "name": "masu stem" 2814 + } 2809 2815 ] 2810 2816 } 2811 2817 ], ··· 2977 2983 { 2978 2984 "source": "algorithm", 2979 2985 "inflectionRules": [ 2980 - "masu stem" 2986 + { 2987 + "name": "masu stem" 2988 + } 2981 2989 ] 2982 2990 } 2983 2991 ], ··· 5231 5239 { 5232 5240 "source": "algorithm", 5233 5241 "inflectionRules": [ 5234 - "masu stem" 5242 + { 5243 + "name": "masu stem" 5244 + } 5235 5245 ] 5236 5246 } 5237 5247 ], ··· 5403 5413 { 5404 5414 "source": "algorithm", 5405 5415 "inflectionRules": [ 5406 - "masu stem" 5416 + { 5417 + "name": "masu stem" 5418 + } 5407 5419 ] 5408 5420 } 5409 5421 ], ··· 5969 5981 { 5970 5982 "source": "algorithm", 5971 5983 "inflectionRules": [ 5972 - "masu stem" 5984 + { 5985 + "name": "masu stem" 5986 + } 5973 5987 ] 5974 5988 } 5975 5989 ], ··· 6141 6155 { 6142 6156 "source": "algorithm", 6143 6157 "inflectionRules": [ 6144 - "masu stem" 6158 + { 6159 + "name": "masu stem" 6160 + } 6145 6161 ] 6146 6162 } 6147 6163 ], ··· 6695 6711 { 6696 6712 "source": "algorithm", 6697 6713 "inflectionRules": [ 6698 - "masu stem" 6714 + { 6715 + "name": "masu stem" 6716 + } 6699 6717 ] 6700 6718 } 6701 6719 ], ··· 6759 6777 { 6760 6778 "source": "algorithm", 6761 6779 "inflectionRules": [ 6762 - "masu stem" 6780 + { 6781 + "name": "masu stem" 6782 + } 6763 6783 ] 6764 6784 } 6765 6785 ], ··· 6823 6843 { 6824 6844 "source": "algorithm", 6825 6845 "inflectionRules": [ 6826 - "masu stem" 6846 + { 6847 + "name": "masu stem" 6848 + } 6827 6849 ] 6828 6850 } 6829 6851 ], ··· 6887 6909 { 6888 6910 "source": "algorithm", 6889 6911 "inflectionRules": [ 6890 - "masu stem" 6912 + { 6913 + "name": "masu stem" 6914 + } 6891 6915 ] 6892 6916 } 6893 6917 ], ··· 7565 7589 { 7566 7590 "source": "algorithm", 7567 7591 "inflectionRules": [ 7568 - "masu stem" 7592 + { 7593 + "name": "masu stem" 7594 + } 7569 7595 ] 7570 7596 } 7571 7597 ], ··· 7785 7811 { 7786 7812 "source": "algorithm", 7787 7813 "inflectionRules": [ 7788 - "masu stem" 7814 + { 7815 + "name": "masu stem" 7816 + } 7789 7817 ] 7790 7818 } 7791 7819 ], ··· 8820 8848 { 8821 8849 "source": "algorithm", 8822 8850 "inflectionRules": [ 8823 - "masu stem" 8851 + { 8852 + "name": "masu stem" 8853 + } 8824 8854 ] 8825 8855 } 8826 8856 ], ··· 9590 9620 { 9591 9621 "source": "algorithm", 9592 9622 "inflectionRules": [ 9593 - "-te", 9594 - "progressive or perfect", 9595 - "polite", 9596 - "negative", 9597 - "past" 9623 + { 9624 + "name": "-te" 9625 + }, 9626 + { 9627 + "name": "progressive or perfect" 9628 + }, 9629 + { 9630 + "name": "polite" 9631 + }, 9632 + { 9633 + "name": "negative" 9634 + }, 9635 + { 9636 + "name": "past" 9637 + } 9598 9638 ] 9599 9639 } 9600 9640 ], ··· 9790 9830 { 9791 9831 "source": "algorithm", 9792 9832 "inflectionRules": [ 9793 - "-te", 9794 - "progressive or perfect", 9795 - "polite", 9796 - "negative", 9797 - "past" 9833 + { 9834 + "name": "-te" 9835 + }, 9836 + { 9837 + "name": "progressive or perfect" 9838 + }, 9839 + { 9840 + "name": "polite" 9841 + }, 9842 + { 9843 + "name": "negative" 9844 + }, 9845 + { 9846 + "name": "past" 9847 + } 9798 9848 ] 9799 9849 } 9800 9850 ], ··· 9990 10040 { 9991 10041 "source": "algorithm", 9992 10042 "inflectionRules": [ 9993 - "-te", 9994 - "progressive or perfect", 9995 - "polite", 9996 - "negative", 9997 - "past" 10043 + { 10044 + "name": "-te" 10045 + }, 10046 + { 10047 + "name": "progressive or perfect" 10048 + }, 10049 + { 10050 + "name": "polite" 10051 + }, 10052 + { 10053 + "name": "negative" 10054 + }, 10055 + { 10056 + "name": "past" 10057 + } 9998 10058 ] 9999 10059 } 10000 10060 ], ··· 10190 10250 { 10191 10251 "source": "algorithm", 10192 10252 "inflectionRules": [ 10193 - "-te", 10194 - "progressive or perfect", 10195 - "polite", 10196 - "negative", 10197 - "past" 10253 + { 10254 + "name": "-te" 10255 + }, 10256 + { 10257 + "name": "progressive or perfect" 10258 + }, 10259 + { 10260 + "name": "polite" 10261 + }, 10262 + { 10263 + "name": "negative" 10264 + }, 10265 + { 10266 + "name": "past" 10267 + } 10198 10268 ] 10199 10269 } 10200 10270 ], ··· 10390 10460 { 10391 10461 "source": "algorithm", 10392 10462 "inflectionRules": [ 10393 - "masu stem" 10463 + { 10464 + "name": "masu stem" 10465 + } 10394 10466 ] 10395 10467 } 10396 10468 ], ··· 10562 10634 { 10563 10635 "source": "algorithm", 10564 10636 "inflectionRules": [ 10565 - "masu stem" 10637 + { 10638 + "name": "masu stem" 10639 + } 10566 10640 ] 10567 10641 } 10568 10642 ], ··· 10734 10808 { 10735 10809 "source": "algorithm", 10736 10810 "inflectionRules": [ 10737 - "masu stem" 10811 + { 10812 + "name": "masu stem" 10813 + } 10738 10814 ] 10739 10815 } 10740 10816 ], ··· 10906 10982 { 10907 10983 "source": "algorithm", 10908 10984 "inflectionRules": [ 10909 - "masu stem" 10985 + { 10986 + "name": "masu stem" 10987 + } 10910 10988 ] 10911 10989 } 10912 10990 ], ··· 12209 12287 { 12210 12288 "source": "algorithm", 12211 12289 "inflectionRules": [ 12212 - "masu stem" 12290 + { 12291 + "name": "masu stem" 12292 + } 12213 12293 ] 12214 12294 } 12215 12295 ], ··· 12381 12461 { 12382 12462 "source": "algorithm", 12383 12463 "inflectionRules": [ 12384 - "masu stem" 12464 + { 12465 + "name": "masu stem" 12466 + } 12385 12467 ] 12386 12468 } 12387 12469 ], ··· 12553 12635 { 12554 12636 "source": "algorithm", 12555 12637 "inflectionRules": [ 12556 - "masu stem" 12638 + { 12639 + "name": "masu stem" 12640 + } 12557 12641 ] 12558 12642 } 12559 12643 ], ··· 12725 12809 { 12726 12810 "source": "algorithm", 12727 12811 "inflectionRules": [ 12728 - "masu stem" 12812 + { 12813 + "name": "masu stem" 12814 + } 12729 12815 ] 12730 12816 } 12731 12817 ], ··· 14028 14114 { 14029 14115 "source": "algorithm", 14030 14116 "inflectionRules": [ 14031 - "masu stem" 14117 + { 14118 + "name": "masu stem" 14119 + } 14032 14120 ] 14033 14121 } 14034 14122 ], ··· 14200 14288 { 14201 14289 "source": "algorithm", 14202 14290 "inflectionRules": [ 14203 - "masu stem" 14291 + { 14292 + "name": "masu stem" 14293 + } 14204 14294 ] 14205 14295 } 14206 14296 ], ··· 14372 14462 { 14373 14463 "source": "algorithm", 14374 14464 "inflectionRules": [ 14375 - "masu stem" 14465 + { 14466 + "name": "masu stem" 14467 + } 14376 14468 ] 14377 14469 } 14378 14470 ], ··· 14544 14636 { 14545 14637 "source": "algorithm", 14546 14638 "inflectionRules": [ 14547 - "masu stem" 14639 + { 14640 + "name": "masu stem" 14641 + } 14548 14642 ] 14549 14643 } 14550 14644 ], ··· 15071 15165 { 15072 15166 "source": "algorithm", 15073 15167 "inflectionRules": [ 15074 - "masu stem" 15168 + { 15169 + "name": "masu stem" 15170 + } 15075 15171 ] 15076 15172 } 15077 15173 ], ··· 15289 15385 { 15290 15386 "source": "algorithm", 15291 15387 "inflectionRules": [ 15292 - "polite", 15293 - "past" 15388 + { 15389 + "name": "polite" 15390 + }, 15391 + { 15392 + "name": "past" 15393 + } 15294 15394 ] 15295 15395 } 15296 15396 ], ··· 15860 15960 { 15861 15961 "source": "algorithm", 15862 15962 "inflectionRules": [ 15863 - "masu stem" 15963 + { 15964 + "name": "masu stem" 15965 + } 15864 15966 ] 15865 15967 } 15866 15968 ], ··· 17068 17170 { 17069 17171 "source": "both", 17070 17172 "inflectionRules": [ 17071 - "past" 17173 + { 17174 + "name": "past" 17175 + } 17072 17176 ] 17073 17177 }, 17074 17178 { 17075 17179 "source": "algorithm", 17076 17180 "inflectionRules": [ 17077 - "past", 17078 - "kansai-ben" 17181 + { 17182 + "name": "past" 17183 + }, 17184 + { 17185 + "name": "kansai-ben", 17186 + "description": "past form of kansai-ben terms" 17187 + } 17079 17188 ] 17080 17189 } 17081 17190 ], ··· 18534 18643 { 18535 18644 "source": "algorithm", 18536 18645 "inflectionRules": [ 18537 - "adv", 18538 - "kansai-ben" 18646 + { 18647 + "name": "adv" 18648 + }, 18649 + { 18650 + "name": "kansai-ben", 18651 + "description": "-ku stem of kansai-ben adjectives" 18652 + } 18539 18653 ] 18540 18654 } 18541 18655 ], ··· 18778 18892 { 18779 18893 "source": "algorithm", 18780 18894 "inflectionRules": [ 18781 - "-거나" 18895 + { 18896 + "name": "-거나" 18897 + } 18782 18898 ] 18783 18899 } 18784 18900 ],
+23 -23
test/language/japanese-transforms.test.js
··· 1108 1108 category: '-ku stem of kansai-ben adjectives', 1109 1109 valid: true, 1110 1110 tests: [ 1111 - {term: '宜しい', source: '宜しゅう', rule: null, reasons: ['adv', 'kansai-ben']}, 1112 - {term: 'よろしい', source: 'よろしゅう', rule: null, reasons: ['adv', 'kansai-ben']}, 1113 - {term: '良い', source: '良う', rule: null, reasons: ['adv', 'kansai-ben']}, 1114 - {term: 'よい', source: 'よう', rule: null, reasons: ['adv', 'kansai-ben']}, 1111 + {term: '宜しい', source: '宜しゅう', rule: null, reasons: ['adv', 'kansai-ben -ku']}, 1112 + {term: 'よろしい', source: 'よろしゅう', rule: null, reasons: ['adv', 'kansai-ben -ku']}, 1113 + {term: '良い', source: '良う', rule: null, reasons: ['adv', 'kansai-ben -ku']}, 1114 + {term: 'よい', source: 'よう', rule: null, reasons: ['adv', 'kansai-ben -ku']}, 1115 1115 ], 1116 1116 }, 1117 1117 { 1118 1118 category: '-te form of kansai-ben adjectives', 1119 1119 valid: true, 1120 1120 tests: [ 1121 - {term: 'よろしい', source: 'よろしゅうて', rule: null, reasons: ['-te', 'kansai-ben']}, 1122 - {term: '宜しい', source: '宜しゅうて', rule: null, reasons: ['-te', 'kansai-ben']}, 1123 - {term: 'よい', source: 'ようて', rule: null, reasons: ['-te', 'kansai-ben']}, 1124 - {term: '良い', source: '良うて', rule: null, reasons: ['-te', 'kansai-ben']}, 1121 + {term: 'よろしい', source: 'よろしゅうて', rule: null, reasons: ['-te', 'kansai-ben adjective -te']}, 1122 + {term: '宜しい', source: '宜しゅうて', rule: null, reasons: ['-te', 'kansai-ben adjective -te']}, 1123 + {term: 'よい', source: 'ようて', rule: null, reasons: ['-te', 'kansai-ben adjective -te']}, 1124 + {term: '良い', source: '良うて', rule: null, reasons: ['-te', 'kansai-ben adjective -te']}, 1125 1125 ], 1126 1126 }, 1127 1127 { 1128 1128 category: 'Negative form of kansai-ben adjectives', 1129 1129 valid: true, 1130 1130 tests: [ 1131 - {term: 'よろしい', source: 'よろしゅうない', rule: null, reasons: ['negative', 'kansai-ben']}, 1132 - {term: '宜しい', source: '宜しゅうない', rule: null, reasons: ['negative', 'kansai-ben']}, 1133 - {term: 'よい', source: 'ようない', rule: null, reasons: ['negative', 'kansai-ben']}, 1134 - {term: '良い', source: '良うない', rule: null, reasons: ['negative', 'kansai-ben']}, 1131 + {term: 'よろしい', source: 'よろしゅうない', rule: null, reasons: ['negative', 'kansai-ben adjective negative']}, 1132 + {term: '宜しい', source: '宜しゅうない', rule: null, reasons: ['negative', 'kansai-ben adjective negative']}, 1133 + {term: 'よい', source: 'ようない', rule: null, reasons: ['negative', 'kansai-ben adjective negative']}, 1134 + {term: '良い', source: '良うない', rule: null, reasons: ['negative', 'kansai-ben adjective negative']}, 1135 1135 ], 1136 1136 }, 1137 1137 { 1138 1138 category: 'Negative form of kansai-ben verbs', 1139 1139 valid: true, 1140 1140 tests: [ 1141 - {term: '食べる', source: '食べへん', rule: null, reasons: ['negative', 'kansai-ben']}, 1142 - {term: '食べる', source: '食べへんかった', rule: null, reasons: ['negative', 'past', 'kansai-ben']}, 1141 + {term: '食べる', source: '食べへん', rule: null, reasons: ['negative', 'kansai-ben negative']}, 1142 + {term: '食べる', source: '食べへんかった', rule: null, reasons: ['negative', 'past', 'kansai-ben negative']}, 1143 1143 ], 1144 1144 }, 1145 1145 { 1146 1146 category: '-te form of kansai-ben verbs', 1147 1147 valid: true, 1148 1148 tests: [ 1149 - {term: '買う', source: '買うて', rule: null, reasons: ['-te', 'kansai-ben']}, 1150 - {term: 'かう', source: 'こうて', rule: null, reasons: ['-te', 'kansai-ben']}, 1151 - {term: 'はう', source: 'ほうて', rule: null, reasons: ['-te', 'kansai-ben']}, 1149 + {term: '買う', source: '買うて', rule: null, reasons: ['-te', 'kansai-ben -te']}, 1150 + {term: 'かう', source: 'こうて', rule: null, reasons: ['-te', 'kansai-ben -te']}, 1151 + {term: 'はう', source: 'ほうて', rule: null, reasons: ['-te', 'kansai-ben -te']}, 1152 1152 ], 1153 1153 }, 1154 1154 { 1155 1155 category: 'past form of kansai-ben terms', 1156 1156 valid: true, 1157 1157 tests: [ 1158 - {term: '買う', source: '買うた', rule: null, reasons: ['past', 'kansai-ben']}, 1159 - {term: 'かう', source: 'こうた', rule: null, reasons: ['past', 'kansai-ben']}, 1160 - {term: 'はう', source: 'ほうた', rule: null, reasons: ['past', 'kansai-ben']}, 1158 + {term: '買う', source: '買うた', rule: null, reasons: ['past', 'kansai-ben past']}, 1159 + {term: 'かう', source: 'こうた', rule: null, reasons: ['past', 'kansai-ben past']}, 1160 + {term: 'はう', source: 'ほうた', rule: null, reasons: ['past', 'kansai-ben past']}, 1161 1161 ], 1162 1162 }, 1163 1163 { 1164 1164 category: '-tara form of kansai-ben terms', 1165 1165 valid: true, 1166 1166 tests: [ 1167 - {term: '買う', source: '買うたら', rule: null, reasons: ['-tara', 'kansai-ben']}, 1168 - {term: 'かう', source: 'こうたら', rule: null, reasons: ['-tara', 'kansai-ben']}, 1169 - {term: 'はう', source: 'ほうたら', rule: null, reasons: ['-tara', 'kansai-ben']}, 1167 + {term: '買う', source: '買うたら', rule: null, reasons: ['-tara', 'kansai-ben -tara']}, 1168 + {term: 'かう', source: 'こうたら', rule: null, reasons: ['-tara', 'kansai-ben -tara']}, 1169 + {term: 'はう', source: 'ほうたら', rule: null, reasons: ['-tara', 'kansai-ben -tara']}, 1170 1170 ], 1171 1171 }, 1172 1172 ];
+1 -1
test/options-util.test.js
··· 605 605 }, 606 606 ], 607 607 profileCurrent: 0, 608 - version: 37, 608 + version: 38, 609 609 global: { 610 610 database: { 611 611 prefixWildcardsSupported: false,
+6 -1
types/ext/dictionary.d.ts
··· 258 258 inflectionRules: InflectionRuleChain; 259 259 }; 260 260 261 - export type InflectionRuleChain = string[]; 261 + export type InflectionRuleChain = InflectionRule[]; 262 + 263 + export type InflectionRule = { 264 + name: string; 265 + description?: string; 266 + }; 262 267 263 268 export type InflectionSource = 'algorithm' | 'dictionary' | 'both'; 264 269
+2
types/ext/language-transformer-internal.d.ts
··· 16 16 */ 17 17 18 18 export type Transform = { 19 + id: string; 19 20 name: string; 20 21 rules: Rule[]; 21 22 heuristic: RegExp; 23 + description?: string; 22 24 }; 23 25 24 26 export type Rule = {
+3 -1
types/ext/language-transformer.d.ts
··· 18 18 export type LanguageTransformDescriptor = { 19 19 language: string; 20 20 conditions: ConditionMapObject; 21 - transforms: Transform[]; 21 + transforms: { 22 + [name: string]: Transform; 23 + }; 22 24 }; 23 25 24 26 export type ConditionMapObject = {
+15 -1
types/ext/translation-internal.d.ts
··· 40 40 emphatic: [collapseEmphatic: boolean, collapseEmphaticFull: boolean][], 41 41 ]; 42 42 43 + export type TermDictionaryEntry = Omit<Dictionary.TermDictionaryEntry, 'inflectionRuleChainCandidates'> & { 44 + inflectionRuleChainCandidates: InflectionRuleChainCandidate[]; 45 + }; 46 + 47 + export type InflectionRuleChainCandidate = { 48 + source: Dictionary.InflectionSource; 49 + inflectionRules: string[]; 50 + }; 51 + 43 52 export type DatabaseDeinflection = { 44 53 originalText: string; 45 54 transformedText: string; 46 55 deinflectedText: string; 47 56 conditions: number; 48 - inflectionRuleChainCandidates: Dictionary.InflectionRuleChainCandidate[]; 57 + inflectionRuleChainCandidates: InflectionRuleChainCandidate[]; 49 58 databaseEntries: DictionaryDatabase.TermEntry[]; 59 + }; 60 + 61 + export type DictionaryEntryGroup = { 62 + ids: Set<number>; 63 + dictionaryEntries: TermDictionaryEntry[]; 50 64 }; 51 65 52 66 export type TextProcessorMap = Map<
-5
types/ext/translator.d.ts
··· 63 63 targets: Dictionary.Tag[][]; 64 64 }; 65 65 66 - export type DictionaryEntryGroup = { 67 - ids: Set<number>; 68 - dictionaryEntries: Dictionary.TermDictionaryEntry[]; 69 - }; 70 - 71 66 export type SequenceQuery = { 72 67 query: number; 73 68 dictionary: string;