From 8a377cabe6b3d177aac50cdb7ffb5a4328d27fd0 Mon Sep 17 00:00:00 2001 From: toasted-nutbread Date: Fri, 17 Dec 2021 17:02:13 -0500 Subject: matchType/deinflect distinction (#2040) * Pass a "deinflect" option to findTerms * Update Translator to use deinflect option * Fix test input options --- ext/js/language/translator.js | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'ext/js/language/translator.js') diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index dd7d54a0..31a3b7ed 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -234,12 +234,7 @@ class Translator { return {dictionaryEntries: [], originalTextLength: 0}; } - const {matchType} = options; - const deinflections = await ( - matchType && matchType !== 'exact' ? - this._findTermsWildcard(text, enabledDictionaryMap, matchType) : - this._findTermDeinflections(text, enabledDictionaryMap, options) - ); + const deinflections = await this._findTermsInternal2(text, enabledDictionaryMap, options); let originalTextLength = 0; const dictionaryEntries = []; @@ -259,17 +254,13 @@ class Translator { return {dictionaryEntries, originalTextLength}; } - async _findTermsWildcard(text, enabledDictionaryMap, matchType) { - const databaseEntries = await this._database.findTermsBulk([text], enabledDictionaryMap, matchType); - return databaseEntries.length > 0 ? [this._createDeinflection(text, text, text, 0, [], databaseEntries)] : []; - } - - async _findTermDeinflections(text, enabledDictionaryMap, options) { - const deinflections = this._getAllDeinflections(text, options); - - if (deinflections.length === 0) { - return []; - } + async _findTermsInternal2(text, enabledDictionaryMap, options) { + const deinflections = ( + options.deinflect ? + this._getAllDeinflections(text, options) : + [this._createDeinflection(text, text, text, 0, [], [])] + ); + if (deinflections.length === 0) { return []; } const uniqueDeinflectionTerms = []; const uniqueDeinflectionArrays = []; @@ -286,7 +277,8 @@ class Translator { deinflectionArray.push(deinflection); } - const databaseEntries = await this._database.findTermsBulk(uniqueDeinflectionTerms, enabledDictionaryMap, null); + const {matchType} = options; + const databaseEntries = await this._database.findTermsBulk(uniqueDeinflectionTerms, enabledDictionaryMap, matchType); for (const databaseEntry of databaseEntries) { const definitionRules = Deinflector.rulesToRuleFlags(databaseEntry.rules); -- cgit v1.2.3