diff --git a/ext/js/data/sandbox/anki-note-data-creator.js b/ext/js/data/sandbox/anki-note-data-creator.js index e09c6d7b..b7abc0c5 100644 --- a/ext/js/data/sandbox/anki-note-data-creator.js +++ b/ext/js/data/sandbox/anki-note-data-creator.js @@ -157,10 +157,10 @@ class AnkiNoteDataCreator { _getPitches(dictionaryEntry) { const results = []; if (dictionaryEntry.type === 'term') { - for (const {dictionary, pitches} of DictionaryDataUtil.getPitchAccentInfos(dictionaryEntry)) { - const pitches2 = []; - for (const {terms, reading, position, nasalPositions, devoicePositions, tags, exclusiveTerms, exclusiveReadings} of pitches) { - pitches2.push({ + for (const {dictionary, pronunciations} of DictionaryDataUtil.getGroupedPronunciations(dictionaryEntry)) { + const pitches = []; + for (const {terms, reading, position, nasalPositions, devoicePositions, tags, exclusiveTerms, exclusiveReadings} of pronunciations) { + pitches.push({ expressions: terms, reading, position, @@ -171,7 +171,7 @@ class AnkiNoteDataCreator { exclusiveReadings }); } - results.push({dictionary, pitches: pitches2}); + results.push({dictionary, pitches}); } } return results; diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index f6860b93..95b4224b 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -51,14 +51,14 @@ class DisplayGenerator { const headwordsContainer = node.querySelector('.headword-list'); const inflectionsContainer = node.querySelector('.inflection-list'); - const pitchesContainer = node.querySelector('.pronunciation-group-list'); + const groupedPronunciationsContainer = node.querySelector('.pronunciation-group-list'); const frequencyGroupListContainer = node.querySelector('.frequency-group-list'); const definitionsContainer = node.querySelector('.definition-list'); const headwordTagsContainer = node.querySelector('.headword-list-tag-list'); const {headwords, type, inflections, definitions, frequencies, pronunciations} = dictionaryEntry; - const pitches = DictionaryDataUtil.getPitchAccentInfos(dictionaryEntry); - const pitchCount = pitches.reduce((i, v) => i + v.pitches.length, 0); + const groupedPronunciations = DictionaryDataUtil.getGroupedPronunciations(dictionaryEntry); + const pronunciationCount = groupedPronunciations.reduce((i, v) => i + v.pronunciations.length, 0); const groupedFrequencies = DictionaryDataUtil.groupTermFrequencies(dictionaryEntry); const termTags = DictionaryDataUtil.groupTermTags(dictionaryEntry); @@ -72,8 +72,8 @@ class DisplayGenerator { node.dataset.format = type; node.dataset.headwordCount = `${headwords.length}`; node.dataset.definitionCount = `${definitions.length}`; - node.dataset.pronunciationDictionaryCount = `${pitches.length}`; - node.dataset.pronunciationCount = `${pitchCount}`; + node.dataset.pronunciationDictionaryCount = `${groupedPronunciations.length}`; + node.dataset.pronunciationCount = `${pronunciationCount}`; node.dataset.uniqueTermCount = `${uniqueTerms.size}`; node.dataset.uniqueReadingCount = `${uniqueReadings.size}`; node.dataset.frequencyCount = `${frequencies.length}`; @@ -88,7 +88,7 @@ class DisplayGenerator { this._appendMultiple(inflectionsContainer, this._createTermInflection.bind(this), inflections); this._appendMultiple(frequencyGroupListContainer, this._createFrequencyGroup.bind(this), groupedFrequencies, false); - this._appendMultiple(pitchesContainer, this._createPitches.bind(this), pitches); + this._appendMultiple(groupedPronunciationsContainer, this._createGroupedPronunciation.bind(this), groupedPronunciations); this._appendMultiple(headwordTagsContainer, this._createTermTag.bind(this), termTags, headwords.length); for (const term of uniqueTerms) { @@ -432,19 +432,19 @@ class DisplayGenerator { return this._createTag(this._createTagData(text, 'search')); } - _createPitches(details) { - const {dictionary, pitches} = details; + _createGroupedPronunciation(details) { + const {dictionary, pronunciations} = details; const node = this._templates.instantiate('pronunciation-group'); node.dataset.dictionary = dictionary; - node.dataset.pitchesMulti = 'true'; - node.dataset.pitchesCount = `${pitches.length}`; + node.dataset.pronunciationsMulti = 'true'; + node.dataset.pronunciationsCount = `${pronunciations.length}`; const tag = this._createTag(this._createTagData(dictionary, 'pronunciation-dictionary')); node.querySelector('.pronunciation-group-tag-list').appendChild(tag); let hasTags = false; - for (const {tags} of pitches) { + for (const {tags} of pronunciations) { if (tags.length > 0) { hasTags = true; break; @@ -453,12 +453,12 @@ class DisplayGenerator { const n = node.querySelector('.pronunciation-list'); n.dataset.hasTags = `${hasTags}`; - this._appendMultiple(n, this._createPitch.bind(this), pitches); + this._appendMultiple(n, this._createPronunciation.bind(this), pronunciations); return node; } - _createPitch(details) { + _createPronunciation(details) { const jp = this._japaneseUtil; const {reading, position, nasalPositions, devoicePositions, tags, exclusiveTerms, exclusiveReadings} = details; const morae = jp.getKanaMorae(reading); @@ -474,7 +474,7 @@ class DisplayGenerator { this._appendMultiple(n, this._createTag.bind(this), tags); n = node.querySelector('.pronunciation-disambiguation-list'); - this._createPitchAccentDisambiguations(n, exclusiveTerms, exclusiveReadings); + this._createPronunciationDisambiguations(n, exclusiveTerms, exclusiveReadings); n = node.querySelector('.pronunciation-downstep-notation-container'); n.appendChild(this._pronunciationGenerator.createPronunciationDownstepPosition(position)); @@ -488,7 +488,7 @@ class DisplayGenerator { return node; } - _createPitchAccentDisambiguations(container, exclusiveTerms, exclusiveReadings) { + _createPronunciationDisambiguations(container, exclusiveTerms, exclusiveReadings) { const templateName = 'pronunciation-disambiguation'; for (const term of exclusiveTerms) { const node = this._templates.instantiate(templateName); diff --git a/ext/js/language/sandbox/dictionary-data-util.js b/ext/js/language/sandbox/dictionary-data-util.js index 951e10ff..68b15c48 100644 --- a/ext/js/language/sandbox/dictionary-data-util.js +++ b/ext/js/language/sandbox/dictionary-data-util.js @@ -90,7 +90,7 @@ class DictionaryDataUtil { return this._createFrequencyGroupsFromMap(map1); } - static getPitchAccentInfos(dictionaryEntry) { + static getGroupedPronunciations(dictionaryEntry) { const {headwords, pronunciations} = dictionaryEntry; const allTerms = new Set(); @@ -100,18 +100,18 @@ class DictionaryDataUtil { allReadings.add(reading); } - const pitchAccentInfoMap = new Map(); + const groupedPronunciationsMap = new Map(); for (const {headwordIndex, dictionary, pitches} of pronunciations) { const {term, reading} = headwords[headwordIndex]; - let dictionaryPitchAccentInfoList = pitchAccentInfoMap.get(dictionary); - if (typeof dictionaryPitchAccentInfoList === 'undefined') { - dictionaryPitchAccentInfoList = []; - pitchAccentInfoMap.set(dictionary, dictionaryPitchAccentInfoList); + let dictionaryGroupedPronunciationList = groupedPronunciationsMap.get(dictionary); + if (typeof dictionaryGroupedPronunciationList === 'undefined') { + dictionaryGroupedPronunciationList = []; + groupedPronunciationsMap.set(dictionary, dictionaryGroupedPronunciationList); } for (const {position, nasalPositions, devoicePositions, tags} of pitches) { - let pitchAccentInfo = this._findExistingPitchAccentInfo(reading, position, nasalPositions, devoicePositions, tags, dictionaryPitchAccentInfoList); - if (pitchAccentInfo === null) { - pitchAccentInfo = { + let groupedPronunciation = this._findExistingGroupedPronunciation(reading, position, nasalPositions, devoicePositions, tags, dictionaryGroupedPronunciationList); + if (groupedPronunciation === null) { + groupedPronunciation = { terms: new Set(), reading, position, @@ -121,29 +121,29 @@ class DictionaryDataUtil { exclusiveTerms: [], exclusiveReadings: [] }; - dictionaryPitchAccentInfoList.push(pitchAccentInfo); + dictionaryGroupedPronunciationList.push(groupedPronunciation); } - pitchAccentInfo.terms.add(term); + groupedPronunciation.terms.add(term); } } const multipleReadings = (allReadings.size > 1); - for (const dictionaryPitchAccentInfoList of pitchAccentInfoMap.values()) { - for (const pitchAccentInfo of dictionaryPitchAccentInfoList) { - const {terms, reading, exclusiveTerms, exclusiveReadings} = pitchAccentInfo; + for (const dictionaryGroupedPronunciationList of groupedPronunciationsMap.values()) { + for (const groupedPronunciation of dictionaryGroupedPronunciationList) { + const {terms, reading, exclusiveTerms, exclusiveReadings} = groupedPronunciation; if (!this._areSetsEqual(terms, allTerms)) { exclusiveTerms.push(...this._getSetIntersection(terms, allTerms)); } if (multipleReadings) { exclusiveReadings.push(reading); } - pitchAccentInfo.terms = [...terms]; + groupedPronunciation.terms = [...terms]; } } const results2 = []; - for (const [dictionary, pitches] of pitchAccentInfoMap.entries()) { - results2.push({dictionary, pitches}); + for (const [dictionary, pronunciations2] of groupedPronunciationsMap.entries()) { + results2.push({dictionary, pronunciations: pronunciations2}); } return results2; } @@ -230,8 +230,8 @@ class DictionaryDataUtil { return results; } - static _findExistingPitchAccentInfo(reading, position, nasalPositions, devoicePositions, tags, pitchAccentInfoList) { - for (const pitchInfo of pitchAccentInfoList) { + static _findExistingGroupedPronunciation(reading, position, nasalPositions, devoicePositions, tags, groupedPronunciationList) { + for (const pitchInfo of groupedPronunciationList) { if ( pitchInfo.reading === reading && pitchInfo.position === position && diff --git a/ext/js/language/sandbox/japanese-util.js b/ext/js/language/sandbox/japanese-util.js index c7f79751..9257e1e5 100644 --- a/ext/js/language/sandbox/japanese-util.js +++ b/ext/js/language/sandbox/japanese-util.js @@ -239,26 +239,26 @@ const JapaneseUtil = (() => { // Mora functions - isMoraPitchHigh(moraIndex, pitchAccentPosition) { - switch (pitchAccentPosition) { + isMoraPitchHigh(moraIndex, pitchAccentDownstepPosition) { + switch (pitchAccentDownstepPosition) { case 0: return (moraIndex > 0); case 1: return (moraIndex < 1); - default: return (moraIndex > 0 && moraIndex < pitchAccentPosition); + default: return (moraIndex > 0 && moraIndex < pitchAccentDownstepPosition); } } - getPitchCategory(text, pitchAccentPosition, isVerbOrAdjective) { - if (pitchAccentPosition === 0) { + getPitchCategory(text, pitchAccentDownstepPosition, isVerbOrAdjective) { + if (pitchAccentDownstepPosition === 0) { return 'heiban'; } if (isVerbOrAdjective) { - return pitchAccentPosition > 0 ? 'kifuku' : null; + return pitchAccentDownstepPosition > 0 ? 'kifuku' : null; } - if (pitchAccentPosition === 1) { + if (pitchAccentDownstepPosition === 1) { return 'atamadaka'; } - if (pitchAccentPosition > 1) { - return pitchAccentPosition >= this.getKanaMoraCount(text) ? 'odaka' : 'nakadaka'; + if (pitchAccentDownstepPosition > 1) { + return pitchAccentDownstepPosition >= this.getKanaMoraCount(text) ? 'odaka' : 'nakadaka'; } return null; } diff --git a/test/test-japanese-util.js b/test/test-japanese-util.js index bfeac4f5..48dc9af7 100644 --- a/test/test-japanese-util.js +++ b/test/test-japanese-util.js @@ -811,8 +811,8 @@ function testIsMoraPitchHigh() { [[3, 4], true] ]; - for (const [[moraIndex, pitchAccentPosition], expected] of data) { - const actual = jp.isMoraPitchHigh(moraIndex, pitchAccentPosition); + for (const [[moraIndex, pitchAccentDownstepPosition], expected] of data) { + const actual = jp.isMoraPitchHigh(moraIndex, pitchAccentDownstepPosition); assert.strictEqual(actual, expected); } }