diff options
| author | siikamiika <siikamiika@users.noreply.github.com> | 2017-11-09 17:25:28 +0200 | 
|---|---|---|
| committer | siikamiika <siikamiika@users.noreply.github.com> | 2017-11-09 17:25:28 +0200 | 
| commit | 168285097004bcc99ecc1dae43e1429c05443d40 (patch) | |
| tree | 4d898fe5308dd537f8c594037e1efa67c1fdc27f | |
| parent | 5f6830c7dd88520ebf41c24ab51e2c3240039939 (diff) | |
merged mode: expand termTags earlier
Fixes errors with main dictionary other than JMdict
| -rw-r--r-- | ext/bg/js/dictionary.js | 24 | ||||
| -rw-r--r-- | ext/bg/js/translator.js | 22 | 
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))                      });                  }              } |