summaryrefslogtreecommitdiff
path: root/ext/js/templates/template-renderer-media-provider.js
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-07-17 17:10:25 -0400
committerGitHub <noreply@github.com>2021-07-17 17:10:25 -0400
commitfafa746a632b1907d9cca262f689d7bec4e0f940 (patch)
treef328ef581376cbda0b9d99bd9c3f7892de50a3c1 /ext/js/templates/template-renderer-media-provider.js
parent74381302c7a658dc3fd5e6c3a76842dd430341bb (diff)
Sandbox script folders (#1837)
* Move scripts * Update paths * Fix ordering * Simplify eslint rules
Diffstat (limited to 'ext/js/templates/template-renderer-media-provider.js')
-rw-r--r--ext/js/templates/template-renderer-media-provider.js129
1 files changed, 0 insertions, 129 deletions
diff --git a/ext/js/templates/template-renderer-media-provider.js b/ext/js/templates/template-renderer-media-provider.js
deleted file mode 100644
index 114d3387..00000000
--- a/ext/js/templates/template-renderer-media-provider.js
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2021 Yomichan Authors
- *
- * 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 <https://www.gnu.org/licenses/>.
- */
-
-/* global
- * Handlebars
- */
-
-class TemplateRendererMediaProvider {
- constructor() {
- this._requirements = null;
- }
-
- get requirements() {
- return this._requirements;
- }
-
- set requirements(value) {
- this._requirements = value;
- }
-
- hasMedia(root, args, namedArgs) {
- const {media} = root;
- const data = this._getMediaData(media, args, namedArgs);
- return (data !== null);
- }
-
- getMedia(root, args, namedArgs) {
- const {media} = root;
- const data = this._getMediaData(media, args, namedArgs);
- if (data !== null) {
- const result = this._getFormattedValue(data, namedArgs);
- if (typeof result === 'string') { return result; }
- }
- const defaultValue = namedArgs.default;
- return typeof defaultValue !== 'undefined' ? defaultValue : '';
- }
-
- // Private
-
- _addRequirement(value) {
- if (this._requirements === null) { return; }
- this._requirements.push(value);
- }
-
- _getFormattedValue(data, namedArgs) {
- let {value} = data;
- const {escape=true} = namedArgs;
- if (escape) {
- value = Handlebars.Utils.escapeExpression(value);
- }
- return value;
- }
-
- _getMediaData(media, args, namedArgs) {
- const type = args[0];
- switch (type) {
- case 'audio': return this._getSimpleMediaData(media, 'audio');
- case 'screenshot': return this._getSimpleMediaData(media, 'screenshot');
- case 'clipboardImage': return this._getSimpleMediaData(media, 'clipboardImage');
- case 'clipboardText': return this._getSimpleMediaData(media, 'clipboardText');
- case 'selectionText': return this._getSimpleMediaData(media, 'selectionText');
- case 'textFurigana': return this._getTextFurigana(media, args[1], namedArgs);
- case 'dictionaryMedia': return this._getDictionaryMedia(media, args[1], namedArgs);
- default: return null;
- }
- }
-
- _getSimpleMediaData(media, type) {
- const result = media[type];
- if (typeof result === 'object' && result !== null) { return result; }
- this._addRequirement({type});
- return null;
- }
-
- _getDictionaryMedia(media, path, namedArgs) {
- const {dictionaryMedia} = media;
- const {dictionary} = namedArgs;
- if (
- typeof dictionaryMedia !== 'undefined' &&
- typeof dictionary === 'string' &&
- Object.prototype.hasOwnProperty.call(dictionaryMedia, dictionary)
- ) {
- const dictionaryMedia2 = dictionaryMedia[dictionary];
- if (Object.prototype.hasOwnProperty.call(dictionaryMedia2, path)) {
- const result = dictionaryMedia2[path];
- if (typeof result === 'object' && result !== null) {
- return result;
- }
- }
- }
- this._addRequirement({
- type: 'dictionaryMedia',
- dictionary,
- path
- });
- return null;
- }
-
- _getTextFurigana(media, text, namedArgs) {
- const {readingMode=null} = namedArgs;
- const {textFurigana} = media;
- if (Array.isArray(textFurigana)) {
- for (const entry of textFurigana) {
- if (entry.text !== text || entry.readingMode !== readingMode) { continue; }
- return entry.details;
- }
- }
- this._addRequirement({
- type: 'textFurigana',
- text,
- readingMode
- });
- return null;
- }
-}