diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-04-03 15:41:44 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-04-15 18:22:12 -0400 |
commit | b96f07140b932a2a5031faa4744aa9899ad3c910 (patch) | |
tree | fe1a1346d8a9d1bc2ac0df42a47452b520bccebb /ext/js | |
parent | 19aa68b1ecba5cbf10d5dc97006d720fa1abb581 (diff) |
Improve term dictionary entry sequence (#1591)
* Improve sequence for merged entries and add sequenceDictionary
* Update docs
* Expose sequence in definitions
* Expose sequence in root definition
* Update test data
Diffstat (limited to 'ext/js')
-rw-r--r-- | ext/js/data/anki-note-data-creator.js | 6 | ||||
-rw-r--r-- | ext/js/language/translator.js | 20 |
2 files changed, 18 insertions, 8 deletions
diff --git a/ext/js/data/anki-note-data-creator.js b/ext/js/data/anki-note-data-creator.js index fb9c8b8c..e7abaa21 100644 --- a/ext/js/data/anki-note-data-creator.js +++ b/ext/js/data/anki-note-data-creator.js @@ -265,7 +265,7 @@ class AnkiNoteDataCreator { case 'merge': type = 'termMerged'; break; } - const {id, inflections, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount} = dictionaryEntry; + const {id, inflections, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount, sequence} = dictionaryEntry; const { screenshotFileName=null, @@ -298,7 +298,7 @@ class AnkiNoteDataCreator { reasons: inflections, score, isPrimary: (type === 'term' ? dictionaryEntry.isPrimary : void 0), - sequence: (type === 'term' ? dictionaryEntry.sequence : void 0), + sequence, get dictionary() { return self.getCachedValue(dictionaryNames)[0]; }, dictionaryOrder: { index: dictionaryIndex, @@ -362,7 +362,9 @@ class AnkiNoteDataCreator { } if (!hasDefinitions) { continue; } const only = merged ? DictionaryDataUtil.getDisambiguations(dictionaryEntry.headwords, headwordIndices, allTermsSet, allReadingsSet) : void 0; + const {sequence} = dictionaryEntry; definitions.push({ + sequence, dictionary, glossary: entries, definitionTags: definitionTags2, diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index e99ac8db..e066d62e 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -353,7 +353,12 @@ class Translator { if (mainDictionary === dictionary && sequence >= 0) { let group = groupedDictionaryEntriesMap.get(sequence); if (typeof group === 'undefined') { - group = {ids: new Set(), dictionaryEntries: []}; + group = { + sequence, + sequenceDictionary: dictionary, + ids: new Set(), + dictionaryEntries: [] + }; sequenceList.push({query: sequence, dictionary}); groupedDictionaryEntries.push(group); groupedDictionaryEntriesMap.set(sequence, group); @@ -378,7 +383,7 @@ class Translator { const newDictionaryEntries = []; for (const group of groupedDictionaryEntries) { - newDictionaryEntries.push(this._createGroupedDictionaryEntry(group.dictionaryEntries, true)); + newDictionaryEntries.push(this._createGroupedDictionaryEntry(group.dictionaryEntries, group.sequence, group.sequenceDictionary, true)); } newDictionaryEntries.push(...this._groupDictionaryEntriesByHeadword(ungroupedDictionaryEntriesMap.values())); return newDictionaryEntries; @@ -480,7 +485,7 @@ class Translator { const results = []; for (const dictionaryEntries2 of groups.values()) { - const dictionaryEntry = this._createGroupedDictionaryEntry(dictionaryEntries2, false); + const dictionaryEntry = this._createGroupedDictionaryEntry(dictionaryEntries2, -1, null, false); results.push(dictionaryEntry); } return results; @@ -933,12 +938,13 @@ class Translator { return {index, headwordIndex, dictionary, dictionaryIndex, dictionaryPriority, hasReading, frequency}; } - _createTermDictionaryEntry(id, isPrimary, sequence, inflections, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount, maxTransformedTextLength, headwords, definitions) { + _createTermDictionaryEntry(id, isPrimary, sequence, sequenceDictionary, inflections, score, dictionaryIndex, dictionaryPriority, sourceTermExactMatchCount, maxTransformedTextLength, headwords, definitions) { return { type: 'term', id, isPrimary, sequence, + sequenceDictionary, inflections, score, dictionaryIndex, @@ -969,6 +975,7 @@ class Translator { id, isPrimary, sequence, + sequence >= 0 ? dictionary : null, reasons, score, dictionaryIndex, @@ -980,7 +987,7 @@ class Translator { ); } - _createGroupedDictionaryEntry(dictionaryEntries, checkDuplicateDefinitions) { + _createGroupedDictionaryEntry(dictionaryEntries, sequence, sequenceDictionary, checkDuplicateDefinitions) { // Headwords are generated before sorting, so that the order of dictionaryEntries can be maintained const definitionEntries = []; const headwords = new Map(); @@ -1030,7 +1037,8 @@ class Translator { return this._createTermDictionaryEntry( -1, isPrimary, - -1, + sequence, + sequenceDictionary, inflections !== null ? inflections : [], score, dictionaryIndex, |