diff options
Diffstat (limited to 'ext/js/language/deinflector.js')
-rw-r--r-- | ext/js/language/deinflector.js | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/ext/js/language/deinflector.js b/ext/js/language/deinflector.js index b6759215..4b2c1bc7 100644 --- a/ext/js/language/deinflector.js +++ b/ext/js/language/deinflector.js @@ -20,15 +20,8 @@ class Deinflector { this.reasons = Deinflector.normalizeReasons(reasons); } - deinflect(source, rawSource) { - const results = [{ - source, - rawSource, - term: source, - rules: 0, - reasons: [], - databaseDefinitions: [] - }]; + deinflect(source) { + const results = [this._createDeinflection(source, 0, [])]; for (let i = 0; i < results.length; ++i) { const {rules, term, reasons} = results[i]; for (const [reason, variants] of this.reasons) { @@ -41,20 +34,21 @@ class Deinflector { continue; } - results.push({ - source, - rawSource, - term: term.substring(0, term.length - kanaIn.length) + kanaOut, - rules: rulesOut, - reasons: [reason, ...reasons], - databaseDefinitions: [] - }); + results.push(this._createDeinflection( + term.substring(0, term.length - kanaIn.length) + kanaOut, + rulesOut, + [reason, ...reasons] + )); } } } return results; } + _createDeinflection(term, rules, reasons) { + return {term, rules, reasons}; + } + static normalizeReasons(reasons) { const normalizedReasons = []; for (const [reason, reasonInfo] of Object.entries(reasons)) { @@ -63,8 +57,8 @@ class Deinflector { variants.push([ kanaIn, kanaOut, - Deinflector.rulesToRuleFlags(rulesIn), - Deinflector.rulesToRuleFlags(rulesOut) + this.rulesToRuleFlags(rulesIn), + this.rulesToRuleFlags(rulesOut) ]); } normalizedReasons.push([reason, variants]); @@ -73,7 +67,7 @@ class Deinflector { } static rulesToRuleFlags(rules) { - const ruleTypes = Deinflector.ruleTypes; + const ruleTypes = this._ruleTypes; let value = 0; for (const rule of rules) { const ruleBits = ruleTypes.get(rule); @@ -84,7 +78,8 @@ class Deinflector { } } -Deinflector.ruleTypes = new Map([ +// eslint-disable-next-line no-underscore-dangle +Deinflector._ruleTypes = new Map([ ['v1', 0b00000001], // Verb ichidan ['v5', 0b00000010], // Verb godan ['vs', 0b00000100], // Verb suru |