diff options
| author | StefanVukovic99 <stefanvukovic44@gmail.com> | 2024-06-03 19:25:51 +0200 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-03 17:25:51 +0000 | 
| commit | 7955fc85ac089d856b44bdea78eccd26ffbd690c (patch) | |
| tree | 6a7cfc6464612f9f129b25fa59a46f9c7c0e72b5 /ext/js | |
| parent | d2fce502ecb00e3c9202295c93fbb8c554ddbd69 (diff) | |
display inflection rule descriptions (#1000)24.6.3.0
* 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
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/data/options-util.js | 9 | ||||
| -rw-r--r-- | ext/js/display/display-generator.js | 8 | ||||
| -rw-r--r-- | ext/js/display/display.js | 30 | ||||
| -rw-r--r-- | ext/js/language/de/german-transforms.js | 14 | ||||
| -rw-r--r-- | ext/js/language/en/english-transforms.js | 36 | ||||
| -rw-r--r-- | ext/js/language/es/spanish-transforms.js | 10 | ||||
| -rw-r--r-- | ext/js/language/ja/japanese-transforms.js | 98 | ||||
| -rw-r--r-- | ext/js/language/ko/korean-transforms.js | 922 | ||||
| -rw-r--r-- | ext/js/language/la/latin-transforms.js | 12 | ||||
| -rw-r--r-- | ext/js/language/language-transformer.js | 30 | ||||
| -rw-r--r-- | ext/js/language/multi-language-transformer.js | 13 | ||||
| -rw-r--r-- | ext/js/language/sga/old-irish-transforms.js | 36 | ||||
| -rw-r--r-- | ext/js/language/sq/albanian-transforms.js | 66 | ||||
| -rw-r--r-- | ext/js/language/translator.js | 131 | 
14 files changed, 757 insertions, 658 deletions
| diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index 074beb4e..5ef30adb 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -545,6 +545,7 @@ export class OptionsUtil {              this._updateVersion35,              this._updateVersion36,              this._updateVersion37, +            this._updateVersion38,          ];          /* eslint-enable @typescript-eslint/unbound-method */          if (typeof targetVersion === 'number' && targetVersion < result.length) { @@ -1305,6 +1306,14 @@ export class OptionsUtil {      }      /** +     *  - Updated `conjugation` handlebars for new inflection chain format. +     *  @type {import('options-util').UpdateFunction} +     */ +    async _updateVersion38(options) { +        await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v38.handlebars'); +    } + +    /**       * @param {string} url       * @returns {Promise<chrome.tabs.Tab>}       */ diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index 6236f749..be87761b 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -401,14 +401,16 @@ export class DisplayGenerator {      }      /** -     * @param {string} inflection +     * @param {import('dictionary').InflectionRule} inflection       * @returns {DocumentFragment}       */      _createTermInflection(inflection) { +        const {name, description} = inflection;          const fragment = this._templates.instantiateFragment('inflection');          const node = this._querySelector(fragment, '.inflection'); -        this._setTextContent(node, inflection); -        node.dataset.reason = inflection; +        this._setTextContent(node, name); +        if (description) { node.title = description; } +        node.dataset.reason = name;          return fragment;      } diff --git a/ext/js/display/display.js b/ext/js/display/display.js index dc6b4713..82d84979 100644 --- a/ext/js/display/display.js +++ b/ext/js/display/display.js @@ -162,6 +162,8 @@ export class Display extends EventDispatcher {          this._contentTextScanner = null;          /** @type {?import('./display-notification.js').DisplayNotification} */          this._tagNotification = null; +        /** @type {?import('./display-notification.js').DisplayNotification} */ +        this._inflectionNotification = null;          /** @type {HTMLElement} */          this._footerNotificationContainer = querySelectorNotNull(document, '#content-footer');          /** @type {OptionToggleHotkeyHandler} */ @@ -181,6 +183,8 @@ export class Display extends EventDispatcher {          /** @type {(event: MouseEvent) => void} */          this._onTagClickBind = this._onTagClick.bind(this);          /** @type {(event: MouseEvent) => void} */ +        this._onInflectionClickBind = this._onInflectionClick.bind(this); +        /** @type {(event: MouseEvent) => void} */          this._onMenuButtonClickBind = this._onMenuButtonClick.bind(this);          /** @type {(event: import('popup-menu').MenuCloseEvent) => void} */          this._onMenuButtonMenuCloseBind = this._onMenuButtonMenuClose.bind(this); @@ -1026,6 +1030,14 @@ export class Display extends EventDispatcher {      /**       * @param {MouseEvent} e       */ +    _onInflectionClick(e) { +        const node = /** @type {HTMLElement} */ (e.currentTarget); +        this._showInflectionNotification(node); +    } + +    /** +     * @param {MouseEvent} e +     */      _onMenuButtonClick(e) {          const node = /** @type {HTMLElement} */ (e.currentTarget); @@ -1086,6 +1098,21 @@ export class Display extends EventDispatcher {      }      /** +     * @param {HTMLSpanElement} inflectionNode +     */ +    _showInflectionNotification(inflectionNode) { +        const description = inflectionNode.title; +        if (!description || !(inflectionNode instanceof HTMLSpanElement)) { return; } + +        if (this._inflectionNotification === null) { +            this._inflectionNotification = this.createNotification(true); +        } + +        this._inflectionNotification.setContent(description); +        this._inflectionNotification.open(); +    } + +    /**       * @param {boolean} animate       */      _hideTagNotification(animate) { @@ -1797,6 +1824,9 @@ export class Display extends EventDispatcher {          for (const node of entry.querySelectorAll('.headword-kanji-link')) {              eventListeners.addEventListener(node, 'click', this._onKanjiLookupBind);          } +        for (const node of entry.querySelectorAll('.inflection[data-reason]')) { +            eventListeners.addEventListener(node, 'click', this._onInflectionClickBind); +        }          for (const node of entry.querySelectorAll('.tag-label')) {              eventListeners.addEventListener(node, 'click', this._onTagClickBind);          } diff --git a/ext/js/language/de/german-transforms.js b/ext/js/language/de/german-transforms.js index 27b13c6a..17ba7a44 100644 --- a/ext/js/language/de/german-transforms.js +++ b/ext/js/language/de/german-transforms.js @@ -64,8 +64,8 @@ export const germanTransforms = {              isDictionaryForm: true,          },      }, -    transforms: [ -        { +    transforms: { +        'nominalization': {              name: 'nominalization',              description: 'Noun formed from a verb',              rules: [ @@ -73,7 +73,7 @@ export const germanTransforms = {                  suffixInflection('lung', 'eln', [], []),              ],          }, -        { +        '-bar': {              name: '-bar',              description: '-able adjective from a verb',              rules: [ @@ -81,26 +81,26 @@ export const germanTransforms = {                  suffixInflection('bar', 'n', [], ['v']), // Lieferbar              ],          }, -        { +        'negative': {              name: 'negative',              description: 'Negation',              rules: [                  prefixInflection('un', '', [], ['adj']),              ],          }, -        { +        'separated prefix': {              name: 'separated prefix',              description: 'Separable prefix',              rules: [                  ...separatedPrefixInflections,              ],          }, -        { +        'zu-infinitive': {              name: 'zu-infinitive',              description: 'zu-infinitive',              rules: [                  ...zuInfinitiveInflections,              ],          }, -    ], +    },  }; diff --git a/ext/js/language/en/english-transforms.js b/ext/js/language/en/english-transforms.js index c8c9c0d9..d9af831b 100644 --- a/ext/js/language/en/english-transforms.js +++ b/ext/js/language/en/english-transforms.js @@ -148,8 +148,8 @@ export const englishTransforms = {              isDictionaryForm: true,          },      }, -    transforms: [ -        { +    transforms: { +        'plural': {              name: 'plural',              description: 'Plural form of a noun',              rules: [ @@ -160,7 +160,7 @@ export const englishTransforms = {                  suffixInflection('ves', 'f', ['np'], ['ns']),              ],          }, -        { +        'possessive': {              name: 'possessive',              description: 'Possessive form of a noun',              rules: [ @@ -168,7 +168,7 @@ export const englishTransforms = {                  suffixInflection('s\'', 's', ['n'], ['n']),              ],          }, -        { +        'past': {              name: 'past',              description: 'Simple past tense of a verb',              rules: [ @@ -176,7 +176,7 @@ export const englishTransforms = {                  ...createPhrasalVerbInflectionsFromSuffixInflections(pastSuffixInflections),              ],          }, -        { +        'ing': {              name: 'ing',              description: 'Present participle of a verb',              rules: [ @@ -184,7 +184,7 @@ export const englishTransforms = {                  ...createPhrasalVerbInflectionsFromSuffixInflections(ingSuffixInflections),              ],          }, -        { +        '3rd pers. sing. pres': {              name: '3rd pers. sing. pres',              description: 'Third person singular present tense of a verb',              rules: [ @@ -192,21 +192,21 @@ export const englishTransforms = {                  ...createPhrasalVerbInflectionsFromSuffixInflections(thirdPersonSgPresentSuffixInflections),              ],          }, -        { +        'interposed object': {              name: 'interposed object',              description: 'Phrasal verb with interposed object',              rules: [                  phrasalVerbInterposedObjectRule,              ],          }, -        { +        'archaic': {              name: 'archaic',              description: 'Archaic form of a word',              rules: [                  suffixInflection('\'d', 'ed', ['v'], ['v']),              ],          }, -        { +        'adverb': {              name: 'adverb',              description: 'Adverb form of an adjective',              rules: [ @@ -215,7 +215,7 @@ export const englishTransforms = {                  suffixInflection('ly', 'le', ['adv'], ['adj']), // 'humbly'              ],          }, -        { +        'comparative': {              name: 'comparative',              description: 'Comparative form of an adjective',              rules: [ @@ -225,7 +225,7 @@ export const englishTransforms = {                  ...doubledConsonantInflection('bdgmnt', 'er', ['adj'], ['adj']),              ],          }, -        { +        'superlative': {              name: 'superlative',              description: 'Superlative form of an adjective',              rules: [ @@ -235,14 +235,14 @@ export const englishTransforms = {                  ...doubledConsonantInflection('bdgmnt', 'est', ['adj'], ['adj']),              ],          }, -        { +        'dropped g': {              name: 'dropped g',              description: 'Dropped g in -ing form of a verb',              rules: [                  suffixInflection('in\'', 'ing', ['v'], ['v']),              ],          }, -        { +        '-y': {              name: '-y',              description: 'Adjective formed from a verb or noun',              rules: [ @@ -251,28 +251,28 @@ export const englishTransforms = {                  ...doubledConsonantInflection('glmnprst', 'y', [], ['n', 'v']), // 'baggy', 'saggy'              ],          }, -        { +        'un-': {              name: 'un-',              description: 'Negative form of an adjective, adverb, or verb',              rules: [                  prefixInflection('un', '', ['adj', 'adv', 'v'], ['adj', 'adv', 'v']),              ],          }, -        { +        'going-to future': {              name: 'going-to future',              description: 'Going-to future tense of a verb',              rules: [                  prefixInflection('going to ', '', ['v'], ['v']),              ],          }, -        { +        'will future': {              name: 'will future',              description: 'Will-future tense of a verb',              rules: [                  prefixInflection('will ', '', ['v'], ['v']),              ],          }, -        { +        'imperative negative': {              name: 'imperative negative',              description: 'Negative imperative form of a verb',              rules: [ @@ -280,5 +280,5 @@ export const englishTransforms = {                  prefixInflection('do not ', '', ['v'], ['v']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/es/spanish-transforms.js b/ext/js/language/es/spanish-transforms.js index f2b503a6..54022fd5 100644 --- a/ext/js/language/es/spanish-transforms.js +++ b/ext/js/language/es/spanish-transforms.js @@ -73,8 +73,8 @@ export const spanishTransforms = {              isDictionaryForm: true,          },      }, -    transforms: [ -        { +    transforms: { +        'plural': {              name: 'plural',              description: 'Plural form of a noun',              rules: [ @@ -85,14 +85,14 @@ export const spanishTransforms = {                  ...[...'aeiou'].map((v) => suffixInflection(`${v}nes`, `${addAccent(v)}n`, ['np'], ['ns'])), // 'canciones' -> canción              ],          }, -        { +        'feminine adjective': {              name: 'feminine adjective',              description: 'feminine form of an adjective',              rules: [                  suffixInflection('a', 'o', ['adj'], ['adj']),              ],          }, -        { +        'present indicative': {              name: 'present indicative',              description: 'Present indicative form of a verb',              rules: [ @@ -167,5 +167,5 @@ export const spanishTransforms = {                  wholeWordInflection('han', 'haber', ['v'], ['v']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/ja/japanese-transforms.js b/ext/js/language/ja/japanese-transforms.js index d5c6fa81..c8f9f671 100644 --- a/ext/js/language/ja/japanese-transforms.js +++ b/ext/js/language/ja/japanese-transforms.js @@ -130,8 +130,8 @@ export const japaneseTransforms = {              isDictionaryForm: false,          },      }, -    transforms: [ -        { +    transforms: { +        '-ba': {              name: '-ba',              description: 'Conditional',              i18n: [ @@ -154,7 +154,7 @@ export const japaneseTransforms = {                  suffixInflection('れば', 'る', ['-ba'], ['v1', 'v5', 'vk', 'vs', 'vz']),              ],          }, -        { +        '-ya': {              name: '-ya',              description: 'Conditional (Contraction)',              i18n: [ @@ -178,7 +178,7 @@ export const japaneseTransforms = {                  suffixInflection('りゃ', 'れば', [], ['-ba']),              ],          }, -        { +        '-cha': {              name: '-cha',              description: 'Contraction of -teha',              i18n: [ @@ -208,7 +208,7 @@ export const japaneseTransforms = {                  suffixInflection('來ちゃ', '來る', ['v5'], ['vk']),              ],          }, -        { +        '-chau': {              name: '-chau',              rules: [                  suffixInflection('ちゃう', 'る', ['v5'], ['v1']), @@ -230,7 +230,7 @@ export const japaneseTransforms = {                  suffixInflection('來ちゃう', '來る', ['v5'], ['vk']),              ],          }, -        { +        '-chimau': {              name: '-chimau',              rules: [                  suffixInflection('ちまう', 'る', ['v5'], ['v1']), @@ -252,14 +252,14 @@ export const japaneseTransforms = {                  suffixInflection('來ちまう', '來る', ['v5'], ['vk']),              ],          }, -        { +        '-shimau': {              name: '-shimau',              rules: [                  suffixInflection('てしまう', 'て', ['v5'], ['-te']),                  suffixInflection('でしまう', 'で', ['v5'], ['-te']),              ],          }, -        { +        '-nasai': {              name: '-nasai',              rules: [                  suffixInflection('なさい', 'る', [], ['v1']), @@ -280,7 +280,7 @@ export const japaneseTransforms = {                  suffixInflection('來なさい', '來る', [], ['vk']),              ],          }, -        { +        '-sou': {              name: '-sou',              rules: [                  suffixInflection('そう', 'い', [], ['adj-i']), @@ -302,7 +302,7 @@ export const japaneseTransforms = {                  suffixInflection('來そう', '來る', [], ['vk']),              ],          }, -        { +        '-sugiru': {              name: '-sugiru',              rules: [                  suffixInflection('すぎる', 'い', ['v1'], ['adj-i']), @@ -324,7 +324,7 @@ export const japaneseTransforms = {                  suffixInflection('來すぎる', '來る', ['v1'], ['vk']),              ],          }, -        { +        '-tai': {              name: '-tai',              rules: [                  suffixInflection('たい', 'る', ['adj-i'], ['v1']), @@ -345,7 +345,7 @@ export const japaneseTransforms = {                  suffixInflection('來たい', '來る', ['adj-i'], ['vk']),              ],          }, -        { +        '-tara': {              name: '-tara',              rules: [                  suffixInflection('かったら', 'い', [], ['adj-i']), @@ -385,7 +385,7 @@ export const japaneseTransforms = {                  suffixInflection('のたもうたら', 'のたまう', [], ['v5']),              ],          }, -        { +        '-tari': {              name: '-tari',              rules: [                  suffixInflection('かったり', 'い', [], ['adj-i']), @@ -425,7 +425,7 @@ export const japaneseTransforms = {                  suffixInflection('のたもうたり', 'のたまう', [], ['v5']),              ],          }, -        { +        '-te': {              name: '-te',              rules: [                  suffixInflection('くて', 'い', ['-te'], ['adj-i']), @@ -466,7 +466,7 @@ export const japaneseTransforms = {                  suffixInflection('まして', 'ます', [], ['v']),              ],          }, -        { +        '-zu': {              name: '-zu',              rules: [                  suffixInflection('ず', 'る', [], ['v1']), @@ -487,7 +487,7 @@ export const japaneseTransforms = {                  suffixInflection('來ず', '來る', [], ['vk']),              ],          }, -        { +        '-nu': {              name: '-nu',              rules: [                  suffixInflection('ぬ', 'る', [], ['v1']), @@ -508,7 +508,7 @@ export const japaneseTransforms = {                  suffixInflection('來ぬ', '來る', [], ['vk']),              ],          }, -        { +        '-n': {              name: '-n',              rules: [                  suffixInflection('ん', 'る', [], ['v1']), @@ -529,7 +529,7 @@ export const japaneseTransforms = {                  suffixInflection('來ん', '來る', [], ['vk']),              ],          }, -        { +        '-mu': {              name: '-mu',              rules: [                  suffixInflection('む', 'る', [], ['v1']), @@ -550,7 +550,7 @@ export const japaneseTransforms = {                  suffixInflection('來む', '來る', [], ['vk']),              ],          }, -        { +        '-zaru': {              name: '-zaru',              rules: [                  suffixInflection('ざる', 'る', [], ['v1']), @@ -571,7 +571,7 @@ export const japaneseTransforms = {                  suffixInflection('來ざる', '來る', [], ['vk']),              ],          }, -        { +        '-neba': {              name: '-neba',              rules: [                  suffixInflection('ねば', 'る', [], ['v1']), @@ -592,13 +592,13 @@ export const japaneseTransforms = {                  suffixInflection('來ねば', '來る', [], ['vk']),              ],          }, -        { +        'adv': {              name: 'adv',              rules: [                  suffixInflection('く', 'い', ['adv'], ['adj-i']),              ],          }, -        { +        'causative': {              name: 'causative',              rules: [                  suffixInflection('させる', 'る', ['v1'], ['v1']), @@ -622,7 +622,7 @@ export const japaneseTransforms = {                  suffixInflection('來させる', '來る', ['v1'], ['vk']),              ],          }, -        { +        'imperative': {              name: 'imperative',              rules: [                  suffixInflection('ろ', 'る', [], ['v1']), @@ -647,13 +647,13 @@ export const japaneseTransforms = {                  suffixInflection('來い', '來る', [], ['vk']),              ],          }, -        { +        'imperative negative': {              name: 'imperative negative',              rules: [                  suffixInflection('な', '', [], ['v']),              ],          }, -        { +        'masu stem': {              name: 'masu stem',              rules: [                  suffixInflection('い', 'いる', [], ['v1d']), @@ -693,7 +693,7 @@ export const japaneseTransforms = {                  suffixInflection('來', '來る', [], ['vk']),              ],          }, -        { +        'negative': {              name: 'negative',              rules: [                  suffixInflection('くない', 'い', ['adj-i'], ['adj-i']), @@ -716,13 +716,13 @@ export const japaneseTransforms = {                  suffixInflection('ません', 'ます', ['v'], ['v']),              ],          }, -        { +        'noun': {              name: 'noun',              rules: [                  suffixInflection('さ', 'い', [], ['adj-i']),              ],          }, -        { +        'passive': {              name: 'passive',              rules: [                  suffixInflection('かれる', 'く', ['v1'], ['v5']), @@ -743,7 +743,7 @@ export const japaneseTransforms = {                  suffixInflection('來られる', '來る', ['v1'], ['vk']),              ],          }, -        { +        'past': {              name: 'past',              rules: [                  suffixInflection('かった', 'い', ['past'], ['adj-i']), @@ -785,7 +785,7 @@ export const japaneseTransforms = {                  suffixInflection('ませんでした', 'ません', ['past'], ['v']),              ],          }, -        { +        'polite': {              name: 'polite',              rules: [                  suffixInflection('ます', 'る', ['v1'], ['v1']), @@ -807,7 +807,7 @@ export const japaneseTransforms = {                  suffixInflection('くあります', 'い', ['v'], ['adj-i']),              ],          }, -        { +        'potential': {              name: 'potential',              rules: [                  suffixInflection('れる', 'る', ['v1'], ['v1', 'v5']), @@ -826,7 +826,7 @@ export const japaneseTransforms = {                  suffixInflection('來れる', '來る', ['v1'], ['vk']),              ],          }, -        { +        'potential or passive': {              name: 'potential or passive',              rules: [                  suffixInflection('られる', 'る', ['v1'], ['v1']), @@ -839,7 +839,7 @@ export const japaneseTransforms = {                  suffixInflection('來られる', '來る', ['v1'], ['vk']),              ],          }, -        { +        'volitional': {              name: 'volitional',              rules: [                  suffixInflection('よう', 'る', [], ['v1']), @@ -861,7 +861,7 @@ export const japaneseTransforms = {                  suffixInflection('ましょう', 'ます', [], ['v']),              ],          }, -        { +        'causative passive': {              name: 'causative passive',              rules: [                  suffixInflection('かされる', 'く', ['v1'], ['v5']), @@ -874,7 +874,7 @@ export const japaneseTransforms = {                  suffixInflection('わされる', 'う', ['v1'], ['v5']),              ],          }, -        { +        '-toku': {              name: '-toku',              rules: [                  suffixInflection('とく', 'る', ['v5'], ['v1']), @@ -895,7 +895,7 @@ export const japaneseTransforms = {                  suffixInflection('來とく', '來る', ['v5'], ['vk']),              ],          }, -        { +        'progressive or perfect': {              name: 'progressive or perfect',              rules: [                  suffixInflection('ている', 'て', ['v1'], ['-te']), @@ -908,26 +908,26 @@ export const japaneseTransforms = {                  suffixInflection('ないでいる', 'ない', ['v1'], ['adj-i']),              ],          }, -        { +        '-ki': {              name: '-ki',              rules: [                  suffixInflection('き', 'い', [], ['adj-i']),              ],          }, -        { +        '-ge': {              name: '-ge',              rules: [                  suffixInflection('げ', 'い', [], ['adj-i']),                  suffixInflection('気', 'い', [], ['adj-i']),              ],          }, -        { +        '-garu': {              name: '-garu',              rules: [                  suffixInflection('がる', 'い', ['v5'], ['adj-i']),              ],          }, -        { +        '-e': {              name: '-e',              rules: [                  suffixInflection('ねえ', 'ない', [], ['adj-i']), @@ -974,7 +974,7 @@ export const japaneseTransforms = {                  suffixInflection('てぇ', 'たい', [], ['adj-i']),              ],          }, -        { +        'slang': {              name: 'slang',              rules: [                  suffixInflection('てぇてぇ', 'とうとい', [], ['adj-i']), @@ -989,7 +989,7 @@ export const japaneseTransforms = {                  suffixInflection('おやさい', 'おやすみ', [], []),              ],          }, -        { +        'kansai-ben negative': {              name: 'kansai-ben',              description: 'Negative form of kansai-ben verbs',              rules: [ @@ -1001,7 +1001,7 @@ export const japaneseTransforms = {                  suffixInflection('うてへん', 'ってない', [], ['adj-i']),              ],          }, -        { +        'kansai-ben -te': {              name: 'kansai-ben',              description: '-te form of kansai-ben verbs',              rules: [ @@ -1022,7 +1022,7 @@ export const japaneseTransforms = {                  suffixInflection('ゆうて', 'いって', ['-te'], ['-te']),              ],          }, -        { +        'kansai-ben past': {              name: 'kansai-ben',              description: 'past form of kansai-ben terms',              rules: [ @@ -1043,7 +1043,7 @@ export const japaneseTransforms = {                  suffixInflection('ゆうた', 'いった', ['past'], ['past']),              ],          }, -        { +        'kansai-ben -tara': {              name: 'kansai-ben',              description: '-tara form of kansai-ben terms',              rules: [ @@ -1064,7 +1064,7 @@ export const japaneseTransforms = {                  suffixInflection('ゆうたら', 'いったら', [], []),              ],          }, -        { +        'kansai-ben -ku': {              name: 'kansai-ben',              description: '-ku stem of kansai-ben adjectives',              rules: [ @@ -1081,7 +1081,7 @@ export const japaneseTransforms = {                  suffixInflection('しゅう', 'しく', [], ['adv']),              ],          }, -        { +        'kansai-ben adjective -te': {              name: 'kansai-ben',              description: '-te form of kansai-ben adjectives',              rules: [ @@ -1098,7 +1098,7 @@ export const japaneseTransforms = {                  suffixInflection('しゅうて', 'しくて', ['-te'], ['-te']),              ],          }, -        { +        'kansai-ben adjective negative': {              name: 'kansai-ben',              description: 'Negative form of kansai-ben adjectives',              rules: [ @@ -1115,5 +1115,5 @@ export const japaneseTransforms = {                  suffixInflection('しゅうない', 'しくない', ['adj-i'], ['adj-i']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/ko/korean-transforms.js b/ext/js/language/ko/korean-transforms.js index bad3dc4b..4cee4e3f 100644 --- a/ext/js/language/ko/korean-transforms.js +++ b/ext/js/language/ko/korean-transforms.js @@ -100,8 +100,8 @@ export const koreanTransforms = {              isDictionaryForm: false,          },      }, -    transforms: [ -        { +    transforms: { +        '어간': {              name: '어간',              description: 'Stem',              rules: [ @@ -140,202 +140,202 @@ export const koreanTransforms = {                  suffixInflection('ㅡ', 'ㅡㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-거나': {              name: '-거나',              rules: [                  suffixInflection('ㄱㅓㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅏ', '', [], ['p', 'f', 'euob', 'eusi']),              ],          }, -        { +        '-거늘': {              name: '-거늘',              rules: [                  suffixInflection('ㄱㅓㄴㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅡㄹ', '', [], ['p', 'f', 'euob', 'eusi']),              ],          }, -        { +        '-거니': {              name: '-거니',              rules: [                  suffixInflection('ㄱㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅣ', '', [], ['p', 'f', 'euob', 'eusi']),              ],          }, -        { +        '-거니와': {              name: '-거니와',              rules: [                  suffixInflection('ㄱㅓㄴㅣㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅣㅇㅗㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-거던': {              name: '-거던',              rules: [                  suffixInflection('ㄱㅓㄷㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄷㅓㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-거드면': {              name: '-거드면',              rules: [                  suffixInflection('ㄱㅓㄷㅡㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄷㅡㅁㅕㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-거든': {              name: '-거든',              rules: [                  suffixInflection('ㄱㅓㄷㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄷㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-거들랑': {              name: '-거들랑',              rules: [                  suffixInflection('ㄱㅓㄷㅡㄹㄹㅏㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄷㅡㄹㄹㅏㅇ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-거라': {              name: '-거라',              rules: [                  suffixInflection('ㄱㅓㄹㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-건': {              name: '-건',              rules: [                  suffixInflection('ㄱㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴ', '', [], ['p', 'f', 'euob', 'eusi']),              ],          }, -        { +        '-건대': {              name: '-건대',              rules: [                  suffixInflection('ㄱㅓㄴㄷㅐ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄱㅓㄴㄷㅐ', '', [], ['p', 'eusi', 'jaob']),              ],          }, -        { +        '-건마는': {              name: '-건마는',              rules: [                  suffixInflection('ㄱㅓㄴㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-건만': {              name: '-건만',              rules: [                  suffixInflection('ㄱㅓㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄴㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-걸랑': {              name: '-걸랑',              rules: [                  suffixInflection('ㄱㅓㄹㄹㅏㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㄹㄹㅏㅇ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-것다': {              name: '-것다',              rules: [                  suffixInflection('ㄱㅓㅅㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㅅㄷㅏ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-것마는': {              name: '-것마는',              rules: [                  suffixInflection('ㄱㅓㅅㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅓㅅㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-게': {              name: '-게',              rules: [                  suffixInflection('ㄱㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅔ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-게끔': {              name: '-게끔',              rules: [                  suffixInflection('ㄱㅔㄲㅡㅁ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄱㅔㄲㅡㅁ', '', [], ['eusi']),              ],          }, -        { +        '-게나': {              name: '-게나',              rules: [                  suffixInflection('ㄱㅔㄴㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄱㅔㄴㅏ', '', [], ['eusi']),              ],          }, -        { +        '-게시리': {              name: '-게시리',              rules: [                  suffixInflection('ㄱㅔㅅㅣㄹㅣ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄱㅔㅅㅣㄹㅣ', '', [], ['eusi']),              ],          }, -        { +        '-겠': {              name: '-겠',              rules: [                  suffixInflection('ㄱㅔㅆ', 'ㄷㅏ', ['f'], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅔㅆ', '', ['f'], ['p', 'eusi']),              ],          }, -        { +        '-고': {              name: '-고',              rules: [                  suffixInflection('ㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅗ', '', [], ['p', 'f', 'eusi', 'saob', 'euob', 'euo', 'sab', 'jaob', 'jab']),              ],          }, -        { +        '-고는 하다': {              name: '-고는 하다',              rules: [                  suffixInflection('ㄱㅗㄴㅡㄴ ㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v']),                  suffixInflection('ㄱㅗㄴㅡㄴ ㅎㅏㄷㅏ', '', ['v'], ['eusi']),              ],          }, -        { +        '-곤 하다': {              name: '-곤 하다',              rules: [                  suffixInflection('ㄱㅗㄴ ㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v']),                  suffixInflection('ㄱㅗㄴ ㅎㅏㄷㅏ', '', ['v'], ['eusi']),              ],          }, -        { +        '-고는': {              name: '-고는',              rules: [                  suffixInflection('ㄱㅗㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄱㅗㄴㅡㄴ', '', [], ['eusi']),              ],          }, -        { +        '-곤': {              name: '-곤',              rules: [                  suffixInflection('ㄱㅗㄴ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄱㅗㄴ', '', [], ['eusi']),              ],          }, -        { +        '-고도': {              name: '-고도',              rules: [                  suffixInflection('ㄱㅗㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅗㄷㅗ', '', [], ['eusi']),              ],          }, -        { +        '-고말고': {              name: '-고말고',              rules: [                  suffixInflection('ㄱㅗㅁㅏㄹㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅗㅁㅏㄹㄱㅗ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-고서': {              name: '-고서',              rules: [                  suffixInflection('ㄱㅗㅅㅓ', 'ㄷㅏ', [], ['v']), @@ -343,14 +343,14 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅏㄴㅣㄱㅗㅅㅓ', 'ㅇㅏㄴㅣㄷㅏ', [], ['adj']),              ],          }, -        { +        '-고야': {              name: '-고야',              rules: [                  suffixInflection('ㄱㅗㅇㅑ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄱㅗㅇㅑ', '', [], ['eusi']),              ],          }, -        { +        '-고자': {              name: '-고자',              rules: [                  suffixInflection('ㄱㅗㅈㅏ', 'ㄷㅏ', [], ['v']), @@ -359,7 +359,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄱㅗㅈㅏ', '없다', [], []),              ],          }, -        { +        '-고저': {              name: '-고저',              rules: [                  suffixInflection('ㄱㅗㅈㅓ', 'ㄷㅏ', [], ['v']), @@ -368,117 +368,117 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄱㅗㅈㅓ', '없다', [], []),              ],          }, -        { +        '-관데': {              name: '-관데',              rules: [                  suffixInflection('ㄱㅗㅏㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅗㅏㄴㄷㅔ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-구나': {              name: '-구나',              rules: [                  suffixInflection('ㄱㅜㄴㅏ', 'ㄷㅏ', [], ['adj', 'ida']),                  suffixInflection('ㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-구려': {              name: '-구려',              rules: [                  suffixInflection('ㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㄹㅕ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-구료': {              name: '-구료',              rules: [                  suffixInflection('ㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-구만': {              name: '-구만',              rules: [                  suffixInflection('ㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-구먼': {              name: '-구먼',              rules: [                  suffixInflection('ㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㅁㅓㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-구면': {              name: '-구면',              rules: [                  suffixInflection('ㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-군': {              name: '-군',              rules: [                  suffixInflection('ㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅜㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-기': {              name: '-기',              rules: [                  suffixInflection('ㄱㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-기로': {              name: '-기로',              rules: [                  suffixInflection('ㄱㅣㄹㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),              ],          }, -        { +        '-기로니': {              name: '-기로니',              rules: [                  suffixInflection('ㄱㅣㄹㅗㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),              ],          }, -        { +        '-기로서': {              name: '-기로서',              rules: [                  suffixInflection('ㄱㅣㄹㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣㄹㅗㅅㅓ', '', [], ['p']),              ],          }, -        { +        '-기로서니': {              name: '-기로서니',              rules: [                  suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㅣ', '', [], ['p']),              ],          }, -        { +        '-기로선들': {              name: '-기로선들',              rules: [                  suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㄷㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣㄹㅗㅅㅓㄴㄷㅡㄹ', '', [], ['p']),              ],          }, -        { +        '-기에': {              name: '-기에',              rules: [                  suffixInflection('ㄱㅣㅇㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣㅇㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-길래': {              name: '-길래',              rules: [                  suffixInflection('ㄱㅣㄹㄹㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄱㅣㄹㄹㅐ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-(으)ㄹ': {              name: '-(으)ㄹ',              rules: [                  suffixInflection('ㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -492,7 +492,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ거': {              name: '-(으)ㄹ거나',              rules: [                  suffixInflection('ㄹㄱㅓㄴㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -506,7 +506,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄱㅓㄴㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)ㄹ걸': {              name: '-(으)ㄹ걸',              rules: [                  suffixInflection('ㄹㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -520,7 +520,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄱㅓㄹ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ게': {              name: '-(으)ㄹ게',              rules: [                  suffixInflection('ㄹㄱㅔ', 'ㄷㅏ', [], ['v']), @@ -531,7 +531,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹㄱㅔ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)ㄹ 거야': {              name: '-(으)ㄹ 거야',              rules: [                  suffixInflection('ㄹ ㄱㅓㅇㅑ', 'ㄷㅏ', [], ['v', 'adj']), @@ -543,7 +543,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅇㅑ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ 거예요': {              name: '-(으)ㄹ 거예요',              rules: [                  suffixInflection('ㄹ ㄱㅓㅇㅖㅇㅛ', 'ㄷㅏ', [], ['v', 'adj']), @@ -555,7 +555,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅇㅖㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ 것이다': {              name: '-(으)ㄹ 것이다',              rules: [                  suffixInflection('ㄹ ㄱㅓㅅㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -567,7 +567,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅅㅇㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ 것입니다': {              name: '-(으)ㄹ 것입니다',              rules: [                  suffixInflection('ㄹ ㄱㅓㅅㅇㅣㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -579,7 +579,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅅㅇㅣㅂㄴㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ 거다': {              name: '-(으)ㄹ 거다',              rules: [                  suffixInflection('ㄹ ㄱㅓㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -591,7 +591,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ 겁니다': {              name: '-(으)ㄹ 겁니다',              rules: [                  suffixInflection('ㄹ ㄱㅓㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -603,7 +603,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹ ㄱㅓㅂㄴㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)ㄹ께': {              name: '-(으)ㄹ께',              rules: [                  suffixInflection('ㄹㄲㅔ', 'ㄷㅏ', [], ['v', 'adj']), @@ -615,7 +615,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹㄲㅔ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)나': {              name: '-(으)나',              rules: [                  suffixInflection('ㄴㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -629,14 +629,14 @@ export const koreanTransforms = {                  suffixInflection('ㄴㅏ', '', [], ['p', 'f', 'eusi', 'sao']),              ],          }, -        { +        '-나니': {              name: '-나니',              rules: [                  suffixInflection('ㄴㅏㄴㅣ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅏㄴㅣ', '', [], ['p', 'f', 'eusi', 'sab', 'euob']),              ],          }, -        { +        '-(으)나마': {              name: '-(으)나마',              rules: [                  suffixInflection('ㄴㅏㅁㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -650,28 +650,28 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅏㅁㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-나이까': {              name: '-나이까',              rules: [                  suffixInflection('ㄴㅏㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅏㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi', 'saob', 'euob']),              ],          }, -        { +        '-나이다': {              name: '-나이다',              rules: [                  suffixInflection('ㄴㅏㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅏㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi', 'saob', 'jaob', 'jab', 'euob']),              ],          }, -        { +        '-남': {              name: '-남',              rules: [                  suffixInflection('ㄴㅏㅁ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅏㅁ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-(으)냐': {              name: '-(으)냐',              rules: [                  suffixInflection('ㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -685,7 +685,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅑ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-(으)냐고': {              name: '-(으)냐고',              rules: [                  suffixInflection('ㄴㅑㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -699,13 +699,13 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅑㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-너라': {              name: '-너라',              rules: [                  suffixInflection('ㄴㅓㄹㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-네': {              name: '-네',              rules: [                  suffixInflection('ㄴㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -713,39 +713,39 @@ export const koreanTransforms = {                  suffixInflection('ㄴㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-노니': {              name: '-노니',              rules: [                  suffixInflection('ㄴㅗㄴㅣ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅗㄴㅣ', '', [], ['p', 'f', 'eusi', 'sab', 'euob']),              ],          }, -        { +        '-노라': {              name: '-노라',              rules: [                  suffixInflection('ㄴㅗㄹㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅗㄹㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-노라고': {              name: '-노라고',              rules: [                  suffixInflection('ㄴㅗㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-노라니': {              name: '-노라니',              rules: [                  suffixInflection('ㄴㅗㄹㅏㄴㅣ', 'ㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-노라니까': {              name: '-노라니까',              rules: [                  suffixInflection('ㄴㅗㄹㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-노라면': {              name: '-노라면',              rules: [                  suffixInflection('ㄴㅗㄹㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']), @@ -754,7 +754,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅗㄹㅏㅁㅕㄴ', '없다', [], []),              ],          }, -        { +        '-(으)뇨': {              name: '-(으)뇨',              rules: [                  suffixInflection('ㄴㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -767,83 +767,83 @@ export const koreanTransforms = {                  suffixInflection('ㄴㅛ', '', [], ['eusi']),              ],          }, -        { +        '-누': {              name: '-누',              rules: [                  suffixInflection('ㄴㅜ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅜ', '', [], ['p', 'f']),              ],          }, -        { +        '-누나': {              name: '-누나',              rules: [                  suffixInflection('ㄴㅜㄴㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅜㄴㅏ', '', [], ['eusi']),              ],          }, -        { +        '-누만': {              name: '-누만',              rules: [                  suffixInflection('ㄴㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅜㅁㅏㄴ', '', [], ['eusi']),              ],          }, -        { +        '-누먼': {              name: '-누먼',              rules: [                  suffixInflection('ㄴㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅜㅁㅓㄴ', '', [], ['eusi']),              ],          }, -        { +        '-느냐': {              name: '-느냐',              rules: [                  suffixInflection('ㄴㅡㄴㅑ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅡㄴㅑ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-느냐고': {              name: '-느냐고',              rules: [                  suffixInflection('ㄴㅡㄴㅑㄱㅗ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅡㄴㅑㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-느뇨': {              name: '-느뇨',              rules: [                  suffixInflection('ㄴㅡㄴㅛ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅡㄴㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-느니': {              name: '-느니',              rules: [                  suffixInflection('ㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄴㅡㄴㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-느니만': {              name: '-느니만',              rules: [                  suffixInflection('ㄴㅡㄴㅣㅁㅏㄴ ㅁㅗㅅㅎㅏㄷㅏ', 'ㄷㅏ', ['v'], ['v', 'adj']),              ],          }, -        { +        '-느라': {              name: '-느라',              rules: [                  suffixInflection('ㄴㅡㄹㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄹㅏ', '', [], ['eusi']),              ],          }, -        { +        '-느라고': {              name: '-느라고',              rules: [                  suffixInflection('ㄴㅡㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄹㅏㄱㅗ', '', [], ['eusi']),              ],          }, -        { +        '-는': {              name: '-는',              rules: [                  suffixInflection('ㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -852,7 +852,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴ', '없다', [], ['adj']),              ],          }, -        { +        '-(으)ㄴ': {              name: '-(으)ㄴ',              rules: [                  suffixInflection('ㄴ', 'ㄷㅏ', [], ['v', 'adj']), @@ -861,7 +861,7 @@ export const koreanTransforms = {                  suffixInflection('ㄴ', '', [], ['eusi', 'f']),              ],          }, -        { +        '-(으/느)ㄴ가': {              name: '-(으/느)ㄴ가',              rules: [                  suffixInflection('ㄴㄱㅏ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -874,7 +874,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅏ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ감': {              name: '-(으/느)ㄴ감',              rules: [                  suffixInflection('ㄴㄱㅏㅁ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -887,7 +887,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅏㅁ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ걸': {              name: '-(으/느)ㄴ걸',              rules: [                  suffixInflection('ㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -900,7 +900,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅓㄹ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ고': {              name: '-(으/느)ㄴ고',              rules: [                  suffixInflection('ㄴㄱㅗ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -913,56 +913,56 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅗ', '없다', [], []),              ],          }, -        { +        '-는구나': {              name: '-는구나',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㄴㅏ', '', [], ['eusi']),              ],          }, -        { +        '-는구려': {              name: '-는구려',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㄹㅕ', '', [], ['eusi']),              ],          }, -        { +        '-는구료': {              name: '-는구료',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㄹㅛ', '', [], ['eusi']),              ],          }, -        { +        '-는구만': {              name: '-는구만',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅏㄴ', '', [], ['eusi']),              ],          }, -        { +        '-는구먼': {              name: '-는구먼',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅓㄴ', '', [], ['eusi']),              ],          }, -        { +        '-는구면': {              name: '-는구면',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㅁㅕㄴ', '', [], ['eusi']),              ],          }, -        { +        '-는군': {              name: '-는군',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㄴ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㄴㅡㄴㄱㅜㄴ', '', [], ['eusi']),              ],          }, -        { +        '-는궈니': {              name: '-는궈니',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅜㅓㄴㅣ', 'ㄷㅏ', [], ['v']), @@ -971,7 +971,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅜㅓㄴㅣ', '없다', [], []),              ],          }, -        { +        '-는과니': {              name: '-는과니',              rules: [                  suffixInflection('ㄴㅡㄴㄱㅗㅏㄴㅣ', 'ㄷㅏ', [], ['v']), @@ -980,7 +980,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄱㅗㅏㄴㅣ', '없다', [], []),              ],          }, -        { +        '-(느)ㄴ다': {              name: '-(느)ㄴ다',              rules: [                  suffixInflection('ㄴㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -989,7 +989,7 @@ export const koreanTransforms = {                  suffixInflection('ㄴㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-((느)ㄴ)다고': {              name: '-((느)ㄴ)다고',              rules: [                  suffixInflection('ㄴㄷㅏㄱㅗ', 'ㄷㅏ', [], ['v']), @@ -1000,7 +1000,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다나': {              name: '-((느)ㄴ)다나',              rules: [                  suffixInflection('ㄴㄷㅏㄴㅏ', 'ㄷㅏ', [], ['v']), @@ -1011,7 +1011,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다네': {              name: '-((느)ㄴ)다네',              rules: [                  suffixInflection('ㄴㄷㅏㄴㅔ', 'ㄷㅏ', [], ['v']), @@ -1022,7 +1022,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다느니': {              name: '-((느)ㄴ)다느니',              rules: [                  suffixInflection('ㄴㄷㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v']), @@ -1033,7 +1033,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㅡㄴㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다니': {              name: '-((느)ㄴ)다니',              rules: [                  suffixInflection('ㄴㄷㅏㄴㅣ', 'ㄷㅏ', [], ['v']), @@ -1044,7 +1044,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다니까': {              name: '-((느)ㄴ)다니까',              rules: [                  suffixInflection('ㄴㄷㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), @@ -1055,7 +1055,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㅣㄲㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다더라': {              name: '-((느)ㄴ)다더라',              rules: [                  suffixInflection('ㄴㄷㅏㄷㅓㄹㅏ', 'ㄷㅏ', [], ['v']), @@ -1066,7 +1066,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄷㅓㄹㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다마는': {              name: '-((느)ㄴ)다마는',              rules: [                  suffixInflection('ㄴㄷㅏㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1077,7 +1077,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다만': {              name: '-((느)ㄴ)다만',              rules: [                  suffixInflection('ㄴㄷㅏㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1088,7 +1088,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다며': {              name: '-((느)ㄴ)다며',              rules: [                  suffixInflection('ㄴㄷㅏㅁㅕ', 'ㄷㅏ', [], ['v']), @@ -1099,7 +1099,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅕ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다면': {              name: '-((느)ㄴ)다면',              rules: [                  suffixInflection('ㄴㄷㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']), @@ -1110,7 +1110,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅕㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다면서': {              name: '-((느)ㄴ)다면서',              rules: [                  suffixInflection('ㄴㄷㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v']), @@ -1121,7 +1121,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅕㄴㅅㅓ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다손': {              name: '-((느)ㄴ)다손',              rules: [                  suffixInflection('ㄴㄷㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v']), @@ -1132,7 +1132,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁㅕㄴㅅㅗㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다오': {              name: '-((느)ㄴ)다오',              rules: [                  suffixInflection('ㄴㄷㅏㅇㅗ', 'ㄷㅏ', [], ['v']), @@ -1143,7 +1143,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅇㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)다지': {              name: '-((느)ㄴ)다지',              rules: [                  suffixInflection('ㄴㄷㅏㅈㅣ', 'ㄷㅏ', [], ['v']), @@ -1154,7 +1154,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅈㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)단다': {              name: '-((느)ㄴ)단다',              rules: [                  suffixInflection('ㄴㄷㅏㄴㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -1165,7 +1165,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㄴㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)담': {              name: '-((느)ㄴ)담',              rules: [                  suffixInflection('ㄴㄷㅏㅁ', 'ㄷㅏ', [], ['v']), @@ -1176,7 +1176,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅁ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)답니까': {              name: '-((느)ㄴ)답니까',              rules: [                  suffixInflection('ㄴㄷㅏㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), @@ -1187,7 +1187,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅂㄴㅣㄲㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)답니다': {              name: '-((느)ㄴ)답니다',              rules: [                  suffixInflection('ㄴㄷㅏㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -1198,7 +1198,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅂㄴㅣㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)답시고': {              name: '-((느)ㄴ)답시고',              rules: [                  suffixInflection('ㄴㄷㅏㅂㅅㅣㄱㅗ', 'ㄷㅏ', [], ['v']), @@ -1209,7 +1209,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅏㅂㅅㅣㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)대': {              name: '-((느)ㄴ)대',              rules: [                  suffixInflection('ㄴㄷㅐ', 'ㄷㅏ', [], ['v']), @@ -1220,7 +1220,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅐ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-((느)ㄴ)대요': {              name: '-((느)ㄴ)대요',              rules: [                  suffixInflection('ㄴㄷㅐㅇㅛ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1233,7 +1233,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅐㅇㅛ', '없다', [], []),              ],          }, -        { +        '-((느)ㄴ)댄다': {              name: '-((느)ㄴ)댄다',              rules: [                  suffixInflection('ㄴㄷㅐㄴㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -1244,7 +1244,7 @@ export const koreanTransforms = {                  suffixInflection('ㄷㅐㄴㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-(으/느)ㄴ데': {              name: '-(으/느)ㄴ데',              rules: [                  suffixInflection('ㄴㄷㅔ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -1257,7 +1257,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅔ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ뎁쇼': {              name: '-(으/느)ㄴ뎁쇼',              rules: [                  suffixInflection('ㄴㄷㅔㅂㅅㅛ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -1270,13 +1270,13 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㄷㅔㅂㅅㅛ', '', [], []),              ],          }, -        { +        '-는도다': {              name: '-는도다',              rules: [                  suffixInflection('ㄴㅡㄴㄷㅗㄷㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으/느)ㄴ바': {              name: '-(으/느)ㄴ바',              rules: [                  suffixInflection('ㄴㅂㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1290,7 +1290,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅂㅏ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ지': {              name: '-(으/느)ㄴ지',              rules: [                  suffixInflection('ㄴㅈㅣ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -1303,7 +1303,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ지고': {              name: '-(으/느)ㄴ지고',              rules: [                  suffixInflection('ㄴㅈㅣㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1316,7 +1316,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣㄱㅗ', '없다', [], []),              ],          }, -        { +        '-(으/느)ㄴ지라': {              name: '-(으/느)ㄴ지라',              rules: [                  suffixInflection('ㄴㅈㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1329,7 +1329,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄴㅡㄴㅈㅣㄹㅏ', '없다', [], []),              ],          }, -        { +        '-(으)니': {              name: '-(으)니',              rules: [                  suffixInflection('ㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1342,7 +1342,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣ', '', [], ['p', 'f', 'eusi', 'euo', 'sao', 'jao']),              ],          }, -        { +        '-(으)니까': {              name: '-(으)니까',              rules: [                  suffixInflection('ㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1356,7 +1356,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)니까느루': {              name: '-(으)니까느루',              rules: [                  suffixInflection('ㄴㅣㄲㅏㄴㅡㄹㅜ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1370,7 +1370,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㄲㅏㄴㅡㄹㅜ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)니까는': {              name: '-(으)니까는',              rules: [                  suffixInflection('ㄴㅣㄲㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1384,7 +1384,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㄲㅏㄴㅡㄴ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)니깐': {              name: '-(으)니깐',              rules: [                  suffixInflection('ㄴㅣㄲㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1398,7 +1398,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㄲㅏㄴ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으/느)니라': {              name: '-(으/느)니라',              rules: [                  suffixInflection('ㄴㅣㄹㅏ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -1409,7 +1409,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-(으/느)니만치': {              name: '-(으/느)니만치',              rules: [                  suffixInflection('ㄴㅣㅁㅏㄴㅊㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1421,7 +1421,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㅁㅏㄴㅊㅣ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으/느)니만큼': {              name: '-(으/느)니만큼',              rules: [                  suffixInflection('ㄴㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1433,41 +1433,41 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p', 'f']),              ],          }, -        { +        '-다': {              name: '-다',              rules: [                  suffixInflection('ㄷㅏ', '', [], ['p', 'f', 'eusi', 'ida']),              ],          }, -        { +        '-다가': {              name: '-다가',              rules: [                  suffixInflection('ㄷㅏㄱㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄷㅏㄱㅏ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-다가는': {              name: '-다가는',              rules: [                  suffixInflection('ㄷㅏㄱㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅏㄱㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-다간': {              name: '-다간',              rules: [                  suffixInflection('ㄷㅏㄱㅏㄴ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄷㅏㄱㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-다마다': {              name: '-다마다',              rules: [                  suffixInflection('ㄷㅏㅁㅏㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅏㅁㅏㄷㅏ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-다시피': {              name: '-다시피',              rules: [                  suffixInflection('ㄷㅏㅅㅣㅍㅣ', 'ㄷㅏ', [], ['v', 'adj']), @@ -1476,237 +1476,237 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅂㅅㄷㅏㅅㅣㅍㅣ', '없다', [], []),              ],          }, -        { +        '-단': {              name: '-단',              rules: [                  suffixInflection('ㄷㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더': {              name: '-더',              rules: [                  suffixInflection('ㄷㅓ', 'ㄷㅏ', ['do'], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓ', '', ['do'], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구나': {              name: '-더구나',              rules: [                  suffixInflection('ㄷㅓㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구려': {              name: '-더구려',              rules: [                  suffixInflection('ㄷㅓㄱㅜㄹㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㄹㅕ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구료': {              name: '-더구료',              rules: [                  suffixInflection('ㄷㅓㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구만': {              name: '-더구만',              rules: [                  suffixInflection('ㄷㅓㄱㅜㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구먼': {              name: '-더구먼',              rules: [                  suffixInflection('ㄷㅓㄱㅜㅁㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㅁㅓㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더구면': {              name: '-더구면',              rules: [                  suffixInflection('ㄷㅓㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더군': {              name: '-더군',              rules: [                  suffixInflection('ㄷㅓㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄱㅜㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더냐': {              name: '-더냐',              rules: [                  suffixInflection('ㄷㅓㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅑ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더뇨': {              name: '-더뇨',              rules: [                  suffixInflection('ㄷㅓㄴㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더니': {              name: '-더니',              rules: [                  suffixInflection('ㄷㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣ', '', [], ['p', 'f', 'eusi', 'euob', 'euo', 'sab']),              ],          }, -        { +        '-더니라': {              name: '-더니라',              rules: [                  suffixInflection('ㄷㅓㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더니마는': {              name: '-더니마는',              rules: [                  suffixInflection('ㄷㅓㄴㅣㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣㅁㅏㄴㅡㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더니만': {              name: '-더니만',              rules: [                  suffixInflection('ㄷㅓㄴㅣㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더니이까': {              name: '-더니이까',              rules: [                  suffixInflection('ㄷㅓㄴㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더니이다': {              name: '-더니이다',              rules: [                  suffixInflection('ㄷㅓㄴㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅣㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더라도': {              name: '-더라도',              rules: [                  suffixInflection('ㄷㅓㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄹㅏㄷㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더이까': {              name: '-더이까',              rules: [                  suffixInflection('ㄷㅓㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㅇㅣㄲㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-더이다': {              name: '-더이다',              rules: [                  suffixInflection('ㄷㅓㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㅇㅣㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던': {              name: '-던',              rules: [                  suffixInflection('ㄷㅓㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던가': {              name: '-던가',              rules: [                  suffixInflection('ㄷㅓㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㄱㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던감': {              name: '-던감',              rules: [                  suffixInflection('ㄷㅓㄴㄱㅏㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㄱㅏㅁ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던걸': {              name: '-던걸',              rules: [                  suffixInflection('ㄷㅓㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㄱㅓㄹ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던고': {              name: '-던고',              rules: [                  suffixInflection('ㄷㅓㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던데': {              name: '-던데',              rules: [                  suffixInflection('ㄷㅓㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㄷㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던들': {              name: '-던들',              rules: [                  suffixInflection('ㄷㅓㄴㄷㅡㄹ', '', [], ['p']),              ],          }, -        { +        '-던바': {              name: '-던바',              rules: [                  suffixInflection('ㄷㅓㄴㅂㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅂㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-던지': {              name: '-던지',              rules: [                  suffixInflection('ㄷㅓㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅓㄴㅈㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-데': {              name: '-데',              rules: [                  suffixInflection('ㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-데요': {              name: '-데요',              rules: [                  suffixInflection('ㄷㅔㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅔㅇㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-도다': {              name: '-도다',              rules: [                  suffixInflection('ㄷㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅗㄷㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-도록': {              name: '-도록',              rules: [                  suffixInflection('ㄷㅗㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㄷㅗㄹㅗㄱ', '', [], ['eusi']),              ],          }, -        { +        '-(으)되': {              name: '-(으)되',              rules: [                  suffixInflection('ㄷㅗㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -1715,152 +1715,152 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄷㅗㅣ', '', [], ['p', 'f']),              ],          }, -        { +        '-드구나': {              name: '-드구나',              rules: [                  suffixInflection('ㄷㅡㄱㅜㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄱㅜㄴㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드구료': {              name: '-드구료',              rules: [                  suffixInflection('ㄷㅡㄱㅜㄹㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄱㅜㄹㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드구면': {              name: '-드구면',              rules: [                  suffixInflection('ㄷㅡㄱㅜㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄱㅜㅁㅕㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드군': {              name: '-드군',              rules: [                  suffixInflection('ㄷㅡㄱㅜㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄱㅜㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드냐': {              name: '-드냐',              rules: [                  suffixInflection('ㄷㅡㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㅑ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드니': {              name: '-드니',              rules: [                  suffixInflection('ㄷㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드니라': {              name: '-드니라',              rules: [                  suffixInflection('ㄷㅡㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㅣㄹㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드라': {              name: '-드라',              rules: [                  suffixInflection('ㄷㅡㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄹㅏ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드라도': {              name: '-드라도',              rules: [                  suffixInflection('ㄷㅡㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄹㅏㄷㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-드라면': {              name: '-드라면',              rules: [                  suffixInflection('ㄷㅡㄹㅏㅁㅕㄴ', '', [], ['p']),              ],          }, -        { +        '-드래도': {              name: '-드래도',              rules: [                  suffixInflection('ㄷㅡㄹㅐㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄹㅐㄷㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-든': {              name: '-든',              rules: [                  suffixInflection('ㄷㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-든가': {              name: '-든가',              rules: [                  suffixInflection('ㄷㅡㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㄱㅏ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-든걸': {              name: '-든걸',              rules: [                  suffixInflection('ㄷㅡㄴㄱㅓㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㄱㅓㄹ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-든고': {              name: '-든고',              rules: [                  suffixInflection('ㄷㅡㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㄱㅗ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-든데': {              name: '-든데',              rules: [                  suffixInflection('ㄷㅡㄴㄷㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㄷㅔ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-든들': {              name: '-든들',              rules: [                  suffixInflection('ㄷㅡㄴㄷㅡㄹ', '', [], ['p']),              ],          }, -        { +        '-든지': {              name: '-든지',              rules: [                  suffixInflection('ㄷㅡㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㄴㅈㅣ', '', [], ['p', 'eusi']),              ],          }, -        { +        '-듯': {              name: '-듯',              rules: [                  suffixInflection('ㄷㅡㅅ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㅅ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-듯이': {              name: '-듯이',              rules: [                  suffixInflection('ㄷㅡㅅㅇㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅡㅅㅇㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-디': {              name: '-디',              rules: [                  suffixInflection('ㄷㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㄷㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-(으)라': {              name: '-(으)라',              rules: [                  suffixInflection('ㄹㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1873,7 +1873,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라고': {              name: '-(으)라고',              rules: [                  suffixInflection('ㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1886,7 +1886,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄱㅗ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라구': {              name: '-(으)라구',              rules: [                  suffixInflection('ㄹㅏㄱㅜ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1899,7 +1899,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄱㅜ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라나': {              name: '-(으)라나',              rules: [                  suffixInflection('ㄹㅏㄴㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1912,7 +1912,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㅏ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라네': {              name: '-(으)라네',              rules: [                  suffixInflection('ㄹㅏㄴㅔ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1925,7 +1925,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㅔ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라느니': {              name: '-(으)라느니',              rules: [                  suffixInflection('ㄹㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1938,7 +1938,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㅡㄴㅣ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라니': {              name: '-(으)라니',              rules: [                  suffixInflection('ㄹㅏㄴㅣ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1951,7 +1951,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㅣ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라니까': {              name: '-(으)라니까',              rules: [                  suffixInflection('ㄹㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1964,14 +1964,14 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㅣㄲㅏ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-라도': {              name: '-라도',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅏㄷㅗ', '아니다', [], ['adj']),                  suffixInflection('ㄹㅏㄷㅗ', 'ㄷㅏ', [], ['ida']),              ],          }, -        { +        '-(으)라며': {              name: '-(으)라며',              rules: [                  suffixInflection('ㄹㅏㅁㅕ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1984,7 +1984,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅁㅕ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라면': {              name: '-(으)라면',              rules: [                  suffixInflection('ㄹㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -1997,7 +1997,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅁㅕㄴ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라면서': {              name: '-(으)라면서',              rules: [                  suffixInflection('ㄹㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2010,7 +2010,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅁㅕㄴㅅㅓ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-라서': {              name: '-라서',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅏㅅㅓ', '아니다', [], ['adj']), @@ -2018,7 +2018,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅅㅓ', '', [], ['eusi']),              ],          }, -        { +        '-(으)라손': {              name: '-(으)라손',              rules: [                  suffixInflection('ㄹㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2031,7 +2031,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅅㅗㄴ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-라야': {              name: '-라야',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅏㅇㅑ', '아니다', [], ['adj']), @@ -2039,7 +2039,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅇㅑ', '', [], ['eusi']),              ],          }, -        { +        '-라야만': {              name: '-라야만',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅏㅇㅑㅁㅏㄴ', '아니다', [], ['adj']), @@ -2047,7 +2047,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅇㅑㅁㅏㄴ', '', [], ['eusi']),              ],          }, -        { +        '-(으)라오': {              name: '-(으)라오',              rules: [                  suffixInflection('ㄹㅏㅇㅗ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2060,7 +2060,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅇㅗ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)라지': {              name: '-(으)라지',              rules: [                  suffixInflection('ㄹㅏㅈㅣ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2073,7 +2073,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅈㅣ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)락': {              name: '-(으)락',              rules: [                  suffixInflection('ㄹㅏㄱ', 'ㄷㅏ', [], ['v', 'adj']), @@ -2085,7 +2085,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹㅏㄱ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)란': {              name: '-(으)란',              rules: [                  suffixInflection('ㄹㅏㄴ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2098,7 +2098,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)란다': {              name: '-(으)란다',              rules: [                  suffixInflection('ㄹㅏㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2111,7 +2111,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㄴㄷㅏ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)람': {              name: '-(으)람',              rules: [                  suffixInflection('ㄹㅏㅁ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2124,7 +2124,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅁ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)랍니까': {              name: '-(으)랍니까',              rules: [                  suffixInflection('ㄹㅏㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2137,7 +2137,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅂㄴㅣㄲㅏ', '', [], ['eusi', 'do']),              ],          }, -        { +        '-(으)랍니다': {              name: '-(으)랍니다',              rules: [                  suffixInflection('ㄹㅏㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2150,7 +2150,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅂㄴㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-랍시고': {              name: '-랍시고',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅏㅂㅅㅣㄱㅗ', '아니다', [], ['adj']), @@ -2158,7 +2158,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅏㅂㅅㅣㄱㅗ', '', [], ['eusi']),              ],          }, -        { +        '-(으)래': {              name: '-(으)래',              rules: [                  suffixInflection('ㄹㅐ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2171,7 +2171,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅐ', '', [], ['eusi']),              ],          }, -        { +        '-(으)래요': {              name: '-(으)래요',              rules: [                  suffixInflection('ㄹㅐㅇㅛ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2184,7 +2184,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅐㅇㅛ', '', [], ['eusi']),              ],          }, -        { +        '-(으)랴': {              name: '-(으)랴',              rules: [                  suffixInflection('ㄹㅑ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2196,7 +2196,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅑ', '', [], ['eusi']),              ],          }, -        { +        '-(으)러': {              name: '-(으)러',              rules: [                  suffixInflection('ㄹㅓ', 'ㄷㅏ', [], ['v', 'ida']), @@ -2208,7 +2208,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓ', '', [], ['eusi']),              ],          }, -        { +        '-러니': {              name: '-러니',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣ', '아니다', [], ['adj']), @@ -2216,7 +2216,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㅣ', '', [], ['eusi']),              ],          }, -        { +        '-러니라': {              name: '-러니라',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㄹㅏ', '아니다', [], ['adj']), @@ -2224,7 +2224,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㅣㄹㅏ', '', [], ['eusi']),              ],          }, -        { +        '-러니이까': {              name: '-러니이까',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㅇㅣㄲㅏ', '아니다', [], ['adj']), @@ -2232,7 +2232,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㅣㅇㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-러니이다': {              name: '-러니이다',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㅣㅇㅣㄷㅏ', '아니다', [], ['adj']), @@ -2240,7 +2240,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㅣㅇㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-러라': {              name: '-러라',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄹㅏ', '아니다', [], ['adj']), @@ -2248,7 +2248,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄹㅏ', '', [], ['eusi']),              ],          }, -        { +        '-러이까': {              name: '-러이까',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㅇㅣㄲㅏ', '아니다', [], ['adj']), @@ -2256,7 +2256,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㅇㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-러이다': {              name: '-러이다',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㅇㅣㄷㅏ', '아니다', [], ['adj']), @@ -2264,7 +2264,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㅇㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-런가': {              name: '-런가',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㄱㅏ', '아니다', [], ['adj']), @@ -2272,7 +2272,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㄱㅏ', '', [], ['eusi']),              ],          }, -        { +        '-런들': {              name: '-런들',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅓㄴㄷㅡㄹ', '아니다', [], ['adj']), @@ -2280,7 +2280,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅓㄴㄷㅡㄹ', '', [], ['eusi']),              ],          }, -        { +        '-(으)려': {              name: '-(으)려',              rules: [                  suffixInflection('ㄹㅕ', 'ㄷㅏ', [], ['v']), @@ -2293,7 +2293,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕ', '', [], ['p']),              ],          }, -        { +        '-(으)려거든': {              name: '-(으)려거든',              rules: [                  suffixInflection('ㄹㅕㄱㅓㄷㅡㄴ', 'ㄷㅏ', [], ['v']), @@ -2306,7 +2306,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄱㅓㄷㅡㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)려고': {              name: '-(으)려고',              rules: [                  suffixInflection('ㄹㅕㄱㅗ', 'ㄷㅏ', [], ['v', 'adj']), @@ -2319,7 +2319,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄱㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)려나': {              name: '-(으)려나',              rules: [                  suffixInflection('ㄹㅕㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2333,7 +2333,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)려니': {              name: '-(으)려니',              rules: [                  suffixInflection('ㄹㅕㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2347,7 +2347,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)려니와': {              name: '-(으)려니와',              rules: [                  suffixInflection('ㄹㅕㄴㅣㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2361,7 +2361,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴㅣㅇㅗㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)려든': {              name: '-(으)려든',              rules: [                  suffixInflection('ㄹㅕㄷㅡㄴ', 'ㄷㅏ', [], ['v']), @@ -2374,7 +2374,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄷㅡㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)려마': {              name: '-(으)려마',              rules: [                  suffixInflection('ㄹㅕㅁㅏ', 'ㄷㅏ', [], ['v']), @@ -2387,7 +2387,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅁㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)려면': {              name: '-(으)려면',              rules: [                  suffixInflection('ㄹㅕㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2401,7 +2401,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅁㅕㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)려무나': {              name: '-(으)려무나',              rules: [                  suffixInflection('ㄹㅕㅁㅜㄴㅏ', 'ㄷㅏ', [], ['v']), @@ -2414,7 +2414,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅁㅜㄴㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)련': {              name: '-(으)련',              rules: [                  suffixInflection('ㄹㅕㄴ', 'ㄷㅏ', [], ['v']), @@ -2427,7 +2427,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)련마는': {              name: '-(으)련마는',              rules: [                  suffixInflection('ㄹㅕㄴㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2441,7 +2441,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴㅁㅏㄴㅡㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)련만': {              name: '-(으)련만',              rules: [                  suffixInflection('ㄹㅕㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2455,7 +2455,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㄴㅁㅏㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)렴': {              name: '-(으)렴',              rules: [                  suffixInflection('ㄹㅕㅁ', 'ㄷㅏ', [], ['v']), @@ -2468,7 +2468,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅁ', '', [], ['p']),              ],          }, -        { +        '-(으)렵니까': {              name: '-(으)렵니까',              rules: [                  suffixInflection('ㄹㅕㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']), @@ -2481,7 +2481,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅂㄴㅣㄲㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)렵니다': {              name: '-(으)렵니다',              rules: [                  suffixInflection('ㄹㅕㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -2494,7 +2494,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅂㄴㅣㄷㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)렷다': {              name: '-(으)렷다',              rules: [                  suffixInflection('ㄹㅕㅅㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2508,7 +2508,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅕㅅㄷㅏ', '', [], ['p']),              ],          }, -        { +        '-로고': {              name: '-로고',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅗ', '아니다', [], ['adj']), @@ -2516,7 +2516,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅗ', '', [], ['eusi']),              ],          }, -        { +        '-로고나': {              name: '-로고나',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅗㄴㅏ', '아니다', [], ['adj']), @@ -2524,7 +2524,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅗㄴㅏ', '', [], ['eusi']),              ],          }, -        { +        '-로구나': {              name: '-로구나',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄴㅏ', '아니다', [], ['adj']), @@ -2532,7 +2532,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㄴㅏ', '', [], ['eusi']),              ],          }, -        { +        '-로구려': {              name: '-로구려',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄹㅕ', '아니다', [], ['adj']), @@ -2540,7 +2540,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㄹㅕ', '', [], ['eusi']),              ],          }, -        { +        '-로구료': {              name: '-로구료',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄹㅛ', '아니다', [], ['adj']), @@ -2548,7 +2548,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㄹㅛ', '', [], ['eusi']),              ],          }, -        { +        '-로구만': {              name: '-로구만',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅏㄴ', '아니다', [], ['adj']), @@ -2556,7 +2556,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㅁㅏㄴ', '', [], ['eusi']),              ],          }, -        { +        '-로구먼': {              name: '-로구먼',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅓㄴ', '아니다', [], ['adj']), @@ -2564,7 +2564,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㅁㅓㄴ', '', [], ['eusi']),              ],          }, -        { +        '-로구면': {              name: '-로구면',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㅁㅕㄴ', '아니다', [], ['adj']), @@ -2572,7 +2572,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㅁㅕㄴ', '', [], ['eusi']),              ],          }, -        { +        '-로군': {              name: '-로군',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄱㅜㄴ', '아니다', [], ['adj']), @@ -2580,7 +2580,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄱㅜㄴ', '', [], ['eusi']),              ],          }, -        { +        '-로다': {              name: '-로다',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄷㅏ', '아니다', [], ['adj']), @@ -2588,7 +2588,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-로되': {              name: '-로되',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄷㅗㅣ', '아니다', [], ['adj']), @@ -2596,7 +2596,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㄷㅗㅣ', '', [], ['eusi']),              ],          }, -        { +        '-로라': {              name: '-로라',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㄹㅏ', '아니다', [], ['adj']), @@ -2604,7 +2604,7 @@ export const koreanTransforms = {                  suffixInflection('', '다', [], ['ida']),              ],          }, -        { +        '-로서니': {              name: '-로서니',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㅅㅓㄴㅣ', '아니다', [], ['adj']), @@ -2612,7 +2612,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㅅㅓㄴㅣ', '다', [], ['ida']),              ],          }, -        { +        '-로세': {              name: '-로세',              rules: [                  suffixInflection('ㅇㅏㄴㅣㄹㅗㅅㅔ', '아니다', [], ['adj']), @@ -2620,7 +2620,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅗㅅㅔ', '', [], ['eusi']),              ],          }, -        { +        '-(으)리': {              name: '-(으)리',              rules: [                  suffixInflection('ㄹㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2634,7 +2634,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)리까': {              name: '-(으)리까',              rules: [                  suffixInflection('ㄹㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2648,7 +2648,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄲㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)리니': {              name: '-(으)리니',              rules: [                  suffixInflection('ㄹㅣㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2662,7 +2662,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄴㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)리니라': {              name: '-(으)리니라',              rules: [                  suffixInflection('ㄹㅣㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2676,7 +2676,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄴㅣㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)리다': {              name: '-(으)리다',              rules: [                  suffixInflection('ㄹㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2690,7 +2690,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄷㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)리라': {              name: '-(으)리라',              rules: [                  suffixInflection('ㄹㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2704,7 +2704,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)리로다': {              name: '-(으)리로다',              rules: [                  suffixInflection('ㄹㅣㄹㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2718,7 +2718,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㄹㅗㄷㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)리만치': {              name: '-(으)리만치',              rules: [                  suffixInflection('ㄹㅣㅁㅏㄴㅊㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2732,7 +2732,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㅁㅏㄴㅊㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)리만큼': {              name: '-(으)리만큼',              rules: [                  suffixInflection('ㄹㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2746,7 +2746,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p']),              ],          }, -        { +        '-(으)리오': {              name: '-(으)리오',              rules: [                  suffixInflection('ㄹㅣㅇㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2760,7 +2760,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅣㅇㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)마': {              name: '-(으)마',              rules: [                  suffixInflection('ㅁㅏ', 'ㄷㅏ', [], ['v']), @@ -2771,7 +2771,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅁㅏ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)매': {              name: '-(으)매',              rules: [                  suffixInflection('ㅁㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2785,7 +2785,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅐ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)며': {              name: '-(으)며',              rules: [                  suffixInflection('ㅁㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2799,7 +2799,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅕ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)면': {              name: '-(으)면',              rules: [                  suffixInflection('ㅁㅕㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2813,7 +2813,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅕㄴ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)면서': {              name: '-(으)면서',              rules: [                  suffixInflection('ㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2827,7 +2827,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅕㄴㅅㅓ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)므로': {              name: '-(으)므로',              rules: [                  suffixInflection('ㅁㅡㄹㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2841,7 +2841,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅡㄹㅗ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)사': {              name: '-(으)사',              rules: [                  suffixInflection('ㅅㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -2853,105 +2853,105 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { -            name: '-사오-', +        '-사오': { +            name: '-사오',              rules: [                  suffixInflection('ㅅㅏㅇㅗ', 'ㄷㅏ', ['sao'], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗ', '', ['sao'], ['p', 'f']),              ],          }, -        { +        '-사오니까': {              name: '-사오니까',              rules: [                  suffixInflection('ㅅㅏㅇㅗㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㄴㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사오리까': {              name: '-사오리까',              rules: [                  suffixInflection('ㅅㅏㅇㅗㄹㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㄹㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사오리다': {              name: '-사오리다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㄹㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㄹㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사오리이까': {              name: '-사오리이까',              rules: [                  suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사오리이다': {              name: '-사오리이다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㄹㅣㅇㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사오이다': {              name: '-사오이다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅇㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { -            name: '-사옵-', +        '-사옵': { +            name: '-사옵',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅂ', 'ㄷㅏ', ['saob'], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅂ', '', ['saob'], ['p', 'f']),              ],          }, -        { +        '-사옵니까': {              name: '-사옵니까',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사옵니다': {              name: '-사옵니다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅂㄴㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사옵디까': {              name: '-사옵디까',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사옵디다': {              name: '-사옵디다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅂㄷㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사와': {              name: '-사와',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-사외다': {              name: '-사외다',              rules: [                  suffixInflection('ㅅㅏㅇㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅏㅇㅗㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)사이다': {              name: '-(으)사이다',              rules: [                  suffixInflection('ㅅㅏㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -2963,14 +2963,14 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅏㅇㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { -            name: '-삽-', +        '-삽': { +            name: '-삽',              rules: [                  suffixInflection('ㅅㅏㅂ', 'ㄷㅏ', ['sab'], ['v', 'adj']),                  suffixInflection('ㅅㅏㅂ', '', ['sab'], ['p', 'f']),              ],          }, -        { +        '-(으)세': {              name: '-(으)세',              rules: [                  suffixInflection('ㅅㅔ', 'ㄷㅏ', [], ['v']), @@ -2981,13 +2981,13 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅔ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-세나': {              name: '-세나',              rules: [                  suffixInflection('ㅅㅔㄴㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)세요': {              name: '-(으)세요',              rules: [                  suffixInflection('ㅅㅔㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -2999,7 +2999,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅔㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)셔요': {              name: '-(으)셔요',              rules: [                  suffixInflection('ㅅㅕㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3011,21 +3011,21 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅕㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-소': {              name: '-소',              rules: [                  suffixInflection('ㅅㅗ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅗ', '', [], ['p', 'f']),              ],          }, -        { +        '-소다': {              name: '-소다',              rules: [                  suffixInflection('ㅅㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅗㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)소서': {              name: '-(으)소서',              rules: [                  suffixInflection('ㅅㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3037,28 +3037,28 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅗㅅㅓ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-소이까': {              name: '-소이까',              rules: [                  suffixInflection('ㅅㅗㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅅㅗㅇㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-소이다': {              name: '-소이다',              rules: [                  suffixInflection('ㅅㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅗㅇㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-쇠다': {              name: '-쇠다',              rules: [                  suffixInflection('ㅅㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']),                  suffixInflection('ㅅㅗㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(스)ㅂ네': {              name: '-(스)ㅂ네',              rules: [                  suffixInflection('ㅂㄴㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3068,7 +3068,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄴㅔ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ늰다': {              name: '-(스)ㅂ늰다',              rules: [                  suffixInflection('ㅂㄴㅡㅣㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3078,7 +3078,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄴㅡㅣㄴㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ니까': {              name: '-(스)ㅂ니까',              rules: [                  suffixInflection('ㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3088,7 +3088,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄴㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ니다': {              name: '-(스)ㅂ니다',              rules: [                  suffixInflection('ㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3098,7 +3098,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄴㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ디까': {              name: '-(스)ㅂ디까',              rules: [                  suffixInflection('ㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3108,7 +3108,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄷㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ디다': {              name: '-(스)ㅂ디다',              rules: [                  suffixInflection('ㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3118,7 +3118,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄷㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ딘다': {              name: '-(스)ㅂ딘다',              rules: [                  suffixInflection('ㅂㄷㅣㄴㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3128,7 +3128,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㄷㅣㄴㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ죠': {              name: '-(스)ㅂ죠',              rules: [                  suffixInflection('ㅂㅈㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3138,7 +3138,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㅈㅛ', '', [], ['eusi']),              ],          }, -        { +        '-(스)ㅂ지요': {              name: '-(스)ㅂ지요',              rules: [                  suffixInflection('ㅂㅈㅣㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3148,8 +3148,8 @@ export const koreanTransforms = {                  suffixInflection('ㅂㅈㅣㅇㅛ', '', [], ['eusi']),              ],          }, -        { -            name: '-(으)시-', +        '-(으)시': { +            name: '-(으)시',              rules: [                  suffixInflection('ㅅㅣ', 'ㄷㅏ', ['eusi'], ['v', 'adj', 'ida']),                  suffixInflection('ㅇㅡㅅㅣ', 'ㄷㅏ', ['eusi'], ['v', 'adj']), @@ -3161,7 +3161,7 @@ export const koreanTransforms = {                  suffixInflection('ㅅㅣ', '', ['eusi'], ['saob', 'euob', 'jaob']),              ],          }, -        { +        '-(으)시압': {              name: '-(으)시압',              rules: [                  suffixInflection('ㅅㅣㅇㅏㅂ', 'ㄷㅏ', [], ['v']), @@ -3172,7 +3172,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅣㅇㅏㅂ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)시어요': {              name: '-(으)시어요',              rules: [                  suffixInflection('ㅅㅣㅇㅓㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3184,7 +3184,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅣㅇㅓㅇㅛ', 'ㄷㄷㅏ', [], ['v', 'adj']),              ],          }, -        { +        '-(으)십사': {              name: '-(으)십사',              rules: [                  suffixInflection('ㅅㅣㅂㅅㅏ', 'ㄷㅏ', [], ['v']), @@ -3195,7 +3195,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅏ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)십시다': {              name: '-(으)십시다',              rules: [                  suffixInflection('ㅅㅣㅂㅅㅣㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -3206,7 +3206,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)십시오': {              name: '-(으)십시오',              rules: [                  suffixInflection('ㅅㅣㅂㅅㅣㅇㅗ', 'ㄷㅏ', [], ['v']), @@ -3217,7 +3217,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅅㅣㅂㅅㅣㅇㅗ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-아/어': {              name: '-아/어',              rules: [                  suffixInflection('ㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3248,7 +3248,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어다': {              name: '-아/어다',              rules: [                  suffixInflection('ㅏㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3279,7 +3279,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어다가': {              name: '-아/어다가',              rules: [                  suffixInflection('ㅏㄷㅏㄱㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3313,7 +3313,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄷㅏㄱㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어도': {              name: '-아/어도',              rules: [                  suffixInflection('ㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3347,7 +3347,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄷㅗ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어라': {              name: '-아/어라',              rules: [                  suffixInflection('ㅏㄹㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3381,7 +3381,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄹㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/아서': {              name: '-아/아서',              rules: [                  suffixInflection('ㅏㅅㅓ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3415,7 +3415,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅅㅓ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어야': {              name: '-아/어야',              rules: [                  suffixInflection('ㅏㅇㅑ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3449,7 +3449,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅇㅑ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어야겠': {              name: '-아/어야겠',              rules: [                  suffixInflection('ㅏㅇㅑㄱㅔㅆ', 'ㄷㅏ', ['f'], ['v', 'adj']), @@ -3482,7 +3482,7 @@ export const koreanTransforms = {                  suffixInflection('ㅓㅇㅑㄱㅔㅆ', 'ㅡㄷㅏ', ['f'], ['v', 'adj']),              ],          }, -        { +        '-아/어야만': {              name: '-아/어야만',              rules: [                  suffixInflection('ㅏㅇㅑㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3516,7 +3516,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅇㅑㅁㅏㄴ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어야지': {              name: '-아/어야지',              rules: [                  suffixInflection('ㅏㅇㅑㅈㅣ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3550,7 +3550,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅇㅑㅈㅣ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어요': {              name: '-아/어요',              rules: [                  suffixInflection('ㅏㅇㅛ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3585,7 +3585,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅇㅛ', '', [], ['p', 'f']),              ],          }, -        { +        '-아/어지이다': {              name: '-아/어지이다',              rules: [                  suffixInflection('ㅏㅈㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3618,7 +3618,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㅈㅣㅇㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-았/었': {              name: '-았/었',              rules: [                  suffixInflection('ㅆ', 'ㄷㅏ', ['p'], ['v', 'adj']), @@ -3653,7 +3653,7 @@ export const koreanTransforms = {                  suffixInflection('ㅅㅣㅇㅓㅆ', 'ㅅㅣ', ['p'], ['eusi']),              ],          }, -        { +        '-았/었었': {              name: '-았/었었',              rules: [                  suffixInflection('ㅏㅆㅇㅓㅆ', 'ㄷㅏ', ['p'], ['v', 'adj']), @@ -3686,7 +3686,7 @@ export const koreanTransforms = {                  suffixInflection('ㅓㅆㅇㅓㅆ', 'ㅡㄷㅏ', ['p'], ['v', 'adj']),              ],          }, -        { +        '-았/었자': {              name: '-았/었자',              rules: [                  suffixInflection('ㅏㅆㅈㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3720,14 +3720,14 @@ export const koreanTransforms = {                  suffixInflection('ㅅㅕㅆㅈㅏ', 'ㅅㅣ', [], ['eusi']),              ],          }, -        { +        '-야': {              name: '-야',              rules: [                  suffixInflection('ㅇㅏㄴㅣㅇㅑ', '아니다', [], ['adj']),                  suffixInflection('ㅇㅣㅇㅑ', '이다', [], ['ida']),              ],          }, -        { +        '-언마는': {              name: '-언마는',              rules: [                  suffixInflection('ㅇㅓㄴㅁㅏㄴㅡㄴ', '아니다', [], ['adj']), @@ -3735,14 +3735,14 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄴㅁㅏㄴㅡㄴ', '', [], ['eusi']),              ],          }, -        { +        '-언만': {              name: '-언만',              rules: [                  suffixInflection('ㅇㅓㄴㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅇㅓㄴㅁㅏㄴ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-언정': {              name: '-언정',              rules: [                  suffixInflection('ㅇㅓㄴㅈㅓㅇ', '아니다', [], ['adj']), @@ -3750,14 +3750,14 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅓㄴㅈㅓㅇ', '', [], ['eusi']),              ],          }, -        { +        '-에라': {              name: '-에라',              rules: [                  suffixInflection('ㅇㅔㄹㅏ', '', [], ['p']),              ],          }, -        { -            name: '-(으)오-', +        '-(으)오': { +            name: '-(으)오',              rules: [                  suffixInflection('ㅇㅗ', 'ㄷㅏ', ['euo'], ['v', 'adj']),                  suffixInflection('ㅇㅡㅇㅗ', 'ㄷㅏ', ['euo'], ['v', 'adj']), @@ -3770,7 +3770,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗ', '', ['euo'], ['p', 'f']),              ],          }, -        { +        '-(으)오니까': {              name: '-(으)오니까',              rules: [                  suffixInflection('ㅇㅗㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3784,7 +3784,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㄴㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)오리이까': {              name: '-(으)오리이까',              rules: [                  suffixInflection('ㅇㅗㄹㅣㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3797,7 +3797,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅗㄹㅣㅇㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(으)오리이다': {              name: '-(으)오리이다',              rules: [                  suffixInflection('ㅇㅗㄹㅣㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3810,7 +3810,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅗㄹㅣㅇㅣㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-오이까': {              name: '-오이까',              rules: [                  suffixInflection('ㅇㅗㅇㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3818,7 +3818,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅗㅇㅣㄲㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(으)오이다': {              name: '-(으)오이다',              rules: [                  suffixInflection('ㅇㅗㅇㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj']), @@ -3832,22 +3832,22 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅇㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-올습니다': {              name: '-올습니다',              rules: [                  suffixInflection('ㅇㅏㄴㅣㅇㅗㄹㅅㅡㅂㄴㅣㄷㅏ', '아니다', [], ['adj']),                  suffixInflection('ㅇㅣㅇㅗㄹㅅㅡㅂㄴㅣㄷㅏ', '이다', [], ['ida']),              ],          }, -        { +        '-올시다': {              name: '-올시다',              rules: [                  suffixInflection('ㅇㅏㄴㅣㅇㅗㄹㅅㅣㄷㅏ', '아니다', [], ['adj']),                  suffixInflection('ㅇㅣㅇㅗㄹㅅㅣㄷㅏ', '이다', [], ['ida']),              ],          }, -        { -            name: '-(으)옵-', +        '-(으)옵': { +            name: '-(으)옵',              rules: [                  suffixInflection('ㅇㅗㅂ', 'ㄷㅏ', ['euob'], ['v', 'adj', 'ida']),                  suffixInflection('ㅇㅡㅇㅗㅂ', 'ㄷㅏ', ['euob'], ['v', 'adj']), @@ -3860,7 +3860,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂ', '', ['euob'], ['p', 'f']),              ],          }, -        { +        '-(으)옵니까': {              name: '-(으)옵니까',              rules: [                  suffixInflection('ㅇㅗㅂㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3874,7 +3874,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂㄴㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)옵니다': {              name: '-(으)옵니다',              rules: [                  suffixInflection('ㅇㅗㅂㄴㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3888,7 +3888,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂㄴㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)옵디까': {              name: '-(으)옵디까',              rules: [                  suffixInflection('ㅇㅗㅂㄷㅣㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3902,7 +3902,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂㄷㅣㄲㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)옵디다': {              name: '-(으)옵디다',              rules: [                  suffixInflection('ㅇㅗㅂㄷㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3916,7 +3916,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂㄷㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)옵소서': {              name: '-(으)옵소서',              rules: [                  suffixInflection('ㅇㅗㅂㅅㅗㅅㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3930,7 +3930,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅂㅅㅗㅅㅓ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)와': {              name: '-(으)와',              rules: [                  suffixInflection('ㅇㅗㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3944,7 +3944,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)외다': {              name: '-(으)외다',              rules: [                  suffixInflection('ㅇㅗㅣㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3958,14 +3958,14 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅗㅣㄷㅏ', '', [], ['p', 'f']),              ],          }, -        { +        '-요': {              name: '-요',              rules: [                  suffixInflection('ㅇㅏㄴㅣㅇㅛ', '아니다', [], ['ida']),                  suffixInflection('ㅇㅛ', 'ㄷㅏ', [], ['ida']),              ],          }, -        { +        '-(으)우': {              name: '-(으)우',              rules: [                  suffixInflection('ㅇㅜ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -3979,7 +3979,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅇㅜ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)이': {              name: '-(으)이',              rules: [                  suffixInflection('ㅇㅣ', 'ㄷㅏ', [], ['adj']), @@ -3988,7 +3988,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅣ', 'ㄷㅏ', [], ['adj']),              ],          }, -        { +        '-(으)ㄴ들': {              name: '-(으)ㄴ들',              rules: [                  suffixInflection('ㄴㄷㅡㄹ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4001,7 +4001,7 @@ export const koreanTransforms = {                  suffixInflection('ㄴㄷㅡㄹ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄴ즉': {              name: '-(으)ㄴ즉',              rules: [                  suffixInflection('ㄴㅈㅡㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4015,7 +4015,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅈㅡㄱ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄴ즉슨': {              name: '-(으)ㄴ즉슨',              rules: [                  suffixInflection('ㄴㅈㅡㄱㅅㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4029,7 +4029,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄴㅈㅡㄱㅅㅡㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ까': {              name: '-(으)ㄹ까',              rules: [                  suffixInflection('ㄹㄲㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4043,7 +4043,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄲㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ깝쇼': {              name: '-(으)ㄹ깝쇼',              rules: [                  suffixInflection('ㄹㄲㅏㅂㅅㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4057,7 +4057,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄲㅏㅂㅅㅛ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ꼬': {              name: '-(으)ㄹ꼬',              rules: [                  suffixInflection('ㄹㄲㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4071,7 +4071,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄲㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ는지': {              name: '-(으)ㄹ는지',              rules: [                  suffixInflection('ㄹㄴㅡㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4085,7 +4085,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄴㅡㄴㅈㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ데라니': {              name: '-(으)ㄹ데라니',              rules: [                  suffixInflection('ㄹㄷㅔㄹㅏㄴㅣ', 'ㄷㅏ', [], ['adj']), @@ -4098,7 +4098,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㄷㅔㄹㅏㄴㅣ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ라': {              name: '-(으)ㄹ라',              rules: [                  suffixInflection('ㄹㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4112,7 +4112,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ라고': {              name: '-(으)ㄹ라고',              rules: [                  suffixInflection('ㄹㄹㅏㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4126,7 +4126,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅏㄱㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ라치면': {              name: '-(으)ㄹ라치면',              rules: [                  suffixInflection('ㄹㄹㅏㅊㅣㅁㅕㄴ', 'ㄷㅏ', [], ['v']), @@ -4138,7 +4138,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㄹㅏㅊㅣㅁㅕㄴ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ락': {              name: '-(으)ㄹ락',              rules: [                  suffixInflection('ㄹㄹㅏㄱ ㅁㅏㄹㄹㅏㄱ', 'ㄷㅏ', [], ['v']), @@ -4151,7 +4151,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅏㄱ ㅁㅏㄹㄹㅏㄱ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ래': {              name: '-(으)ㄹ래',              rules: [                  suffixInflection('ㄹㄹㅐ', 'ㄷㅏ', [], ['v']), @@ -4163,7 +4163,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㄹㅐ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ러니': {              name: '-(으)ㄹ러니',              rules: [                  suffixInflection('ㄹㄹㅓㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4177,7 +4177,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅓㄴㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ러라': {              name: '-(으)ㄹ러라',              rules: [                  suffixInflection('ㄹㄹㅓㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4191,7 +4191,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅓㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ런가': {              name: '-(으)ㄹ런가',              rules: [                  suffixInflection('ㄹㄹㅓㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4205,7 +4205,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅓㄴㄱㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ런고': {              name: '-(으)ㄹ런고',              rules: [                  suffixInflection('ㄹㄹㅓㄴㄱㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4219,7 +4219,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅓㄴㄱㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ런지': {              name: '-(으)ㄹ런지',              rules: [                  suffixInflection('ㄹㄹㅓㄴㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4233,7 +4233,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅓㄴㅈㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ레': {              name: '-(으)ㄹ레',              rules: [                  suffixInflection('ㄹㄹㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4247,7 +4247,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅔ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ레라': {              name: '-(으)ㄹ레라',              rules: [                  suffixInflection('ㄹㄹㅔㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4261,7 +4261,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㄹㅔㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ려고': {              name: '-(으)ㄹ려고',              rules: [                  suffixInflection('ㄹㄹㅕㄱㅗ', 'ㄷㅏ', [], ['v']), @@ -4273,7 +4273,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㄹㅕㄱㅗ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ망정': {              name: '-(으)ㄹ망정',              rules: [                  suffixInflection('ㄹㅁㅏㅇㅈㅓㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4287,7 +4287,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅁㅏㅇㅈㅓㅇ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ밖에': {              name: '-(으)ㄹ밖에',              rules: [                  suffixInflection('ㄹㅂㅏㄲㅇㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4301,7 +4301,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅂㅏㄲㅇㅔ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ뿐더러': {              name: '-(으)ㄹ뿐더러',              rules: [                  suffixInflection('ㄹㅃㅜㄴㄷㅓㄹㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4315,7 +4315,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅃㅜㄴㄷㅓㄹㅓ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ사': {              name: '-(으)ㄹ사',              rules: [                  suffixInflection('ㄹㅅㅏ', 'ㄷㅏ', [], ['adj']), @@ -4327,7 +4327,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㄹㅅㅏ', 'ㄷㄷㅏ', [], ['adj']),              ],          }, -        { +        '-(으)ㄹ새': {              name: '-(으)ㄹ새',              rules: [                  suffixInflection('ㄹㅅㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4341,7 +4341,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅐ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ세': {              name: '-(으)ㄹ세',              rules: [                  suffixInflection('ㄹㅅㅔ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4355,7 +4355,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅔ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ세라': {              name: '-(으)ㄹ세라',              rules: [                  suffixInflection('ㄹㅅㅔㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4369,7 +4369,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅔㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ세말이지': {              name: '-(으)ㄹ세말이지',              rules: [                  suffixInflection('ㄹㅅㅔㅁㅏㄹㅇㅣㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4383,7 +4383,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅔㅁㅏㄹㅇㅣㅈㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ소냐': {              name: '-(으)ㄹ소냐',              rules: [                  suffixInflection('ㄹㅅㅗㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4397,7 +4397,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅗㄴㅑ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ손가': {              name: '-(으)ㄹ손가',              rules: [                  suffixInflection('ㄹㅅㅗㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4411,7 +4411,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅗㄴㄱㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ수록': {              name: '-(으)ㄹ수록',              rules: [                  suffixInflection('ㄹㅅㅜㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4425,7 +4425,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅜㄹㅗㄱ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ시': {              name: '-(으)ㄹ시',              rules: [                  suffixInflection('ㄹㅅㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4439,7 +4439,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ시고': {              name: '-(으)ㄹ시고',              rules: [                  suffixInflection('ㄹㅅㅣㄱㅗ', 'ㄷㅏ', [], ['adj', 'ida']), @@ -4453,7 +4453,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅅㅣㄱㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ싸록': {              name: '-(으)ㄹ싸록',              rules: [                  suffixInflection('ㄹㅆㅏㄹㅗㄱ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4467,7 +4467,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅆㅏㄹㅗㄱ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ쏘냐': {              name: '-(으)ㄹ쏘냐',              rules: [                  suffixInflection('ㄹㅆㅗㄴㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4481,7 +4481,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅆㅗㄴㅑ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ쏜가': {              name: '-(으)ㄹ쏜가',              rules: [                  suffixInflection('ㄹㅆㅗㄴㄱㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4495,7 +4495,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅆㅗㄴㄱㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ이만큼': {              name: '-(으)ㄹ이만큼',              rules: [                  suffixInflection('ㄹㅇㅣㅁㅏㄴㅋㅡㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4509,7 +4509,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅇㅣㅁㅏㄴㅋㅡㅁ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ작시면': {              name: '-(으)ㄹ작시면',              rules: [                  suffixInflection('ㄹㅈㅏㄱㅅㅣㅁㅕㄴ', 'ㄷㅏ', [], ['v']), @@ -4521,7 +4521,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅈㅏㄱㅅㅣㅁㅕㄴ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ지': {              name: '-(으)ㄹ지',              rules: [                  suffixInflection('ㄹㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4535,7 +4535,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지나': {              name: '-(으)ㄹ지나',              rules: [                  suffixInflection('ㄹㅈㅣㄴㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4549,7 +4549,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지니': {              name: '-(으)ㄹ지니',              rules: [                  suffixInflection('ㄹㅈㅣㄴㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4563,7 +4563,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㅣ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지니라': {              name: '-(으)ㄹ지니라',              rules: [                  suffixInflection('ㄹㅈㅣㄴㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4577,7 +4577,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㅣㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지라': {              name: '-(으)ㄹ지라',              rules: [                  suffixInflection('ㄹㅈㅣㄹㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4591,7 +4591,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄹㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지라도': {              name: '-(으)ㄹ지라도',              rules: [                  suffixInflection('ㄹㅈㅣㄹㅏㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4605,7 +4605,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄹㅏㄷㅗ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지로다': {              name: '-(으)ㄹ지로다',              rules: [                  suffixInflection('ㄹㅈㅣㄹㅗㄷㅏ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4619,7 +4619,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄹㅗㄷㅏ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지며': {              name: '-(으)ㄹ지며',              rules: [                  suffixInflection('ㄹㅈㅣㅁㅕ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4633,7 +4633,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㅁㅕ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ지어다': {              name: '-(으)ㄹ지어다',              rules: [                  suffixInflection('ㄹㅈㅣㅇㅓㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -4645,7 +4645,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅈㅣㅇㅓㄷㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㄹ지언정': {              name: '-(으)ㄹ지언정',              rules: [                  suffixInflection('ㄹㅈㅣㅇㅓㄴㅈㅓㅇ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4659,7 +4659,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㅇㅓㄴㅈㅓㅇ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ진대': {              name: '-(으)ㄹ진대',              rules: [                  suffixInflection('ㄹㅈㅣㄴㄷㅐ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4673,7 +4673,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ진대는': {              name: '-(으)ㄹ진대는',              rules: [                  suffixInflection('ㄹㅈㅣㄴㄷㅐㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4687,7 +4687,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐㄴㅡㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ진댄': {              name: '-(으)ㄹ진댄',              rules: [                  suffixInflection('ㄹㅈㅣㄴㄷㅐㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4701,7 +4701,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㄷㅐㄴ', '', [], ['p']),              ],          }, -        { +        '-(으)ㄹ진저': {              name: '-(으)ㄹ진저',              rules: [                  suffixInflection('ㄹㅈㅣㄴㅈㅓ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4715,7 +4715,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㄹㅈㅣㄴㅈㅓ', '', [], ['p']),              ],          }, -        { +        '-(으)ㅁ': {              name: '-(으)ㅁ',              rules: [                  suffixInflection('ㅁ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4729,7 +4729,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)ㅁ세': {              name: '-(으)ㅁ세',              rules: [                  suffixInflection('ㅁㅅㅔ', 'ㄷㅏ', [], ['v']), @@ -4740,7 +4740,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅁㅅㅔ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)ㅁ도': {              name: '-(으)ㅁ도',              rules: [                  suffixInflection('ㅁㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4754,7 +4754,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㄷㅗ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)ㅁ에랴': {              name: '-(으)ㅁ에랴',              rules: [                  suffixInflection('ㅁㅇㅔㄹㅑ', 'ㄷㅏ', [], ['v', 'adj', 'ida']), @@ -4768,7 +4768,7 @@ export const koreanTransforms = {                  suffixInflection('ㅇㅡㅁㅇㅔㄹㅑ', '', [], ['p', 'f']),              ],          }, -        { +        '-(으)ㅂ쇼': {              name: '-(으)ㅂ쇼',              rules: [                  suffixInflection('ㅂㅅㅛ', 'ㄷㅏ', [], ['v']), @@ -4779,7 +4779,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅂㅅㅛ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)ㅂ시다 1': {              name: '-(으)ㅂ시다',              rules: [                  suffixInflection('ㅂㅅㅣㄷㅏ', 'ㄷㅏ', [], ['v']), @@ -4790,7 +4790,7 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅂㅅㅣㄷㅏ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-(으)ㅂ시다 2': {              name: '-(으)ㅂ시다',              rules: [                  suffixInflection('ㅂㅅㅣㅅㅏ', 'ㄷㅏ', [], ['v']), @@ -4802,7 +4802,7 @@ export const koreanTransforms = {                  suffixInflection('ㅂㅅㅣㅅㅏ', '', [], ['eusi']),              ],          }, -        { +        '-(으)ㅂ시오': {              name: '-(으)ㅂ시오',              rules: [                  suffixInflection('ㅂㅅㅣㅇㅗ', 'ㄷㅏ', [], ['v']), @@ -4813,132 +4813,132 @@ export const koreanTransforms = {                  suffixInflection('ㄹㅇㅡㅂㅅㅣㅇㅗ', 'ㄷㄷㅏ', [], ['v']),              ],          }, -        { +        '-자': {              name: '-자',              rules: [                  suffixInflection('ㅈㅏ', 'ㄷㅏ', [], ['v', 'ida']),              ],          }, -        { +        '-자고': {              name: '-자고',              rules: [                  suffixInflection('ㅈㅏㄱㅗ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자구': {              name: '-자구',              rules: [                  suffixInflection('ㅈㅏㄱㅜ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자꾸나': {              name: '-자꾸나',              rules: [                  suffixInflection('ㅈㅏㄲㅜㄴㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자느니': {              name: '-자느니',              rules: [                  suffixInflection('ㅈㅏㄴㅡㄴㅣ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자니까': {              name: '-자니까',              rules: [                  suffixInflection('ㅈㅏㄴㅣㄲㅏ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자마자': {              name: '-자마자',              rules: [                  suffixInflection('ㅈㅏㅁㅏㅈㅏ', 'ㄷㅏ', [], ['v']),                  suffixInflection('ㅈㅏㅁㅏㅈㅏ', '', [], ['eusi']),              ],          }, -        { +        '-자며': {              name: '-자며',              rules: [                  suffixInflection('ㅈㅏㅁㅕ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자면': {              name: '-자면',              rules: [                  suffixInflection('ㅈㅏㅁㅕㄴ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자면서': {              name: '-자면서',              rules: [                  suffixInflection('ㅈㅏㅁㅕㄴㅅㅓ', 'ㄷㅏ', [], ['v']),              ],          }, -        { +        '-자손': {              name: '-자손',              rules: [                  suffixInflection('ㅈㅏㅅㅗㄴ', 'ㄷㅏ', [], ['v']),              ],          }, -        { -            name: '-자오-', +        '-자오': { +            name: '-자오',              rules: [                  suffixInflection('ㅈㅏㅇㅗ', 'ㄷㅏ', ['jao'], ['v']),              ],          }, -        { -            name: '-자옵-', +        '-자옵': { +            name: '-자옵',              rules: [                  suffixInflection('ㅈㅏㅇㅗㅂ', 'ㄷㅏ', ['jaob'], ['v']),              ],          }, -        { -            name: '-잡-', +        '-잡': { +            name: '-잡',              rules: [                  suffixInflection('ㅈㅏㅂ', 'ㄷㅏ', ['jab'], ['v']),              ],          }, -        { +        '-죠': {              name: '-죠',              rules: [                  suffixInflection('ㅈㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-지': {              name: '-지',              rules: [                  suffixInflection('ㅈㅣ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅣ', '', [], ['p', 'f', 'eusi']),              ],          }, -        { +        '-지마는': {              name: '-지마는',              rules: [                  suffixInflection('ㅈㅣㅁㅏㄴㅡㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅣㅁㅏㄴㅡㄴ', '', [], ['p', 'f']),              ],          }, -        { +        '-지만': {              name: '-지만',              rules: [                  suffixInflection('ㅈㅣㅁㅏㄴ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅣㅁㅏㄴ', '', [], ['p', 'f', 'euo', 'euob']),              ],          }, -        { +        '-지만서도': {              name: '-지만서도',              rules: [                  suffixInflection('ㅈㅣㅁㅏㄴㅅㅓㄷㅗ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅣㅁㅏㄴㅅㅓㄷㅗ', '', [], ['p', 'f']),              ],          }, -        { +        '-지요': {              name: '-지요',              rules: [                  suffixInflection('ㅈㅣㅇㅛ', 'ㄷㅏ', [], ['v', 'adj', 'ida']),                  suffixInflection('ㅈㅣㅇㅛ', '', [], ['p', 'f', 'eusi']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/la/latin-transforms.js b/ext/js/language/la/latin-transforms.js index 559420d5..60a99f44 100644 --- a/ext/js/language/la/latin-transforms.js +++ b/ext/js/language/la/latin-transforms.js @@ -125,8 +125,8 @@ export const latinTransforms = {              isDictionaryForm: true,          },      }, -    transforms: [ -        { +    transforms: { +        plural: {              name: 'plural',              description: 'Plural declension',              rules: [ @@ -137,26 +137,26 @@ export const latinTransforms = {                  suffixInflection('a', 'um', ['adj12'], ['adj12']),              ],          }, -        { +        feminine: {              name: 'feminine',              description: 'Adjective form',              rules: [                  suffixInflection('a', 'us', ['adj12'], ['adj12']),              ],          }, -        { +        neuter: {              name: 'neuter',              description: 'Adjective form',              rules: [                  suffixInflection('um', 'us', ['adj12'], ['adj12']),              ],          }, -        { +        ablative: {              name: 'ablative',              description: 'Ablative case',              rules: [                  suffixInflection('o', 'um', ['n2s'], ['n2s']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/language-transformer.js b/ext/js/language/language-transformer.js index 76a1b583..d80fa73c 100644 --- a/ext/js/language/language-transformer.js +++ b/ext/js/language/language-transformer.js @@ -50,16 +50,17 @@ export class LanguageTransformer {          /** @type {import('language-transformer-internal').Transform[]} */          const transforms2 = []; -        for (let i = 0, ii = transforms.length; i < ii; ++i) { -            const {name, rules} = transforms[i]; + +        for (const [transformId, transform] of Object.entries(transforms)) { +            const {name, description, rules} = transform;              /** @type {import('language-transformer-internal').Rule[]} */              const rules2 = [];              for (let j = 0, jj = rules.length; j < jj; ++j) {                  const {type, isInflected, deinflect, conditionsIn, conditionsOut} = rules[j];                  const conditionFlagsIn = this._getConditionFlagsStrict(conditionFlagsMap, conditionsIn); -                if (conditionFlagsIn === null) { throw new Error(`Invalid conditionsIn for transform[${i}].rules[${j}]`); } +                if (conditionFlagsIn === null) { throw new Error(`Invalid conditionsIn for transform ${transformId}.rules[${j}]`); }                  const conditionFlagsOut = this._getConditionFlagsStrict(conditionFlagsMap, conditionsOut); -                if (conditionFlagsOut === null) { throw new Error(`Invalid conditionsOut for transform[${i}].rules[${j}]`); } +                if (conditionFlagsOut === null) { throw new Error(`Invalid conditionsOut for transform ${transformId}.rules[${j}]`); }                  rules2.push({                      type,                      isInflected, @@ -70,7 +71,7 @@ export class LanguageTransformer {              }              const isInflectedTests = rules.map((rule) => rule.isInflected);              const heuristic = new RegExp(isInflectedTests.map((regExp) => regExp.source).join('|')); -            transforms2.push({name, rules: rules2, heuristic}); +            transforms2.push({id: transformId, name, description, rules: rules2, heuristic});          }          this._nextFlagIndex = nextFlagIndex; @@ -123,14 +124,14 @@ export class LanguageTransformer {              for (const transform of this._transforms) {                  if (!transform.heuristic.test(text)) { continue; } -                const {name, rules} = transform; +                const {id, rules} = transform;                  for (let j = 0, jj = rules.length; j < jj; ++j) {                      const rule = rules[j];                      if (!LanguageTransformer.conditionsMatch(conditions, rule.conditionsIn)) { continue; }                      const {isInflected, deinflect} = rule;                      if (!isInflected.test(text)) { continue; } -                    const isCycle = trace.some((frame) => frame.transform === name && frame.ruleIndex === j && frame.text === text); +                    const isCycle = trace.some((frame) => frame.transform === id && frame.ruleIndex === j && frame.text === text);                      if (isCycle) {                          log.warn(new Error(`Cycle detected in transform[${name}] rule[${j}] for text: ${text}\nTrace: ${JSON.stringify(trace)}`));                          continue; @@ -139,7 +140,7 @@ export class LanguageTransformer {                      results.push(LanguageTransformer.createTransformedText(                          deinflect(text),                          rule.conditionsOut, -                        this._extendTrace(trace, {transform: name, ruleIndex: j, text}), +                        this._extendTrace(trace, {transform: id, ruleIndex: j, text}),                      ));                  }              } @@ -148,6 +149,19 @@ export class LanguageTransformer {      }      /** +     * @param {string[]} inflectionRules +     * @returns {import('dictionary').InflectionRuleChain} +     */ +    getUserFacingInflectionRules(inflectionRules) { +        return inflectionRules.map((rule) => { +            const fullRule = this._transforms.find((transform) => transform.id === rule); +            if (typeof fullRule === 'undefined') { return {name: rule}; } +            const {name, description} = fullRule; +            return description ? {name, description} : {name}; +        }); +    } + +    /**       * @param {string} text       * @param {number} conditions       * @param {import('language-transformer-internal').Trace} trace diff --git a/ext/js/language/multi-language-transformer.js b/ext/js/language/multi-language-transformer.js index 4e85aa65..fec682a3 100644 --- a/ext/js/language/multi-language-transformer.js +++ b/ext/js/language/multi-language-transformer.js @@ -74,4 +74,17 @@ export class MultiLanguageTransformer {          if (typeof languageTransformer === 'undefined') { return [LanguageTransformer.createTransformedText(sourceText, 0, [])]; }          return languageTransformer.transform(sourceText);      } + +    /** +     * @param {string} language +     * @param {string[]} inflectionRules +     * @returns {import('dictionary').InflectionRuleChain} +     */ +    getUserFacingInflectionRules(language, inflectionRules) { +        const languageTransformer = this._languageTransformers.get(language); +        if (typeof languageTransformer === 'undefined') { +            return inflectionRules.map((rule) => ({name: rule})); +        } +        return languageTransformer.getUserFacingInflectionRules(inflectionRules); +    }  } diff --git a/ext/js/language/sga/old-irish-transforms.js b/ext/js/language/sga/old-irish-transforms.js index d444af1f..793c39a8 100644 --- a/ext/js/language/sga/old-irish-transforms.js +++ b/ext/js/language/sga/old-irish-transforms.js @@ -15,7 +15,7 @@   * along with this program.  If not, see <https://www.gnu.org/licenses/>.   */ -import {suffixInflection, prefixInflection} from '../language-transforms.js'; +import {prefixInflection, suffixInflection} from '../language-transforms.js';  /**   * @param {boolean} notBeginning @@ -40,36 +40,36 @@ function tryAlternateOrthography(notBeginning, originalOrthography, alternateOrt  export const oldIrishTransforms = {      language: 'sga',      conditions: {}, -    transforms: [ -        { +    transforms: { +        'nd for nn': {              name: 'nd for nn',              description: 'nd for nn',              rules: [                  suffixInflection('nd', 'nn', [], []),              ],          }, -        { +        'cg for c': {              name: 'cg for c',              description: 'cg for c',              rules: [                  tryAlternateOrthography(false, 'cg', 'c', [], []),              ],          }, -        { +        'td for t': {              name: 'td for t',              description: 'td for t',              rules: [                  tryAlternateOrthography(false, 'td', 't', [], []),              ],          }, -        { +        'pb for p': {              name: 'pb for p',              description: 'pb for p',              rules: [                  tryAlternateOrthography(false, 'pb', 'p', [], []),              ],          }, -        { +        'ǽ/æ for é': {              name: 'ǽ/æ for é',              description: 'ǽ/æ for é',              rules: [ @@ -77,7 +77,7 @@ export const oldIrishTransforms = {                  tryAlternateOrthography(false, 'æ', 'é', [], []),              ],          }, -        { +        'doubled vowel': {              name: 'doubled vowel',              description: 'Doubled Vowel',              rules: [ @@ -88,7 +88,7 @@ export const oldIrishTransforms = {                  tryAlternateOrthography(true, 'uu', 'ú', [], []),              ],          }, -        { +        'doubled consonant': {              name: 'doubled consonant',              description: 'Doubled Consonant',              rules: [ @@ -105,7 +105,7 @@ export const oldIrishTransforms = {                  tryAlternateOrthography(true, 'ss', 's', [], []),              ],          }, -        { +        'lenited': {              name: 'lenited',              description: 'Non-Beginning Lenition',              rules: [ @@ -114,7 +114,7 @@ export const oldIrishTransforms = {                  tryAlternateOrthography(true, 'th', 't', [], []),              ],          }, -        { +        'lenited (Middle Irish)': {              name: 'lenited (Middle Irish)',              description: 'Non-Beginning Lenition (Middle Irish)',              rules: [ @@ -123,7 +123,7 @@ export const oldIrishTransforms = {                  tryAlternateOrthography(true, 'dh', 'd', [], []),              ],          }, -        { +        '[IM] nasalized': {              name: '[IM] nasalized',              description: 'Nasalized Word',              rules: [ @@ -134,7 +134,7 @@ export const oldIrishTransforms = {                  prefixInflection('m-', '', [], []),              ],          }, -        { +        '[IM] nasalized (Middle Irish)': {              name: '[IM] nasalized (Middle Irish)',              description: 'Nasalized Word (Middle Irish)',              rules: [ @@ -143,7 +143,7 @@ export const oldIrishTransforms = {                  prefixInflection('dt', 'd', [], []),              ],          }, -        { +        '[IM] lenited': {              name: '[IM] lenited',              description: 'Lenited Word',              rules: [ @@ -152,7 +152,7 @@ export const oldIrishTransforms = {                  prefixInflection('th', 't', [], []),              ],          }, -        { +        '[IM] lenited (Middle Irish)': {              name: '[IM] lenited (Middle Irish)',              description: 'Lenited Word (Middle Irish)',              rules: [ @@ -161,7 +161,7 @@ export const oldIrishTransforms = {                  prefixInflection('dh', 'd', [], []),              ],          }, -        { +        '[IM] aspirated': {              name: '[IM] aspirated',              description: 'Aspirated Word',              rules: [ @@ -173,7 +173,7 @@ export const oldIrishTransforms = {                  prefixInflection('h-', '', [], []),              ],          }, -        { +        '[IM] geminated': {              name: '[IM] geminated',              description: 'Geminated Word',              rules: [ @@ -201,5 +201,5 @@ export const oldIrishTransforms = {                  prefixInflection('s-s', 's', [], []),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/sq/albanian-transforms.js b/ext/js/language/sq/albanian-transforms.js index 37657f49..0c6625c6 100644 --- a/ext/js/language/sq/albanian-transforms.js +++ b/ext/js/language/sq/albanian-transforms.js @@ -62,9 +62,9 @@ export const albanianTransforms = {              isDictionaryForm: true,          },      }, -    transforms: [ +    transforms: {          // Nouns -        { +        'definite': {              name: 'definite',              description: 'Definite form of a noun',              rules: [ @@ -85,14 +85,14 @@ export const albanianTransforms = {                  suffixInflection('ja', 'e', [], ['n']),              ],          }, -        { +        'singular definite accusative': {              name: 'singular definite accusative',              description: 'Singular definite accusative form of a noun',              rules: [                  suffixInflection('n', '', [], ['n']),              ],          }, -        { +        'plural': {              name: 'plural',              description: 'Plural form of a noun',              rules: [ @@ -101,7 +101,7 @@ export const albanianTransforms = {              ],          },          // Verbs -        { +        'present indicative second-person singular': {              name: 'present indicative second-person singular',              description: 'Present indicative second-person singular form of a verb',              rules: [ @@ -111,7 +111,7 @@ export const albanianTransforms = {                  suffixInflection('hesh', 'hem', [], ['v']),              ],          }, -        { +        'present indicative third-person singular': {              name: 'present indicative third-person singular',              description: 'Present indicative third-person singular form of a verb',              rules: [ @@ -121,7 +121,7 @@ export const albanianTransforms = {                  suffixInflection('het', 'hem', [], ['v']),              ],          }, -        { +        'present indicative first-person plural': {              name: 'present indicative first-person plural',              description: 'Present indicative first-person plural form of a verb',              rules: [ @@ -130,7 +130,7 @@ export const albanianTransforms = {                  suffixInflection('hemi', 'hem', [], ['v']),              ],          }, -        { +        'present indicative second-person plural': {              name: 'present indicative second-person plural',              description: 'Present indicative second-person plural form of a verb',              rules: [ @@ -139,7 +139,7 @@ export const albanianTransforms = {                  suffixInflection('heni', 'hem', [], ['v']),              ],          }, -        { +        'present indicative third-person plural': {              name: 'present indicative third-person plural',              description: 'Present indicative third-person plural form of a verb',              rules: [ @@ -148,7 +148,7 @@ export const albanianTransforms = {                  suffixInflection('hen', 'hem', [], ['v']),              ],          }, -        { +        'imperfect first-person singular indicative': {              name: 'imperfect first-person singular indicative',              description: 'Imperfect first-person singular indicative form of a verb',              rules: [ @@ -157,7 +157,7 @@ export const albanianTransforms = {                  suffixInflection('hesha', 'hem', [], ['v']),              ],          }, -        { +        'imperfect second-person singular indicative': {              name: 'imperfect second-person singular indicative',              description: 'Imperfect second-person singular indicative form of a verb',              rules: [ @@ -166,7 +166,7 @@ export const albanianTransforms = {                  suffixInflection('heshe', 'hem', [], ['v']),              ],          }, -        { +        'imperfect third-person singular indicative': {              name: 'imperfect third-person singular indicative',              description: 'Imperfect third-person singular indicative form of a verb',              rules: [ @@ -175,7 +175,7 @@ export const albanianTransforms = {                  suffixInflection('hej', 'hem', [], ['v']),              ],          }, -        { +        'imperfect first-person plural indicative': {              name: 'imperfect first-person plural indicative',              description: 'Imperfect first-person plural indicative form of a verb',              rules: [ @@ -184,7 +184,7 @@ export const albanianTransforms = {                  suffixInflection('heshim', 'hem', [], ['v']),              ],          }, -        { +        'imperfect second-person plural indicative': {              name: 'imperfect second-person plural indicative',              description: 'Imperfect second-person plural indicative form of a verb',              rules: [ @@ -193,7 +193,7 @@ export const albanianTransforms = {                  suffixInflection('heshit', 'hem', [], ['v']),              ],          }, -        { +        'imperfect third-person plural indicative': {              name: 'imperfect third-person plural indicative',              description: 'Imperfect third-person plural indicative form of a verb',              rules: [ @@ -202,7 +202,7 @@ export const albanianTransforms = {                  suffixInflection('heshin', 'hem', [], ['v']),              ],          }, -        { +        'aorist first-person singular indicative': {              name: 'aorist first-person singular indicative',              description: 'Aorist first-person singular indicative form of a verb',              rules: [ @@ -211,7 +211,7 @@ export const albanianTransforms = {                  conjugationIISuffixInflection('a', '', [], ['v']),              ],          }, -        { +        'aorist second-person singular indicative': {              name: 'aorist second-person singular indicative',              description: 'Aorist second-person singular indicative form of a verb',              rules: [ @@ -220,7 +220,7 @@ export const albanianTransforms = {                  conjugationIISuffixInflection('e', '', [], ['v']),              ],          }, -        { +        'aorist third-person singular indicative': {              name: 'aorist third-person singular indicative',              description: 'Aorist third-person singular indicative form of a verb',              rules: [ @@ -231,7 +231,7 @@ export const albanianTransforms = {                  suffixInflection('ye', 'ej', [], ['v']),              ],          }, -        { +        'aorist first-person plural indicative': {              name: 'aorist first-person plural indicative',              description: 'Aorist first-person plural indicative form of a verb',              rules: [ @@ -241,7 +241,7 @@ export const albanianTransforms = {                  conjugationIISuffixInflection('ëm', '', [], ['v']),              ],          }, -        { +        'aorist second-person plural indicative': {              name: 'aorist second-person plural indicative',              description: 'Aorist second-person plural indicative form of a verb',              rules: [ @@ -251,7 +251,7 @@ export const albanianTransforms = {                  conjugationIISuffixInflection('ët', '', [], ['v']),              ],          }, -        { +        'aorist third-person plural indicative': {              name: 'aorist third-person plural indicative',              description: 'Aorist third-person plural indicative form of a verb',              rules: [ @@ -261,7 +261,7 @@ export const albanianTransforms = {                  conjugationIISuffixInflection('ën', '', [], ['v']),              ],          }, -        { +        'imperative second-person singular present': {              name: 'imperative second-person singular present',              description: 'Imperative second-person singular present form of a verb',              rules: [ @@ -269,7 +269,7 @@ export const albanianTransforms = {                  suffixInflection('hu', 'hem', [], ['v']),              ],          }, -        { +        'imperative second-person plural present': {              name: 'imperative second-person plural present',              description: 'Imperative second-person plural present form of a verb',              rules: [ @@ -278,7 +278,7 @@ export const albanianTransforms = {                  suffixInflection('huni', 'hem', [], ['v']),              ],          }, -        { +        'participle': {              name: 'participle',              description: 'Participle form of a verb',              rules: [ @@ -288,7 +288,7 @@ export const albanianTransforms = {                  suffixInflection('yer', 'ej', [], ['v']),              ],          }, -        { +        'mediopassive': {              name: 'mediopassive',              description: 'Mediopassive form of a verb',              rules: [ @@ -296,49 +296,49 @@ export const albanianTransforms = {                  suffixInflection('hem', 'j', ['v'], ['v']),              ],          }, -        { +        'optative first-person singular present': {              name: 'optative first-person singular present',              description: 'Optative first-person singular present form of a verb',              rules: [                  suffixInflection('fsha', 'j', [], ['v']),              ],          }, -        { +        'optative second-person singular present': {              name: 'optative second-person singular present',              description: 'Optative second-person singular present form of a verb',              rules: [                  suffixInflection('fsh', 'j', [], ['v']),              ],          }, -        { +        'optative third-person singular present': {              name: 'optative third-person singular present',              description: 'Optative third-person singular present form of a verb',              rules: [                  suffixInflection('ftë', 'j', [], ['v']),              ],          }, -        { +        'optative first-person plural present': {              name: 'optative first-person plural present',              description: 'Optative first-person plural present form of a verb',              rules: [                  suffixInflection('fshim', 'j', [], ['v']),              ],          }, -        { +        'optative second-person plural present': {              name: 'optative second-person plural present',              description: 'Optative second-person plural present form of a verb',              rules: [                  suffixInflection('fshi', 'j', [], ['v']),              ],          }, -        { +        'optative third-person plural present': {              name: 'optative third-person plural present',              description: 'Optative third-person plural present form of a verb',              rules: [                  suffixInflection('fshin', 'j', [], ['v']),              ],          }, -        { +        'nominalization': {              name: 'nominalization',              description: 'Noun form of a verb',              rules: [ @@ -347,5 +347,5 @@ export const albanianTransforms = {                  suffixInflection('je', '', [], ['v']),              ],          }, -    ], +    },  }; diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index e9490346..f84328d9 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -70,16 +70,16 @@ export class Translator {       * @returns {Promise<{dictionaryEntries: import('dictionary').TermDictionaryEntry[], originalTextLength: number}>} An object containing dictionary entries and the length of the original source text.       */      async findTerms(mode, text, options) { -        const {enabledDictionaryMap, excludeDictionaryDefinitions, sortFrequencyDictionary, sortFrequencyDictionaryOrder} = options; +        const {enabledDictionaryMap, excludeDictionaryDefinitions, sortFrequencyDictionary, sortFrequencyDictionaryOrder, language} = options;          const tagAggregator = new TranslatorTagAggregator(); -        let {dictionaryEntries, originalTextLength} = await this._findTermsInternal(text, enabledDictionaryMap, options, tagAggregator); +        let {dictionaryEntries, originalTextLength} = await this._findTermsInternal(text, options, tagAggregator);          switch (mode) {              case 'group':                  dictionaryEntries = this._groupDictionaryEntriesByHeadword(dictionaryEntries, tagAggregator);                  break;              case 'merge': -                dictionaryEntries = await this._getRelatedDictionaryEntries(dictionaryEntries, options.mainDictionary, enabledDictionaryMap, tagAggregator); +                dictionaryEntries = await this._getRelatedDictionaryEntries(dictionaryEntries, options, tagAggregator);                  break;          } @@ -115,7 +115,9 @@ export class Translator {              if (pronunciations.length > 1) { this._sortTermDictionaryEntrySimpleData(pronunciations); }          } -        return {dictionaryEntries, originalTextLength}; +        const withUserFacingInflections = this._addUserFacingInflections(language, dictionaryEntries); + +        return {dictionaryEntries: withUserFacingInflections, originalTextLength};      }      /** @@ -206,23 +208,33 @@ export class Translator {      /**       * @param {string} text -     * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap       * @param {import('translation').FindTermsOptions} options       * @param {TranslatorTagAggregator} tagAggregator -     * @returns {Promise<import('translator').FindTermsResult>} +     * @returns {Promise<{dictionaryEntries: import('translation-internal').TermDictionaryEntry[], originalTextLength: number}>}       */ -    async _findTermsInternal(text, enabledDictionaryMap, options, tagAggregator) { -        if (options.removeNonJapaneseCharacters) { +    async _findTermsInternal(text, options, tagAggregator) { +        const {removeNonJapaneseCharacters, enabledDictionaryMap} = options; +        if (removeNonJapaneseCharacters) {              text = this._getJapaneseOnlyText(text);          }          if (text.length === 0) {              return {dictionaryEntries: [], originalTextLength: 0};          } -        const deinflections = await this._getDeinflections(text, enabledDictionaryMap, options); +        const deinflections = await this._getDeinflections(text, options); +        return this._getDictionaryEntries(deinflections, enabledDictionaryMap, tagAggregator); +    } + +    /** +     * @param {import('translation-internal').DatabaseDeinflection[]} deinflections +     * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap +     * @param {TranslatorTagAggregator} tagAggregator +     * @returns {{dictionaryEntries: import('translation-internal').TermDictionaryEntry[], originalTextLength: number}} +     */ +    _getDictionaryEntries(deinflections, enabledDictionaryMap, tagAggregator) {          let originalTextLength = 0; -        /** @type {import('dictionary').TermDictionaryEntry[]} */ +        /** @type {import('translation-internal').TermDictionaryEntry[]} */          const dictionaryEntries = [];          const ids = new Set();          for (const {databaseEntries, originalText, transformedText, deinflectedText, inflectionRuleChainCandidates} of deinflections) { @@ -247,19 +259,20 @@ export class Translator {                  ids.add(id);              }          } -          return {dictionaryEntries, originalTextLength};      }      /** -     * @param {import('dictionary').TermDictionaryEntry} existingEntry -     * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates +     * @param {import('translation-internal').TermDictionaryEntry} existingEntry +     * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates       */      _mergeInflectionRuleChains(existingEntry, inflectionRuleChainCandidates) {          const existingChains = existingEntry.inflectionRuleChainCandidates;          for (const {source, inflectionRules} of inflectionRuleChainCandidates) { -            const duplicate = existingChains.find((existingChain) => this._areArraysEqualIgnoreOrder(existingChain.inflectionRules, inflectionRules)); +            const duplicate = existingChains.find((existingChain) => { +                return this._areArraysEqualIgnoreOrder(existingChain.inflectionRules, inflectionRules); +            });              if (!duplicate) {                  existingEntry.inflectionRuleChainCandidates.push({source, inflectionRules});              } else if (duplicate.source !== source) { @@ -299,11 +312,10 @@ export class Translator {      /**       * @param {string} text -     * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap       * @param {import('translation').FindTermsOptions} options       * @returns {Promise<import('translation-internal').DatabaseDeinflection[]>}       */ -    async _getDeinflections(text, enabledDictionaryMap, options) { +    async _getDeinflections(text, options) {          let deinflections = (              options.deinflect ?              this._getAlgorithmDeinflections(text, options) : @@ -311,7 +323,7 @@ export class Translator {          );          if (deinflections.length === 0) { return []; } -        const {matchType, language} = options; +        const {matchType, language, enabledDictionaryMap} = options;          await this._addEntriesToDeinflections(language, deinflections, enabledDictionaryMap, matchType); @@ -455,7 +467,7 @@ export class Translator {                      const {trace, conditions} = deinflection;                      const postprocessedTextVariants = this._getTextVariants(deinflection.text, textPostprocessors, [null], sourceCache);                      for (const transformedText of postprocessedTextVariants) { -                        /** @type {import('dictionary').InflectionRuleChainCandidate} */ +                        /** @type {import('translation-internal').InflectionRuleChainCandidate} */                          const inflectionRuleChainCandidate = {                              source: 'algorithm',                              inflectionRules: trace.map((frame) => frame.transform), @@ -577,7 +589,7 @@ export class Translator {       * @param {string} transformedText       * @param {string} deinflectedText       * @param {number} conditions -     * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates +     * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates       * @returns {import('translation-internal').DatabaseDeinflection}       */      _createDeinflection(originalText, transformedText, deinflectedText, conditions, inflectionRuleChainCandidates) { @@ -587,20 +599,20 @@ export class Translator {      // Term dictionary entry grouping      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries -     * @param {string} mainDictionary -     * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation').FindTermsOptions} options       * @param {TranslatorTagAggregator} tagAggregator -     * @returns {Promise<import('dictionary').TermDictionaryEntry[]>} +     * @returns {Promise<import('translation-internal').TermDictionaryEntry[]>}       */ -    async _getRelatedDictionaryEntries(dictionaryEntries, mainDictionary, enabledDictionaryMap, tagAggregator) { +    async _getRelatedDictionaryEntries(dictionaryEntries, options, tagAggregator) { +        const {mainDictionary, enabledDictionaryMap} = options;          /** @type {import('translator').SequenceQuery[]} */          const sequenceList = []; -        /** @type {import('translator').DictionaryEntryGroup[]} */ +        /** @type {import('translation-internal').DictionaryEntryGroup[]} */          const groupedDictionaryEntries = []; -        /** @type {Map<number, import('translator').DictionaryEntryGroup>} */ +        /** @type {Map<number, import('translation-internal').DictionaryEntryGroup>} */          const groupedDictionaryEntriesMap = new Map(); -        /** @type {Map<number, import('dictionary').TermDictionaryEntry>} */ +        /** @type {Map<number, import('translation-internal').TermDictionaryEntry>} */          const ungroupedDictionaryEntriesMap = new Map();          for (const dictionaryEntry of dictionaryEntries) {              const {definitions: [{id, dictionary, sequences: [sequence]}]} = dictionaryEntry; @@ -642,8 +654,8 @@ export class Translator {      }      /** -     * @param {import('translator').DictionaryEntryGroup[]} groupedDictionaryEntries -     * @param {Map<number, import('dictionary').TermDictionaryEntry>} ungroupedDictionaryEntriesMap +     * @param {import('translation-internal').DictionaryEntryGroup[]} groupedDictionaryEntries +     * @param {Map<number, import('translation-internal').TermDictionaryEntry>} ungroupedDictionaryEntriesMap       * @param {import('translator').SequenceQuery[]} sequenceList       * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap       * @param {TranslatorTagAggregator} tagAggregator @@ -664,8 +676,8 @@ export class Translator {      }      /** -     * @param {import('translator').DictionaryEntryGroup[]} groupedDictionaryEntries -     * @param {Map<number, import('dictionary').TermDictionaryEntry>} ungroupedDictionaryEntriesMap +     * @param {import('translation-internal').DictionaryEntryGroup[]} groupedDictionaryEntries +     * @param {Map<number, import('translation-internal').TermDictionaryEntry>} ungroupedDictionaryEntriesMap       * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap       * @param {import('translation').TermEnabledDictionaryMap} secondarySearchDictionaryMap       * @param {TranslatorTagAggregator} tagAggregator @@ -675,7 +687,7 @@ export class Translator {          /** @type {import('dictionary-database').TermExactRequest[]} */          const termList = [];          const targetList = []; -        /** @type {Map<string, {groups: import('translator').DictionaryEntryGroup[]}>} */ +        /** @type {Map<string, {groups: import('translation-internal').DictionaryEntryGroup[]}>} */          const targetMap = new Map();          for (const group of groupedDictionaryEntries) { @@ -733,12 +745,12 @@ export class Translator {      }      /** -     * @param {Iterable<import('dictionary').TermDictionaryEntry>} dictionaryEntries +     * @param {Iterable<import('translation-internal').TermDictionaryEntry>} dictionaryEntries       * @param {TranslatorTagAggregator} tagAggregator -     * @returns {import('dictionary').TermDictionaryEntry[]} +     * @returns {import('translation-internal').TermDictionaryEntry[]}       */      _groupDictionaryEntriesByHeadword(dictionaryEntries, tagAggregator) { -        /** @type {Map<string, import('dictionary').TermDictionaryEntry[]>} */ +        /** @type {Map<string, import('translation-internal').TermDictionaryEntry[]>} */          const groups = new Map();          for (const dictionaryEntry of dictionaryEntries) {              const {inflectionRuleChainCandidates, headwords: [{term, reading}]} = dictionaryEntry; @@ -761,7 +773,7 @@ export class Translator {      // Removing data      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       * @param {Set<string>} excludeDictionaryDefinitions       */      _removeExcludedDefinitions(dictionaryEntries, excludeDictionaryDefinitions) { @@ -785,7 +797,7 @@ export class Translator {      }      /** -     * @param {import('dictionary').TermDictionaryEntry} dictionaryEntry +     * @param {import('translation-internal').TermDictionaryEntry} dictionaryEntry       */      _removeUnusedHeadwords(dictionaryEntry) {          const {definitions, pronunciations, frequencies, headwords} = dictionaryEntry; @@ -1071,7 +1083,7 @@ export class Translator {      // Metadata      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       * @param {import('translation').TermEnabledDictionaryMap} enabledDictionaryMap       * @param {TranslatorTagAggregator} tagAggregator       */ @@ -1543,7 +1555,7 @@ export class Translator {      /**       * @param {boolean} isPrimary -     * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates +     * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates       * @param {number} score       * @param {number} dictionaryIndex       * @param {number} dictionaryPriority @@ -1551,7 +1563,7 @@ export class Translator {       * @param {number} maxOriginalTextLength       * @param {import('dictionary').TermHeadword[]} headwords       * @param {import('dictionary').TermDefinition[]} definitions -     * @returns {import('dictionary').TermDictionaryEntry} +     * @returns {import('translation-internal').TermDictionaryEntry}       */      _createTermDictionaryEntry(isPrimary, inflectionRuleChainCandidates, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount, maxOriginalTextLength, headwords, definitions) {          return { @@ -1576,11 +1588,11 @@ export class Translator {       * @param {string} originalText       * @param {string} transformedText       * @param {string} deinflectedText -     * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates +     * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates       * @param {boolean} isPrimary       * @param {Map<string, import('translation').FindTermDictionary>} enabledDictionaryMap       * @param {TranslatorTagAggregator} tagAggregator -     * @returns {import('dictionary').TermDictionaryEntry} +     * @returns {import('translation-internal').TermDictionaryEntry}       */      _createTermDictionaryEntryFromDatabaseEntry(databaseEntry, originalText, transformedText, deinflectedText, inflectionRuleChainCandidates, isPrimary, enabledDictionaryMap, tagAggregator) {          const { @@ -1628,10 +1640,10 @@ export class Translator {      }      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       * @param {boolean} checkDuplicateDefinitions       * @param {TranslatorTagAggregator} tagAggregator -     * @returns {import('dictionary').TermDictionaryEntry} +     * @returns {import('translation-internal').TermDictionaryEntry}       */      _createGroupedDictionaryEntry(dictionaryEntries, checkDuplicateDefinitions, tagAggregator) {          // Headwords are generated before sorting, so that the order of dictionaryEntries can be maintained @@ -1864,13 +1876,13 @@ export class Translator {      }      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       */      _sortTermDictionaryEntries(dictionaryEntries) {          const stringComparer = this._stringComparer;          /** -         * @param {import('dictionary').TermDictionaryEntry} v1 -         * @param {import('dictionary').TermDictionaryEntry} v2 +         * @param {import('translation-internal').TermDictionaryEntry} v1 +         * @param {import('translation-internal').TermDictionaryEntry} v2           * @returns {number}           */          const compareFunction = (v1, v2) => { @@ -1968,7 +1980,7 @@ export class Translator {      }      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       */      _sortTermDictionaryEntriesById(dictionaryEntries) {          if (dictionaryEntries.length <= 1) { return; } @@ -2033,7 +2045,7 @@ export class Translator {      }      /** -     * @param {import('dictionary').TermDictionaryEntry[]} dictionaryEntries +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries       * @param {string} dictionary       * @param {boolean} ascending       */ @@ -2078,7 +2090,7 @@ export class Translator {      }      /** -     * @param {import('dictionary').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates +     * @param {import('translation-internal').InflectionRuleChainCandidate[]} inflectionRuleChainCandidates       * @returns {number}       */      _getShortestInflectionChainLength(inflectionRuleChainCandidates) { @@ -2090,6 +2102,25 @@ export class Translator {          return length;      } + +    /** +     * @param {string} language +     * @param {import('translation-internal').TermDictionaryEntry[]} dictionaryEntries +     * @returns {import('dictionary').TermDictionaryEntry[]} +     */ +    _addUserFacingInflections(language, dictionaryEntries) { +        const result = []; +        for (const dictionaryEntry of dictionaryEntries) { +            const {inflectionRuleChainCandidates} = dictionaryEntry; +            const expandedChains = inflectionRuleChainCandidates.map(({source, inflectionRules}) => ({ +                source, +                inflectionRules: this._multiLanguageTransformer.getUserFacingInflectionRules(language, inflectionRules), +            })); +            result.push({...dictionaryEntry, inflectionRuleChainCandidates: expandedChains}); +        } +        return result; +    } +      // Miscellaneous      /** |