summaryrefslogtreecommitdiff
path: root/ext/js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-04-18 18:08:02 -0400
committerGitHub <noreply@github.com>2021-04-18 18:08:02 -0400
commitf9774b4ce985b9920cee8afec0f756e5e1bfc9fa (patch)
tree0c89f0eeeb09e40bbf96145266bb6bcfbae9ae99 /ext/js
parent609d4fe3347f87290a428e2ba1192acb991b2e38 (diff)
Improve dictionary sequence info (#1617)
* Ensure negative sequence is always -1 * Expose sequence on definition objects * Update how sequence is exposed for definitions * Update test data * Update TS docs
Diffstat (limited to 'ext/js')
-rw-r--r--ext/js/data/anki-note-data-creator.js3
-rw-r--r--ext/js/language/translator.js22
2 files changed, 13 insertions, 12 deletions
diff --git a/ext/js/data/anki-note-data-creator.js b/ext/js/data/anki-note-data-creator.js
index e3ff2ca0..1cd5aaf4 100644
--- a/ext/js/data/anki-note-data-creator.js
+++ b/ext/js/data/anki-note-data-creator.js
@@ -354,7 +354,7 @@ class AnkiNoteDataCreator {
const definitions = [];
const definitionTags = [];
- for (const {tags, headwordIndices, entries, dictionary} of dictionaryEntry.definitions) {
+ for (const {tags, headwordIndices, entries, dictionary, sequence} of dictionaryEntry.definitions) {
const definitionTags2 = [];
for (const tag of tags) {
definitionTags.push(this._convertTag(tag));
@@ -362,7 +362,6 @@ class AnkiNoteDataCreator {
}
if (!hasDefinitions) { continue; }
const only = merged ? DictionaryDataUtil.getDisambiguations(dictionaryEntry.headwords, headwordIndices, allTermsSet, allReadingsSet) : void 0;
- const {sequence} = dictionaryEntry;
definitions.push({
sequence,
dictionary,
diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js
index 28634f9c..1e335ac3 100644
--- a/ext/js/language/translator.js
+++ b/ext/js/language/translator.js
@@ -927,8 +927,8 @@ class Translator {
return {index, term, reading, sources, tags, wordClasses};
}
- _createTermDefinition(index, headwordIndices, dictionary, tags, entries) {
- return {index, headwordIndices, dictionary, tags, entries};
+ _createTermDefinition(index, headwordIndices, dictionary, sequence, tags, entries) {
+ return {index, headwordIndices, dictionary, sequence, tags, entries};
}
_createTermPronunciation(index, headwordIndex, dictionary, dictionaryIndex, dictionaryPriority, pitches) {
@@ -960,12 +960,14 @@ class Translator {
}
_createTermDictionaryEntryFromDatabaseEntry(databaseEntry, originalText, transformedText, deinflectedText, reasons, isPrimary, enabledDictionaryMap) {
- const {term, reading: rawReading, definitionTags, termTags, definitions, score, dictionary, id, sequence, rules} = databaseEntry;
+ const {term, reading: rawReading, definitionTags, termTags, definitions, score, dictionary, id, sequence: rawSequence, rules} = databaseEntry;
const reading = (rawReading.length > 0 ? rawReading : term);
const {index: dictionaryIndex, priority: dictionaryPriority} = this._getDictionaryOrder(dictionary, enabledDictionaryMap);
const sourceTermExactMatchCount = (isPrimary && deinflectedText === term ? 1 : 0);
const source = this._createSource(originalText, transformedText, deinflectedText, isPrimary);
const maxTransformedTextLength = transformedText.length;
+ const hasSequence = (rawSequence >= 0);
+ const sequence = hasSequence ? rawSequence : -1;
const headwordTagGroups = [];
const definitionTagGroups = [];
@@ -976,7 +978,7 @@ class Translator {
id,
isPrimary,
sequence,
- sequence >= 0 ? dictionary : null,
+ hasSequence ? dictionary : null,
reasons,
score,
dictionaryIndex,
@@ -984,7 +986,7 @@ class Translator {
sourceTermExactMatchCount,
maxTransformedTextLength,
[this._createTermHeadword(0, term, reading, [source], headwordTagGroups, rules)],
- [this._createTermDefinition(0, [0], dictionary, definitionTagGroups, definitions)]
+ [this._createTermDefinition(0, [0], dictionary, sequence, definitionTagGroups, definitions)]
);
}
@@ -1148,21 +1150,21 @@ class Translator {
}
_addTermDefinitions(definitions, newDefinitions, headwordIndexMap) {
- for (const {headwordIndices, dictionary, tags, entries} of newDefinitions) {
+ for (const {headwordIndices, dictionary, sequence, tags, entries} of newDefinitions) {
const headwordIndicesNew = [];
for (const headwordIndex of headwordIndices) {
headwordIndicesNew.push(headwordIndexMap[headwordIndex]);
}
- definitions.push(this._createTermDefinition(definitions.length, headwordIndicesNew, dictionary, tags, entries));
+ definitions.push(this._createTermDefinition(definitions.length, headwordIndicesNew, dictionary, sequence, tags, entries));
}
}
_addTermDefinitions2(definitions, definitionsMap, newDefinitions, headwordIndexMap) {
- for (const {headwordIndices, dictionary, tags, entries} of newDefinitions) {
- const key = this._createMapKey([dictionary, ...entries]);
+ for (const {headwordIndices, dictionary, sequence, tags, entries} of newDefinitions) {
+ const key = this._createMapKey([dictionary, sequence, ...entries]);
let definition = definitionsMap.get(key);
if (typeof definition === 'undefined') {
- definition = this._createTermDefinition(definitions.length, [], dictionary, [], [...entries]);
+ definition = this._createTermDefinition(definitions.length, [], dictionary, sequence, [], [...entries]);
definitions.push(definition);
definitionsMap.set(key, definition);
}