From 985c5df328ccff8492576d005a00fae828f56bab Mon Sep 17 00:00:00 2001 From: Alex Yatskov Date: Sat, 21 Jan 2017 19:30:01 -0800 Subject: WIP --- ext/bg/js/util.js | 62 ++++++++++++++----------------------------------------- 1 file changed, 15 insertions(+), 47 deletions(-) (limited to 'ext/bg/js/util.js') diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index dcaf1e47..253fcd0f 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -201,15 +201,14 @@ function sortTags(tags) { }); } -function formatField(field, definition, mode) { +function formatField(field, definition, mode, html) { const markers = [ 'audio', 'character', 'dictionary', 'expression', - 'expression-furigana', + 'furigana', 'glossary', - 'glossary-list', 'kunyomi', 'onyomi', 'reading', @@ -219,50 +218,19 @@ function formatField(field, definition, mode) { ]; for (const marker of markers) { - let value = definition[marker] || null; - switch (marker) { - case 'expression': - if (mode === 'term_kana' && definition.reading) { - value = definition.reading; - } - break; - case 'expression-furigana': - if (mode === 'term_kana' && definition.reading) { - value = definition.reading; - } else { - value = `${definition.expression}${definition.reading}`; - } - break; - case 'reading': - if (mode === 'term_kana') { - value = null; - } - break; - case 'glossary-list': - if (definition.glossary) { - if (definition.glossary.length > 1) { - value = '
    '; - for (const gloss of definition.glossary) { - value += `
  1. ${gloss}
  2. `; - } - value += '
'; - } else { - value = `

${definition.glossary.join('')}

`; - } - } - break; - case 'tags': - if (definition.tags) { - value = definition.tags.map(t => t.name); - } - break; - } - - if (value !== null && typeof(value) !== 'string') { - value = value.join(', '); - } - - field = field.replace(`{${marker}}`, value || ''); + const data = { + marker, + definition, + html, + modeTermKanji: mode === 'term_kanji', + modeTermKana: mode === 'term_kana', + modeKanji: mode === 'kanji' + }; + + field = field.replace( + `{${marker}}`, + Handlebars.templates['fields.html'](data).trim() + ); } return field; -- cgit v1.2.3