diff options
Diffstat (limited to 'ext/js/templates/template-renderer-media-provider.js')
| -rw-r--r-- | ext/js/templates/template-renderer-media-provider.js | 34 | 
1 files changed, 19 insertions, 15 deletions
diff --git a/ext/js/templates/template-renderer-media-provider.js b/ext/js/templates/template-renderer-media-provider.js index 4fd40c67..604b5331 100644 --- a/ext/js/templates/template-renderer-media-provider.js +++ b/ext/js/templates/template-renderer-media-provider.js @@ -54,21 +54,7 @@ class TemplateRendererMediaProvider {      }      _getFormattedValue(data, format) { -        switch (format) { -            case 'fileName': -                { -                    const {fileName} = data; -                    if (typeof fileName === 'string') { return fileName; } -                } -                break; -            case 'text': -                { -                    const {text} = data; -                    if (typeof text === 'string') { return text; } -                } -                break; -        } -        return null; +        return Object.prototype.hasOwnProperty.call(data, format) ? data[format] : null;      }      _getMediaData(media, args, namedArgs) { @@ -79,6 +65,7 @@ class TemplateRendererMediaProvider {              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;          } @@ -114,4 +101,21 @@ class TemplateRendererMediaProvider {          });          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; +    }  }  |