Skip to content

Commit

Permalink
Fix definition.cloze and text-based getMedia in handlebars being esca…
Browse files Browse the repository at this point in the history
…ped (#857)

* Fix definition.cloze in handlebars not being unescaped

* Fix {clipboard-text}

* Fix {selection-text}

* Update update note
  • Loading branch information
Kuuuube committed May 4, 2024
1 parent e1484c7 commit c3c5d58
Show file tree
Hide file tree
Showing 4 changed files with 149 additions and 9 deletions.
69 changes: 69 additions & 0 deletions ext/data/templates/anki-field-templates-upgrade-v33.handlebars
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
{{<<<<<<<}}
{{#*inline "sentence"}}
{{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "sentence"}}
{{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "cloze-prefix"}}
{{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "cloze-prefix"}}
{{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "cloze-body"}}
{{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "cloze-body"}}
{{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "cloze-body-kana"}}
{{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "cloze-body-kana"}}
{{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "cloze-suffix"}}
{{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "cloze-suffix"}}
{{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "clipboard-text"}}
{{~#if (hasMedia "clipboardText")}}{{getMedia "clipboardText"}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "clipboard-text"}}
{{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}

{{<<<<<<<}}
{{#*inline "selection-text"}}
{{~#if (hasMedia "selectionText")}}{{getMedia "selectionText"}}{{/if~}}
{{/inline}}
{{=======}}
{{#*inline "selection-text"}}
{{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}}
{{/inline}}
{{>>>>>>>}}
14 changes: 7 additions & 7 deletions ext/data/templates/default-anki-field-templates.handlebars
Original file line number Diff line number Diff line change
Expand Up @@ -149,23 +149,23 @@
{{/inline}}

{{#*inline "sentence"}}
{{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}}
{{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}}
{{/inline}}

{{#*inline "cloze-prefix"}}
{{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}}
{{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}}
{{/inline}}

{{#*inline "cloze-body"}}
{{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}}
{{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}}
{{/inline}}

{{#*inline "cloze-body-kana"}}
{{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}}
{{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}}
{{/inline}}

{{#*inline "cloze-suffix"}}
{{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}}
{{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}}
{{/inline}}

{{#*inline "tags"}}
Expand Down Expand Up @@ -269,7 +269,7 @@
{{/inline}}

{{#*inline "clipboard-text"}}
{{~#if (hasMedia "clipboardText")}}{{getMedia "clipboardText"}}{{/if~}}
{{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}}
{{/inline}}

{{#*inline "conjugation"}}
Expand Down Expand Up @@ -393,7 +393,7 @@
{{/inline}}

{{#*inline "selection-text"}}
{{~#if (hasMedia "selectionText")}}{{getMedia "selectionText"}}{{/if~}}
{{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}}
{{/inline}}

{{#*inline "sentence-furigana"}}
Expand Down
10 changes: 9 additions & 1 deletion ext/js/data/options-util.js
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,8 @@ export class OptionsUtil {
this._updateVersion29,
this._updateVersion30,
this._updateVersion31,
this._updateVersion32
this._updateVersion32,
this._updateVersion33
];
/* eslint-enable @typescript-eslint/unbound-method */
if (typeof targetVersion === 'number' && targetVersion < result.length) {
Expand Down Expand Up @@ -1258,6 +1259,13 @@ export class OptionsUtil {
}
}

/**
* - Updated handlebars to fix escaping when using `definition.cloze` or text-based `getMedia`.
* @type {import('options-util').UpdateFunction}
*/
async _updateVersion33(options) {
await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v33.handlebars');
}

/**
* @param {string} url
Expand Down
65 changes: 64 additions & 1 deletion test/options-util.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -605,7 +605,7 @@ function createOptionsUpdatedTestData1() {
}
],
profileCurrent: 0,
version: 32,
version: 33,
global: {
database: {
prefixWildcardsSupported: false
Expand Down Expand Up @@ -1722,6 +1722,69 @@ describe('OptionsUtil', () => {
{{~/if~}}
{{~/if~}}
{{/inline}}
`.trimStart()
},
{
oldVersion: 32,
newVersion: 33,
old: `
{{#*inline "sentence"}}
{{~#if definition.cloze}}{{definition.cloze.sentence}}{{/if~}}
{{/inline}}
{{#*inline "cloze-prefix"}}
{{~#if definition.cloze}}{{definition.cloze.prefix}}{{/if~}}
{{/inline}}
{{#*inline "cloze-body"}}
{{~#if definition.cloze}}{{definition.cloze.body}}{{/if~}}
{{/inline}}
{{#*inline "cloze-body-kana"}}
{{~#if definition.cloze}}{{definition.cloze.bodyKana}}{{/if~}}
{{/inline}}
{{#*inline "cloze-suffix"}}
{{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}}
{{/inline}}
{{#*inline "clipboard-text"}}
{{~#if (hasMedia "clipboardText")}}{{getMedia "clipboardText"}}{{/if~}}
{{/inline}}
{{#*inline "selection-text"}}
{{~#if (hasMedia "selectionText")}}{{getMedia "selectionText"}}{{/if~}}
{{/inline}}
`.trimStart(),

expected: `
{{#*inline "sentence"}}
{{~#if definition.cloze}}{{{definition.cloze.sentence}}}{{/if~}}
{{/inline}}
{{#*inline "cloze-prefix"}}
{{~#if definition.cloze}}{{{definition.cloze.prefix}}}{{/if~}}
{{/inline}}
{{#*inline "cloze-body"}}
{{~#if definition.cloze}}{{{definition.cloze.body}}}{{/if~}}
{{/inline}}
{{#*inline "cloze-body-kana"}}
{{~#if definition.cloze}}{{{definition.cloze.bodyKana}}}{{/if~}}
{{/inline}}
{{#*inline "cloze-suffix"}}
{{~#if definition.cloze}}{{{definition.cloze.suffix}}}{{/if~}}
{{/inline}}
{{#*inline "clipboard-text"}}
{{~#if (hasMedia "clipboardText")}}{{{getMedia "clipboardText"}}}{{/if~}}
{{/inline}}
{{#*inline "selection-text"}}
{{~#if (hasMedia "selectionText")}}{{{getMedia "selectionText"}}}{{/if~}}
{{/inline}}
`.trimStart()
}
];
Expand Down

0 comments on commit c3c5d58

Please sign in to comment.