diff options
Diffstat (limited to 'ext/bg')
-rw-r--r-- | ext/bg/background.html | 1 | ||||
-rw-r--r-- | ext/bg/js/handlebars.js | 55 | ||||
-rw-r--r-- | ext/bg/js/util.js | 41 | ||||
-rw-r--r-- | ext/bg/settings.html | 1 |
4 files changed, 57 insertions, 41 deletions
diff --git a/ext/bg/background.html b/ext/bg/background.html index 3cfd894e..61bc17a0 100644 --- a/ext/bg/background.html +++ b/ext/bg/background.html @@ -11,6 +11,7 @@ <script src="/mixed/js/audio.js"></script> <script src="/bg/js/templates.js"></script> <script src="/bg/js/util.js"></script> + <script src="/bg/js/handlebars.js"></script> <script src="/bg/js/dictionary.js"></script> <script src="/mixed/js/japanese.js"></script> <script src="/bg/js/options.js"></script> diff --git a/ext/bg/js/handlebars.js b/ext/bg/js/handlebars.js new file mode 100644 index 00000000..42b36927 --- /dev/null +++ b/ext/bg/js/handlebars.js @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2016 Alex Yatskov <alex@foosoft.net> + * Author: Alex Yatskov <alex@foosoft.net> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + + +function handlebarsEscape(text) { + return Handlebars.Utils.escapeExpression(text); +} + +function handlebarsDumpObject(options) { + const dump = JSON.stringify(options.fn(this), null, 4); + return handlebarsEscape(dump); +} + +function handlebarsKanjiLinks(options) { + let result = ''; + for (const c of options.fn(this)) { + if (jpIsKanji(c)) { + result += `<a href="#" class="kanji-link">${c}</a>`; + } else { + result += c; + } + } + + return result; +} + +function handlebarsMultiLine(options) { + return options.fn(this).split('\n').join('<br>'); +} + +function handlebarsRegister() { + Handlebars.partials = Handlebars.templates; + Handlebars.registerHelper('dumpObject', handlebarsDumpObject); + Handlebars.registerHelper('kanjiLinks', handlebarsKanjiLinks); + Handlebars.registerHelper('multiLine', handlebarsMultiLine); +} + +function handlebarsRender(template, data) { + return Handlebars.templates[template](data); +} diff --git a/ext/bg/js/util.js b/ext/bg/js/util.js index 0a4592ea..6e86c2a6 100644 --- a/ext/bg/js/util.js +++ b/ext/bg/js/util.js @@ -98,44 +98,3 @@ function jsonRequest(url, action, params) { } }); } - -/* - * Helpers - */ - -function handlebarsEscape(text) { - return Handlebars.Utils.escapeExpression(text); -} - -function handlebarsDumpObject(options) { - const dump = JSON.stringify(options.fn(this), null, 4); - return handlebarsEscape(dump); -} - -function handlebarsKanjiLinks(options) { - let result = ''; - for (const c of options.fn(this)) { - if (jpIsKanji(c)) { - result += `<a href="#" class="kanji-link">${c}</a>`; - } else { - result += c; - } - } - - return result; -} - -function handlebarsMultiLine(options) { - return options.fn(this).split('\n').join('<br>'); -} - -function handlebarsRegister() { - Handlebars.partials = Handlebars.templates; - Handlebars.registerHelper('dumpObject', handlebarsDumpObject); - Handlebars.registerHelper('kanjiLinks', handlebarsKanjiLinks); - Handlebars.registerHelper('multiLine', handlebarsMultiLine); -} - -function handlebarsRender(template, data) { - return Handlebars.templates[template](data); -} diff --git a/ext/bg/settings.html b/ext/bg/settings.html index 8135ca9a..9b21b4d8 100644 --- a/ext/bg/settings.html +++ b/ext/bg/settings.html @@ -277,6 +277,7 @@ <script src="/mixed/lib/handlebars.min.js"></script> <script src="/bg/js/templates.js"></script> <script src="/bg/js/util.js"></script> + <script src="/bg/js/handlebars.js"></script> <script src="/bg/js/dictionary.js"></script> <script src="/mixed/js/japanese.js"></script> <script src="/bg/js/options.js"></script> |