diff options
| author | praschke <stel@comfy.monster> | 2023-10-17 21:41:45 +0100 | 
|---|---|---|
| committer | praschke <stel@comfy.monster> | 2023-10-17 21:41:45 +0100 | 
| commit | ae91e2442d7b3746c633871ff956a8addd7046b5 (patch) | |
| tree | f10a4b5af7cec8eff3ee6e5946779f315da6df00 /ext/js | |
| parent | 9a78edaee74a8355d49ec930c82e118518d5d625 (diff) | |
fix: furigana and furiganaPlain
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/templates/sandbox/anki-template-renderer.js | 21 | 
1 files changed, 14 insertions, 7 deletions
| diff --git a/ext/js/templates/sandbox/anki-template-renderer.js b/ext/js/templates/sandbox/anki-template-renderer.js index 9e0bc8ed..e15bf895 100644 --- a/ext/js/templates/sandbox/anki-template-renderer.js +++ b/ext/js/templates/sandbox/anki-template-renderer.js @@ -132,6 +132,10 @@ class AnkiTemplateRenderer {          return Handlebars.Utils.escapeExpression(text);      } +    _safeString(text) { +        return new Handlebars.SafeString(text); +    } +      // Template helpers      _dumpObject(context, object) { @@ -145,14 +149,16 @@ class AnkiTemplateRenderer {          let result = '';          for (const {text, reading: reading2} of segs) { -            if (reading2.length > 0) { -                result += `<ruby>${text}<rt>${reading2}</rt></ruby>`; +            const safeText = this._escape(text); +            const safeReading = this._escape(reading2); +            if (safeReading.length > 0) { +                result += `<ruby>${safeText}<rt>${safeReading}</rt></ruby>`;              } else { -                result += text; +                result += safeText;              }          } -        return result; +        return this._safeString(result);      }      _furiganaPlain(context, ...args) { @@ -173,12 +179,13 @@ class AnkiTemplateRenderer {      }      _getFuriganaExpressionAndReading(context, ...args) { -        const options = args[args.length - 1];          if (args.length >= 3) {              return {expression: args[0], reading: args[1]}; -        } else { -            const {expression, reading} = options.fn(context); +        } else if (args.length === 2) { +            const {expression, reading} = args[0];              return {expression, reading}; +        } else { +            return void 0;          }      } |