Simplify getSequencedDefinitions and dictTermsMergeBySequence

This commit is contained in:
toasted-nutbread 2020-01-28 18:58:14 -05:00
parent 09a1214f49
commit 1d9332cb69
2 changed files with 19 additions and 15 deletions

View File

@ -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) {

View File

@ -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);