summaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
authorsiikamiika <siikamiika@users.noreply.github.com>2017-11-09 17:25:28 +0200
committersiikamiika <siikamiika@users.noreply.github.com>2017-11-09 17:25:28 +0200
commit168285097004bcc99ecc1dae43e1429c05443d40 (patch)
tree4d898fe5308dd537f8c594037e1efa67c1fdc27f /ext/bg
parent5f6830c7dd88520ebf41c24ab51e2c3240039939 (diff)
merged mode: expand termTags earlier
Fixes errors with main dictionary other than JMdict
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/js/dictionary.js24
-rw-r--r--ext/bg/js/translator.js22
2 files changed, 27 insertions, 19 deletions
diff --git a/ext/bg/js/dictionary.js b/ext/bg/js/dictionary.js
index fea5f3e5..368bb18d 100644
--- a/ext/bg/js/dictionary.js
+++ b/ext/bg/js/dictionary.js
@@ -245,22 +245,26 @@ function dictTermsMergeByGloss(result, definitions, appendTo, mergedIndices) {
result.expression.add(definition.expression);
result.reading.add(definition.reading);
- // result->expressions[ Expression1[ Reading1[ Tag1, Tag2 ] ], Expression2, ... ]
- if (!result.expressions.has(definition.expression)) {
- result.expressions.set(definition.expression, new Map());
- }
- if (!result.expressions.get(definition.expression).has(definition.reading)) {
- result.expressions.get(definition.expression).set(definition.reading, new Set());
- }
-
for (const tag of definition.definitionTags) {
if (!definitionsByGloss[gloss].definitionTags.find(existingTag => existingTag.name === tag.name)) {
definitionsByGloss[gloss].definitionTags.push(tag);
}
}
- for (const tag of definition.termTags) {
- result.expressions.get(definition.expression).get(definition.reading).add(tag);
+ if (!appendTo) {
+ // result->expressions[ Expression1[ Reading1[ Tag1, Tag2 ] ], Expression2, ... ]
+ if (!result.expressions.has(definition.expression)) {
+ result.expressions.set(definition.expression, new Map());
+ }
+ if (!result.expressions.get(definition.expression).has(definition.reading)) {
+ result.expressions.get(definition.expression).set(definition.reading, []);
+ }
+
+ for (const tag of definition.termTags) {
+ if (!result.expressions.get(definition.expression).get(definition.reading).find(existingTag => existingTag.name === tag.name)) {
+ result.expressions.get(definition.expression).get(definition.reading).push(tag);
+ }
+ }
}
}
diff --git a/ext/bg/js/translator.js b/ext/bg/js/translator.js
index 005dd5de..c6af1f4e 100644
--- a/ext/bg/js/translator.js
+++ b/ext/bg/js/translator.js
@@ -75,9 +75,11 @@ class Translator {
const rawDefinitionsBySequence = await this.database.findTermsBySequence(Number(sequence), options.general.mainDictionary);
for (const definition of rawDefinitionsBySequence) {
- const tags = await this.expandTags(definition.definitionTags, definition.dictionary);
- tags.push(dictTagBuildSource(definition.dictionary));
- definition.definitionTags = tags;
+ const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
+ definitionTags.push(dictTagBuildSource(definition.dictionary));
+ definition.definitionTags = definitionTags;
+ const termTags = await this.expandTags(definition.termTags, definition.dictionary);
+ definition.termTags = termTags;
}
const definitionsByGloss = dictTermsMergeByGloss(result, rawDefinitionsBySequence);
@@ -91,9 +93,11 @@ class Translator {
for (const reading of result.expressions.get(expression).keys()) {
for (const definition of await this.database.findTermsExact(expression, reading, secondarySearchTitles)) {
- const tags = await this.expandTags(definition.definitionTags, definition.dictionary);
- tags.push(dictTagBuildSource(definition.dictionary));
- definition.definitionTags = tags;
+ const definitionTags = await this.expandTags(definition.definitionTags, definition.dictionary);
+ definitionTags.push(dictTagBuildSource(definition.dictionary));
+ definition.definitionTags = definitionTags;
+ const termTags = await this.expandTags(definition.termTags, definition.dictionary);
+ definition.termTags = termTags;
secondarySearchResults.push(definition);
}
}
@@ -113,11 +117,11 @@ class Translator {
const expressions = [];
for (const expression of result.expressions.keys()) {
for (const reading of result.expressions.get(expression).keys()) {
- const tags = await this.expandTags(result.expressions.get(expression).get(reading), result.dictionary);
+ const termTags = result.expressions.get(expression).get(reading);
expressions.push({
expression: expression,
reading: reading,
- termTags: dictTagsSort(tags),
+ termTags: dictTagsSort(termTags),
termFrequency: (score => {
if (score > 0) {
return 'popular';
@@ -126,7 +130,7 @@ class Translator {
} else {
return 'normal';
}
- })(tags.map(tag => tag.score).reduce((p, v) => p + v, 0))
+ })(termTags.map(tag => tag.score).reduce((p, v) => p + v, 0))
});
}
}