Simplify getSequencedDefinitions and dictTermsMergeBySequence
This commit is contained in:
parent
09a1214f49
commit
1d9332cb69
@ -159,11 +159,14 @@ function dictTermsGroup(definitions, dictionaries) {
|
||||
}
|
||||
|
||||
function dictTermsMergeBySequence(definitions, mainDictionary) {
|
||||
const definitionsBySequence = {'-1': []};
|
||||
const sequencedDefinitions = new Map();
|
||||
const nonSequencedDefinitions = [];
|
||||
for (const definition of definitions) {
|
||||
if (mainDictionary === definition.dictionary && definition.sequence >= 0) {
|
||||
if (!definitionsBySequence[definition.sequence]) {
|
||||
definitionsBySequence[definition.sequence] = {
|
||||
const sequence = definition.sequence;
|
||||
if (mainDictionary === definition.dictionary && sequence >= 0) {
|
||||
sequencedDefinition = sequencedDefinitions.get(sequence);
|
||||
if (typeof sequencedDefinition === 'undefined') {
|
||||
sequencedDefinition = {
|
||||
reasons: definition.reasons,
|
||||
score: Number.MIN_SAFE_INTEGER,
|
||||
expression: new Set(),
|
||||
@ -173,15 +176,16 @@ function dictTermsMergeBySequence(definitions, mainDictionary) {
|
||||
dictionary: definition.dictionary,
|
||||
definitions: []
|
||||
};
|
||||
}
|
||||
const score = Math.max(definitionsBySequence[definition.sequence].score, definition.score);
|
||||
definitionsBySequence[definition.sequence].score = score;
|
||||
sequencedDefinitions.set(sequence, sequencedDefinition);
|
||||
} else {
|
||||
definitionsBySequence['-1'].push(definition);
|
||||
sequencedDefinition.score = Math.max(sequencedDefinition.score, definition.score);
|
||||
}
|
||||
} else {
|
||||
nonSequencedDefinitions.push(definition);
|
||||
}
|
||||
}
|
||||
|
||||
return definitionsBySequence;
|
||||
return [sequencedDefinitions, nonSequencedDefinitions];
|
||||
}
|
||||
|
||||
function dictTermsMergeByGloss(result, definitions, appendTo, mergedIndices) {
|
||||
|
@ -48,14 +48,14 @@ class Translator {
|
||||
}
|
||||
|
||||
async getSequencedDefinitions(definitions, mainDictionary) {
|
||||
const definitionsBySequence = dictTermsMergeBySequence(definitions, mainDictionary);
|
||||
const defaultDefinitions = definitionsBySequence['-1'];
|
||||
const [definitionsBySequence, defaultDefinitions] = dictTermsMergeBySequence(definitions, mainDictionary);
|
||||
|
||||
const sequenceList = Object.keys(definitionsBySequence).map((v) => Number(v)).filter((v) => v >= 0);
|
||||
const sequencedDefinitions = sequenceList.map((key) => ({
|
||||
definitions: definitionsBySequence[key],
|
||||
rawDefinitions: []
|
||||
}));
|
||||
const sequenceList = [];
|
||||
const sequencedDefinitions = [];
|
||||
for (const [key, value] of definitionsBySequence.entries()) {
|
||||
sequenceList.push(key);
|
||||
sequencedDefinitions.push({definitions: value, rawDefinitions: []});
|
||||
}
|
||||
|
||||
for (const definition of await this.database.findTermsBySequenceBulk(sequenceList, mainDictionary)) {
|
||||
sequencedDefinitions[definition.index].rawDefinitions.push(definition);
|
||||
|
Loading…
Reference in New Issue
Block a user