diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-03-07 14:07:26 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-07 14:07:26 -0500 |
commit | 7793e14e57639426cb9ca64c82004151f9eaba05 (patch) | |
tree | 14aa497ee70bd18890e6e0af400b58cbe68add91 /ext/js/language/translator.js | |
parent | 92fe1571aeee0717b85c6b47ed203852faf42d80 (diff) |
Deinflector refactor (#1501)
* Make Deinflector._ruleTypes private
* Add createDeinflection helper
* Remove unnecessary field assignments from Deinflector
Move them to Translator instead
Diffstat (limited to 'ext/js/language/translator.js')
-rw-r--r-- | ext/js/language/translator.js | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index e20cc50f..18668306 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -250,18 +250,7 @@ class Translator { async _findTermWildcard(text, enabledDictionaryMap, wildcard) { const databaseDefinitions = await this._database.findTermsBulk([text], enabledDictionaryMap, wildcard); - if (databaseDefinitions.length === 0) { - return []; - } - - return [{ - source: text, - rawSource: text, - term: text, - rules: 0, - reasons: [], - databaseDefinitions - }]; + return databaseDefinitions.length > 0 ? [this._createDeinflection(text, text, text, 0, [], databaseDefinitions)] : []; } async _findTermDeinflections(text, enabledDictionaryMap, options) { @@ -341,18 +330,22 @@ class Translator { } for (let i = text2.length; i > 0; --i) { - const text2Substring = text2.substring(0, i); - if (used.has(text2Substring)) { break; } - used.add(text2Substring); + const source = text2.substring(0, i); + if (used.has(source)) { break; } + used.add(source); const rawSource = sourceMap.source.substring(0, sourceMap.getSourceLength(i)); - for (const deinflection of this._deinflector.deinflect(text2Substring, rawSource)) { - deinflections.push(deinflection); + for (const {term, rules, reasons} of this._deinflector.deinflect(source)) { + deinflections.push(this._createDeinflection(source, rawSource, term, rules, reasons, [])); } } } return deinflections; } + _createDeinflection(source, rawSource, term, rules, reasons, databaseDefinitions) { + return {source, rawSource, term, rules, reasons, databaseDefinitions}; + } + /** * @param definitions An array of 'term' definitions. * @param mainDictionary The name of the main dictionary. |