diff options
Diffstat (limited to 'ext/mixed')
-rw-r--r-- | ext/mixed/js/dictionary-data-util.js | 9 | ||||
-rw-r--r-- | ext/mixed/js/display-generator.js | 51 |
2 files changed, 5 insertions, 55 deletions
diff --git a/ext/mixed/js/dictionary-data-util.js b/ext/mixed/js/dictionary-data-util.js index 72c28172..709f4ead 100644 --- a/ext/mixed/js/dictionary-data-util.js +++ b/ext/mixed/js/dictionary-data-util.js @@ -17,16 +17,13 @@ class DictionaryDataUtil { static getPitchAccentInfos(definition) { - if (typeof definition.character === 'string') { - // Kanji - return []; - } + const {type} = definition; + if (type === 'kanji') { return []; } const results = new Map(); const allExpressions = new Set(); const allReadings = new Set(); - const expressions = definition.expressions; - const sources = Array.isArray(expressions) ? expressions : [definition]; + const sources = [definition]; for (const {pitches: expressionPitches, expression} of sources) { allExpressions.add(expression); diff --git a/ext/mixed/js/display-generator.js b/ext/mixed/js/display-generator.js index 7f8235e2..926eb25d 100644 --- a/ext/mixed/js/display-generator.js +++ b/ext/mixed/js/display-generator.js @@ -45,12 +45,12 @@ class DisplayGenerator { const debugInfoContainer = node.querySelector('.debug-info'); const bodyContainer = node.querySelector('.term-entry-body'); - const {termTags, expressions, definitions} = details; + const {termTags, expressions, definitions, type} = details; const pitches = DictionaryDataUtil.getPitchAccentInfos(details); const pitchCount = pitches.reduce((i, v) => i + v.pitches.length, 0); - const expressionMulti = Array.isArray(expressions); + const expressionMulti = (type === 'termMerged' || type === 'termMergedByGlossary'); const definitionMulti = Array.isArray(definitions); const expressionCount = expressionMulti ? expressions.length : 1; const definitionCount = definitionMulti ? definitions.length : 1; @@ -568,51 +568,4 @@ class DisplayGenerator { container.appendChild(document.createTextNode(parts[i])); } } - - _getPitchInfos(definition) { - const results = new Map(); - - const allExpressions = new Set(); - const allReadings = new Set(); - const expressions = definition.expressions; - const sources = Array.isArray(expressions) ? expressions : [definition]; - for (const {pitches: expressionPitches, expression} of sources) { - allExpressions.add(expression); - for (const {reading, pitches, dictionary} of expressionPitches) { - allReadings.add(reading); - let dictionaryResults = results.get(dictionary); - if (typeof dictionaryResults === 'undefined') { - dictionaryResults = []; - results.set(dictionary, dictionaryResults); - } - - for (const {position, tags} of pitches) { - let pitchInfo = this._findExistingPitchInfo(reading, position, tags, dictionaryResults); - if (pitchInfo === null) { - pitchInfo = {expressions: new Set(), reading, position, tags}; - dictionaryResults.push(pitchInfo); - } - pitchInfo.expressions.add(expression); - } - } - } - - for (const dictionaryResults of results.values()) { - for (const result of dictionaryResults) { - const exclusiveExpressions = []; - const exclusiveReadings = []; - const resultExpressions = result.expressions; - if (!areSetsEqual(resultExpressions, allExpressions)) { - exclusiveExpressions.push(...getSetIntersection(resultExpressions, allExpressions)); - } - if (allReadings.size > 1) { - exclusiveReadings.push(result.reading); - } - result.exclusiveExpressions = exclusiveExpressions; - result.exclusiveReadings = exclusiveReadings; - } - } - - return [...results.entries()]; - } } |