diff options
Diffstat (limited to 'ext/bg/js/handlebars.js')
-rw-r--r-- | ext/bg/js/handlebars.js | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ext/bg/js/handlebars.js b/ext/bg/js/handlebars.js index a13de153..9cea14dc 100644 --- a/ext/bg/js/handlebars.js +++ b/ext/bg/js/handlebars.js @@ -26,6 +26,22 @@ function handlebarsDumpObject(options) { return handlebarsEscape(dump); } +function handlebarsFurigana(options) { + const definition = options.fn(this); + const segs = jpDistributeFurigana(definition.expression, definition.reading); + + let result = ''; + for (const seg of segs) { + if (seg.furigana) { + result += `<ruby>${seg.text}<rt>${seg.furigana}</rt></ruby>`; + } else { + result += seg.text; + } + } + + return result; +} + function handlebarsKanjiLinks(options) { let result = ''; for (const c of options.fn(this)) { @@ -47,6 +63,7 @@ function handlebarsRender(template, data) { if (Handlebars.partials !== Handlebars.templates) { Handlebars.partials = Handlebars.templates; Handlebars.registerHelper('dumpObject', handlebarsDumpObject); + Handlebars.registerHelper('furigana', handlebarsFurigana); Handlebars.registerHelper('kanjiLinks', handlebarsKanjiLinks); Handlebars.registerHelper('multiLine', handlebarsMultiLine); } |