aboutsummaryrefslogtreecommitdiff
path: root/ext/js/language/translator.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-03-07 14:07:26 -0500
committerGitHub <noreply@github.com>2021-03-07 14:07:26 -0500
commit7793e14e57639426cb9ca64c82004151f9eaba05 (patch)
tree14aa497ee70bd18890e6e0af400b58cbe68add91 /ext/js/language/translator.js
parent92fe1571aeee0717b85c6b47ed203852faf42d80 (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.js27
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.