diff options
Diffstat (limited to 'ext/js/templates')
-rw-r--r-- | ext/js/templates/template-renderer.js | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/ext/js/templates/template-renderer.js b/ext/js/templates/template-renderer.js index 9bb7a414..07b2849c 100644 --- a/ext/js/templates/template-renderer.js +++ b/ext/js/templates/template-renderer.js @@ -16,6 +16,7 @@ */ /* global + * DictionaryDataUtil * Handlebars */ @@ -146,7 +147,8 @@ class TemplateRenderer { ['getKanaMorae', this._getKanaMorae.bind(this)], ['typeof', this._getTypeof.bind(this)], ['join', this._join.bind(this)], - ['concat', this._concat.bind(this)] + ['concat', this._concat.bind(this)], + ['pitchCategories', this._pitchCategories.bind(this)] ]; for (const [name, helper] of helpers) { @@ -466,4 +468,20 @@ class TemplateRenderer { } return result; } + + _pitchCategories(context, data) { + const {pronunciations, headwords} = data.dictionaryEntry; + const categories = new Set(); + for (const {headwordIndex, pitches} of pronunciations) { + const {reading, wordClasses} = headwords[headwordIndex]; + const isVerbOrAdjective = DictionaryDataUtil.isNonNounVerbOrAdjective(wordClasses); + for (const {position} of pitches) { + const category = this._japaneseUtil.getPitchCategory(reading, position, isVerbOrAdjective); + if (category !== null) { + categories.add(category); + } + } + } + return [...categories]; + } } |