matchType/deinflect distinction (#2040)
* Pass a "deinflect" option to findTerms * Update Translator to use deinflect option * Fix test input options
This commit is contained in:
parent
8e548a17eb
commit
8a377cabe6
@ -1080,7 +1080,7 @@ class Backend {
|
||||
const jp = this._japaneseUtil;
|
||||
const mode = 'simple';
|
||||
const options = this._getProfileOptions(optionsContext);
|
||||
const details = {matchType: 'exact'};
|
||||
const details = {matchType: 'exact', deinflect: true};
|
||||
const findTermsOptions = this._getTranslatorFindTermsOptions(mode, details, options);
|
||||
const results = [];
|
||||
let previousUngroupedSegment = null;
|
||||
@ -1959,8 +1959,9 @@ class Backend {
|
||||
}
|
||||
|
||||
_getTranslatorFindTermsOptions(mode, details, options) {
|
||||
let {matchType} = details;
|
||||
let {matchType, deinflect} = details;
|
||||
if (typeof matchType !== 'string') { matchType = 'exact'; }
|
||||
if (typeof deinflect !== 'boolean') { deinflect = true; }
|
||||
const enabledDictionaryMap = this._getTranslatorEnabledDictionaryMap(options);
|
||||
const {
|
||||
general: {mainDictionary, sortFrequencyDictionary, sortFrequencyDictionaryOrder},
|
||||
@ -1988,6 +1989,7 @@ class Backend {
|
||||
}
|
||||
return {
|
||||
matchType,
|
||||
deinflect,
|
||||
mainDictionary,
|
||||
sortFrequencyDictionary,
|
||||
sortFrequencyDictionaryOrder,
|
||||
|
@ -851,8 +851,10 @@ class Display extends EventDispatcher {
|
||||
if (match !== null) {
|
||||
if (match[1]) {
|
||||
findDetails.matchType = 'suffix';
|
||||
findDetails.deinflect = false;
|
||||
} else if (match[3]) {
|
||||
findDetails.matchType = 'prefix';
|
||||
findDetails.deinflect = false;
|
||||
}
|
||||
source = match[2];
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -12,7 +12,8 @@
|
||||
]
|
||||
},
|
||||
"default": {
|
||||
"wildcard": null,
|
||||
"matchType": "exact",
|
||||
"deinflect": true,
|
||||
"mainDictionary": "${title}",
|
||||
"sortFrequencyDictionary": null,
|
||||
"sortFrequencyDictionaryOrder": "descending",
|
||||
|
Loading…
Reference in New Issue
Block a user