summaryrefslogtreecommitdiff
path: root/ext/js/templates/template-renderer.js
diff options
context:
space:
mode:
Diffstat (limited to 'ext/js/templates/template-renderer.js')
-rw-r--r--ext/js/templates/template-renderer.js20
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];
+ }
}