Pop-up dictionary browser extension for language learning. Successor to Yomichan. (PERSONAL FORK)

Always put glossary, glossary-brief, and glossary-no-dictionary handlebars in an ol (#2134)

* Make glossary, glossary-brief, and glossary-no-dictionary handlebars more consistent

* Update tests

authored by

Kuuuube and committed by
GitHub
bf3c418b 301ea1fd

+109 -31
+80
ext/data/templates/anki-field-templates-upgrade-v71.handlebars
··· 1 + {{<<<<<<<}} 2 + {{~#*inline "glossary"~}} 3 + <div style="text-align: left;" class="yomitan-glossary"> 4 + {{~#scope~}} 5 + {{~#if (op "===" definition.type "term")~}} 6 + {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} 7 + {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} 8 + {{~#if definition.glossaryScopedStyles~}} 9 + <style>{{{definition.glossaryScopedStyles}}}</style> 10 + {{~/if~}} 11 + {{~/unless~}} 12 + {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} 13 + {{~#if (op ">" definition.definitions.length 1)~}} 14 + <ol> 15 + {{~#each definition.definitions~}} 16 + {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} 17 + <li data-dictionary="{{dictionary}}"> 18 + {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 19 + </li> 20 + {{~#if dictScopedStyles~}} 21 + <style>{{{dictScopedStyles}}}</style> 22 + {{~/if~}} 23 + {{~/unless~}} 24 + {{~/each~}} 25 + </ol> 26 + {{~else~}} 27 + {{~#each definition.definitions~}} 28 + {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} 29 + {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 30 + {{~#if glossaryScopedStyles~}} 31 + <style>{{{glossaryScopedStyles}}}</style> 32 + {{~/if~}} 33 + {{~/unless~}} 34 + {{~/each~}} 35 + {{~/if~}} 36 + {{~else if (op "===" definition.type "kanji")~}} 37 + {{~#if (op ">" definition.glossary.length 1)~}} 38 + <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol> 39 + {{~else~}} 40 + {{~#each definition.glossary~}}{{.}}{{~/each~}} 41 + {{~/if~}} 42 + {{~/if~}} 43 + {{~/scope~}} 44 + </div> 45 + {{~/inline~}} 46 + {{=======}} 47 + {{~#*inline "glossary"~}} 48 + <div style="text-align: left;" class="yomitan-glossary"> 49 + {{~#scope~}} 50 + {{~#if (op "===" definition.type "term")~}} 51 + {{~#unless (op "&&" selectedDictionary (op "!=" selectedDictionary definition.dictionary))~}} 52 + {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}} 53 + {{~#if definition.glossaryScopedStyles~}} 54 + <style>{{{definition.glossaryScopedStyles}}}</style> 55 + {{~/if~}} 56 + {{~/unless~}} 57 + {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} 58 + <ol> 59 + {{~#each definition.definitions~}} 60 + {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} 61 + <li data-dictionary="{{dictionary}}"> 62 + {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 63 + </li> 64 + {{~#if dictScopedStyles~}} 65 + <style>{{{dictScopedStyles}}}</style> 66 + {{~/if~}} 67 + {{~/unless~}} 68 + {{~/each~}} 69 + </ol> 70 + {{~else if (op "===" definition.type "kanji")~}} 71 + {{~#if (op ">" definition.glossary.length 1)~}} 72 + <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol> 73 + {{~else~}} 74 + {{~#each definition.glossary~}}{{.}}{{~/each~}} 75 + {{~/if~}} 76 + {{~/if~}} 77 + {{~/scope~}} 78 + </div> 79 + {{~/inline~}} 80 + {{>>>>>>>}}
+7 -18
ext/data/templates/default-anki-field-templates.handlebars
··· 92 92 {{~/if~}} 93 93 {{~/unless~}} 94 94 {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}} 95 - {{~#if (op ">" definition.definitions.length 1)~}} 96 - <ol> 97 - {{~#each definition.definitions~}} 98 - {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} 99 - <li data-dictionary="{{dictionary}}"> 100 - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 101 - </li> 102 - {{~#if dictScopedStyles~}} 103 - <style>{{{dictScopedStyles}}}</style> 104 - {{~/if~}} 105 - {{~/unless~}} 106 - {{~/each~}} 107 - </ol> 108 - {{~else~}} 95 + <ol> 109 96 {{~#each definition.definitions~}} 110 97 {{~#unless (op "&&" ../selectedDictionary (op "!=" ../selectedDictionary dictionary))~}} 111 - {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 112 - {{~#if glossaryScopedStyles~}} 113 - <style>{{{glossaryScopedStyles}}}</style> 98 + <li data-dictionary="{{dictionary}}"> 99 + {{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}} 100 + </li> 101 + {{~#if dictScopedStyles~}} 102 + <style>{{{dictScopedStyles}}}</style> 114 103 {{~/if~}} 115 104 {{~/unless~}} 116 105 {{~/each~}} 117 - {{~/if~}} 106 + </ol> 118 107 {{~else if (op "===" definition.type "kanji")~}} 119 108 {{~#if (op ">" definition.glossary.length 1)~}} 120 109 <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
+9
ext/js/data/options-util.js
··· 583 583 this._updateVersion69, 584 584 this._updateVersion70, 585 585 this._updateVersion71, 586 + this._updateVersion72, 586 587 ]; 587 588 /* eslint-enable @typescript-eslint/unbound-method */ 588 589 if (typeof targetVersion === 'number' && targetVersion < result.length) { ··· 1793 1794 */ 1794 1795 async _updateVersion71(options) { 1795 1796 options.global.dataTransmissionConsentShown = false; 1797 + } 1798 + 1799 + /** 1800 + * - Always put dict glosses in a list for the `glossary` handlebar (and brief and no-dictionary) 1801 + * @type {import('options-util').UpdateFunction} 1802 + */ 1803 + async _updateVersion72(options) { 1804 + await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v71.handlebars'); 1796 1805 } 1797 1806 1798 1807 /**
+12 -12
test/data/anki-note-builder-test-results.json
··· 1913 1913 "frequency-harmonic-occurrence": "1", 1914 1914 "frequency-average-rank": "1", 1915 1915 "frequency-average-occurrence": "1", 1916 - "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1917 - "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1918 - "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1916 + "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1917 + "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1918 + "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(n)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1919 1919 "glossary-plain": "(termsDictAlias)<br>da definition 1<br>da definition 2", 1920 1920 "glossary-plain-no-dictionary": "da definition 1<br>da definition 2", 1921 1921 "glossary-first": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", ··· 1958 1958 "frequency-harmonic-occurrence": "1", 1959 1959 "frequency-average-rank": "1", 1960 1960 "frequency-average-occurrence": "1", 1961 - "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1962 - "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1963 - "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 1961 + "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1962 + "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1963 + "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(abbr, n)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 1964 1964 "glossary-plain": "(termsDictAlias)<br>daasu definition 1<br>daasu definition 2", 1965 1965 "glossary-plain-no-dictionary": "daasu definition 1<br>daasu definition 2", 1966 1966 "glossary-first": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", ··· 2098 2098 "frequency-harmonic-occurrence": "1", 2099 2099 "frequency-average-rank": "1", 2100 2100 "frequency-average-occurrence": "1", 2101 - "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2102 - "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2103 - "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2101 + "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2102 + "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2103 + "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(n)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2104 2104 "glossary-plain": "(termsDictAlias)<br>da definition 1<br>da definition 2", 2105 2105 "glossary-plain-no-dictionary": "da definition 1<br>da definition 2", 2106 2106 "glossary-first": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(n, termsDictAlias)</i> <ul><li>da definition 1</li><li>da definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", ··· 2143 2143 "frequency-harmonic-occurrence": "1", 2144 2144 "frequency-average-rank": "1", 2145 2145 "frequency-average-occurrence": "1", 2146 - "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2147 - "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2148 - "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>", 2146 + "glossary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2147 + "glossary-brief": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2148 + "glossary-no-dictionary": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><ol><li data-dictionary=\"Test Dictionary 2\"><i>(abbr, n)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul></li><style>.yomitan-glossary {[data-dictionary=\"Test Dictionary 2\"] {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}\n}</style></ol></div>", 2149 2149 "glossary-plain": "(termsDictAlias)<br>daasu definition 1<br>daasu definition 2", 2150 2150 "glossary-plain-no-dictionary": "daasu definition 1<br>daasu definition 2", 2151 2151 "glossary-first": "<div style=\"text-align: left;\" class=\"yomitan-glossary\"><i>(abbr, n, termsDictAlias)</i> <ul><li>daasu definition 1</li><li>daasu definition 2</li></ul><style>.yomitan-glossary {ul[data-sc-content='glossary'] {\n color: #ffff00;\n}\n}</style></div>",
+1 -1
test/options-util.test.js
··· 691 691 }, 692 692 ], 693 693 profileCurrent: 0, 694 - version: 71, 694 + version: 72, 695 695 global: { 696 696 database: { 697 697 prefixWildcardsSupported: false,