aboutsummaryrefslogtreecommitdiff
path: root/ext/bg
diff options
context:
space:
mode:
Diffstat (limited to 'ext/bg')
-rw-r--r--ext/bg/data/anki-field-templates-upgrade-v2.handlebars109
-rw-r--r--ext/bg/data/anki-field-templates-upgrade-v4.handlebars9
-rw-r--r--ext/bg/data/anki-field-templates-upgrade-v6.handlebars25
-rw-r--r--ext/bg/data/anki-field-templates-upgrade-v8.handlebars131
-rw-r--r--ext/bg/data/custom-audio-list-schema.json33
-rw-r--r--ext/bg/data/default-anki-field-templates.handlebars344
-rw-r--r--ext/bg/data/dictionary-index-schema.json85
-rw-r--r--ext/bg/data/dictionary-kanji-bank-v1-schema.json33
-rw-r--r--ext/bg/data/dictionary-kanji-bank-v3-schema.json44
-rw-r--r--ext/bg/data/dictionary-kanji-meta-bank-v3-schema.json25
-rw-r--r--ext/bg/data/dictionary-tag-bank-v3-schema.json32
-rw-r--r--ext/bg/data/dictionary-term-bank-v1-schema.json36
-rw-r--r--ext/bg/data/dictionary-term-bank-v3-schema.json125
-rw-r--r--ext/bg/data/dictionary-term-meta-bank-v3-schema.json105
-rw-r--r--ext/bg/data/options-schema.json1101
-rw-r--r--ext/bg/js/audio-downloader.js2
-rw-r--r--ext/bg/js/backend.js2
-rw-r--r--ext/bg/js/dictionary-importer.js16
-rw-r--r--ext/bg/js/options.js10
-rw-r--r--ext/bg/settings2.html2
20 files changed, 16 insertions, 2253 deletions
diff --git a/ext/bg/data/anki-field-templates-upgrade-v2.handlebars b/ext/bg/data/anki-field-templates-upgrade-v2.handlebars
deleted file mode 100644
index c018094e..00000000
--- a/ext/bg/data/anki-field-templates-upgrade-v2.handlebars
+++ /dev/null
@@ -1,109 +0,0 @@
-{{! Pitch Accents }}
-{{#*inline "pitch-accent-item-downstep-notation"}}
- {{~#scope~}}
- <span>
- {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}}
- {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}}
- {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}}
- {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}}
- {{~#each (getKanaMorae reading)~}}
- {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}}
- {{~#set "style2"}}{{/set~}}
- {{~#if (isMoraPitchHigh @index ../position)}}
- {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}}
- {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}}
- {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}}
- {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}}
- {{~/if~}}
- {{~/if~}}
- <span style="{{#get "style1"}}{{/get}}">{{{.}}}<span style="{{#get "style2"}}{{/get}}"></span></span>
- {{~/each~}}
- </span>
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}}
-{{#*inline "pitch-accent-item-graph"}}
- {{~#scope~}}
- {{~#set "morae" (getKanaMorae reading)}}{{/set~}}
- {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}}
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {{#op "+" 50 (op "*" 50 (get "morae-count"))}}{{/op}} 100" style="display:inline-block;height:2em;">
- <defs>
- <g id="term-pitch-accent-graph-dot"><circle cx="0" cy="0" r="15" style="fill:#000;stroke:#000;stroke-width:5;" /></g>
- <g id="term-pitch-accent-graph-dot-downstep"><circle cx="0" cy="0" r="15" style="fill:none;stroke:#000;stroke-width:5;" /><circle cx="0" cy="0" r="5" style="fill:none;stroke:#000;stroke-width:5;" /></g>
- <g id="term-pitch-accent-graph-triangle"><path d="M0 13 L15 -13 L-15 -13 Z" style="fill:none;stroke:#000;stroke-width:5;" /></g>
- </defs>
- <path style="fill:none;stroke:#000;stroke-width:5;" d="
- {{~#set "cmd" "M"}}{{/set~}}
- {{~#each (get "morae")~}}
- {{~#get "cmd"}}{{/get~}}
- {{~> pitch-accent-item-graph-position index=@index position=../position~}}
- {{~#set "cmd" "L"}}{{/set~}}
- {{~/each~}}
- "></path>
- <path style="fill:none;stroke:#000;stroke-width:5;stroke-dasharray:5 5;" d="M{{> pitch-accent-item-graph-position index=(op "-" (get "morae-count") 1) position=position}} L{{> pitch-accent-item-graph-position index=(get "morae-count") position=position}}"></path>
- {{#each (get "morae")}}
- <use href="{{#if (op "&&" (isMoraPitchHigh @index ../position) (op "!" (isMoraPitchHigh (op "+" @index 1) ../position)))}}#term-pitch-accent-graph-dot-downstep{{else}}#term-pitch-accent-graph-dot{{/if}}" x="{{> pitch-accent-item-graph-position-x index=@index position=../position}}" y="{{> pitch-accent-item-graph-position-y index=@index position=../position}}"></use>
- {{/each}}
- <use href="#term-pitch-accent-graph-triangle" x="{{> pitch-accent-item-graph-position-x index=(get "morae-count") position=position}}" y="{{> pitch-accent-item-graph-position-y index=(get "morae-count") position=position}}"></use>
-</svg>
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-position"~}}
- <span>[{{position}}]</span>
-{{~/inline}}
-
-{{#*inline "pitch-accent-item"}}
- {{~#if (op "==" format "downstep-notation")~}}
- {{~> pitch-accent-item-downstep-notation~}}
- {{~else if (op "==" format "graph")~}}
- {{~> pitch-accent-item-graph~}}
- {{~else if (op "==" format "position")~}}
- {{~> pitch-accent-item-position~}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-disambiguation"}}
- {{~#scope~}}
- {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}}
- {{~#if (op ">" (property (get "exclusive") "length") 0)~}}
- {{~#set "separator" ""~}}{{/set~}}
- <em>({{#each (get "exclusive")~}}
- {{~#get "separator"}}{{/get~}}{{{.}}}
- {{~/each}} only) </em>
- {{~/if~}}
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-list"}}
- {{~#if (op ">" pitchCount 0)~}}
- {{~#if (op ">" pitchCount 1)~}}<ol>{{~/if~}}
- {{~#each pitches~}}
- {{~#each pitches~}}
- {{~#if (op ">" ../../pitchCount 1)~}}<li>{{~/if~}}
- {{~> pitch-accent-item-disambiguation~}}
- {{~> pitch-accent-item format=../../format~}}
- {{~#if (op ">" ../../pitchCount 1)~}}</li>{{~/if~}}
- {{~/each~}}
- {{~/each~}}
- {{~#if (op ">" pitchCount 1)~}}</ol>{{~/if~}}
- {{~else~}}
- No pitch accent data
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "pitch-accents"}}
- {{~> pitch-accent-list format='downstep-notation'~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-graphs"}}
- {{~> pitch-accent-list format='graph'~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-positions"}}
- {{~> pitch-accent-list format='position'~}}
-{{/inline}}
-{{! End Pitch Accents }}
diff --git a/ext/bg/data/anki-field-templates-upgrade-v4.handlebars b/ext/bg/data/anki-field-templates-upgrade-v4.handlebars
deleted file mode 100644
index dc88395a..00000000
--- a/ext/bg/data/anki-field-templates-upgrade-v4.handlebars
+++ /dev/null
@@ -1,9 +0,0 @@
-{{#*inline "clipboard-image"}}
- {{~#if definition.clipboardImageFileName~}}
- <img src="{{definition.clipboardImageFileName}}" />
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "clipboard-text"}}
- {{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}}
-{{/inline}}
diff --git a/ext/bg/data/anki-field-templates-upgrade-v6.handlebars b/ext/bg/data/anki-field-templates-upgrade-v6.handlebars
deleted file mode 100644
index 809423ce..00000000
--- a/ext/bg/data/anki-field-templates-upgrade-v6.handlebars
+++ /dev/null
@@ -1,25 +0,0 @@
-{{#*inline "conjugation"}}
- {{~#if definition.reasons~}}
- {{~#each definition.reasons~}}
- {{~#if (op ">" @index 0)}} « {{/if~}}
- {{.}}
- {{~/each~}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "frequencies"}}
- {{~#if (op ">" definition.frequencies.length 0)~}}
- <ul style="text-align: left;">
- {{~#each definition.frequencies~}}
- <li>
- {{~#if (op "!==" ../definition.type "kanji")~}}
- {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}(
- {{~#furigana expression reading~}}{{~/furigana~}}
- ) {{/if~}}
- {{~/if~}}
- {{~dictionary}}: {{frequency~}}
- </li>
- {{~/each~}}
- </ul>
- {{~/if~}}
-{{/inline}}
diff --git a/ext/bg/data/anki-field-templates-upgrade-v8.handlebars b/ext/bg/data/anki-field-templates-upgrade-v8.handlebars
deleted file mode 100644
index b3aed45f..00000000
--- a/ext/bg/data/anki-field-templates-upgrade-v8.handlebars
+++ /dev/null
@@ -1,131 +0,0 @@
-{{#*inline "stroke-count"}}
- {{~#scope~}}
- {{~#set "found" false}}{{/set~}}
- {{~#each definition.stats.misc~}}
- {{~#if (op "===" name "strokes")~}}
- {{~#set "found" true}}{{/set~}}
- Stroke count: {{value}}
- {{~/if~}}
- {{~/each~}}
- {{~#if (op "!" (get "found"))~}}
- Stroke count: Unknown
- {{~/if~}}
- {{~/scope~}}
-{{/inline}}
-
-{{<<<<<<<}}
-{{#*inline "glossary-single"}}
- {{~#unless brief~}}
- {{~#scope~}}
- {{~#set "any" false}}{{/set~}}
- {{~#if definitionTags~}}{{#each definitionTags~}}
- {{~#if (op "||" (op "!" ../data.compactTags) (op "!" redundant))~}}
- {{~#if (get "any")}}, {{else}}<i>({{/if~}}
- {{name}}
- {{~#set "any" true}}{{/set~}}
- {{~/if~}}
- {{~/each~}}
- {{~#if (get "any")}})</i> {{/if~}}
- {{~/if~}}
- {{~/scope~}}
- {{~#if only~}}({{#each only}}{{{.}}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
- {{~/unless~}}
- {{~#if glossary.[1]~}}
- {{~#if compactGlossaries~}}
- {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
- {{~else~}}
- <ul>{{#each glossary}}<li>{{#multiLine}}{{.}}{{/multiLine}}</li>{{/each}}</ul>
- {{~/if~}}
- {{~else~}}
- {{~#multiLine}}{{glossary.[0]}}{{/multiLine~}}
- {{~/if~}}
-{{/inline}}
-{{=======}}
-{{#*inline "glossary-single"}}
- {{~#unless brief~}}
- {{~#scope~}}
- {{~#set "any" false}}{{/set~}}
- {{~#each definitionTags~}}
- {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
- {{~#if (get "any")}}, {{else}}<i>({{/if~}}
- {{name}}
- {{~#set "any" true}}{{/set~}}
- {{~/if~}}
- {{~/each~}}
- {{~#unless noDictionaryTag~}}
- {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
- {{~#if (get "any")}}, {{else}}<i>({{/if~}}
- {{dictionary}}
- {{~#set "any" true}}{{/set~}}
- {{~/if~}}
- {{~/unless~}}
- {{~#if (get "any")}})</i> {{/if~}}
- {{~/scope~}}
- {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
- {{~/unless~}}
- {{~#if (op "<=" glossary.length 1)~}}
- {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}}
- {{~else if @root.compactGlossaries~}}
- {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
- {{~else~}}
- <ul>{{#each glossary}}<li>{{#multiLine}}{{.}}{{/multiLine}}</li>{{/each}}</ul>
- {{~/if~}}
- {{~#set "previousDictionary" dictionary~}}{{~/set~}}
-{{/inline}}
-{{>>>>>>>}}
-
-{{<<<<<<<}}
-{{#*inline "glossary"}}
- <div style="text-align: left;">
- {{~#if modeKanji~}}
- {{~#if definition.glossary.[1]~}}
- <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
- {{~else~}}
- {{definition.glossary.[0]}}
- {{~/if~}}
- {{~else~}}
- {{~#if group~}}
- {{~#if definition.definitions.[1]~}}
- <ol>{{#each definition.definitions}}<li>{{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}</li>{{/each}}</ol>
- {{~else~}}
- {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}}
- {{~/if~}}
- {{~else if merge~}}
- {{~#if definition.definitions.[1]~}}
- <ol>{{#each definition.definitions}}<li>{{> glossary-single brief=../brief compactGlossaries=../compactGlossaries data=../.}}</li>{{/each}}</ol>
- {{~else~}}
- {{~> glossary-single definition.definitions.[0] brief=brief compactGlossaries=compactGlossaries data=.~}}
- {{~/if~}}
- {{~else~}}
- {{~> glossary-single definition brief=brief compactGlossaries=compactGlossaries data=.~}}
- {{~/if~}}
- {{~/if~}}
- </div>
-{{/inline}}
-{{=======}}
-{{~#*inline "glossary"~}}
- <div style="text-align: left;">
- {{~#scope~}}
- {{~#if (op "===" definition.type "term")~}}
- {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
- {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
- {{~#if (op ">" definition.definitions.length 1)~}}
- <ol>{{~#each definition.definitions~}}<li>{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}</li>{{~/each~}}</ol>
- {{~else~}}
- {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}}
- {{~/if~}}
- {{~else if (op "===" definition.type "kanji")~}}
- {{~#if (op ">" definition.glossary.length 1)~}}
- <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
- {{~else~}}
- {{~#each definition.glossary~}}{{.}}{{~/each~}}
- {{~/if~}}
- {{~/if~}}
- {{~/scope~}}
- </div>
-{{~/inline~}}
-
-{{#*inline "glossary-no-dictionary"}}
- {{~> glossary noDictionaryTag=true ~}}
-{{/inline}}
-{{>>>>>>>}}
diff --git a/ext/bg/data/custom-audio-list-schema.json b/ext/bg/data/custom-audio-list-schema.json
deleted file mode 100644
index 2cb3ca78..00000000
--- a/ext/bg/data/custom-audio-list-schema.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "required": [
- "type",
- "audioSources"
- ],
- "additionalProperties": false,
- "properties": {
- "type": {
- "type": "string",
- "const": "audioSourceList"
- },
- "audioSources": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "url"
- ],
- "additionalProperties": false,
- "properties": {
- "name": {
- "type": "string"
- },
- "url": {
- "type": "string"
- }
- }
- }
- }
- }
-}
diff --git a/ext/bg/data/default-anki-field-templates.handlebars b/ext/bg/data/default-anki-field-templates.handlebars
deleted file mode 100644
index 0f390e8d..00000000
--- a/ext/bg/data/default-anki-field-templates.handlebars
+++ /dev/null
@@ -1,344 +0,0 @@
-{{#*inline "glossary-single"}}
- {{~#unless brief~}}
- {{~#scope~}}
- {{~#set "any" false}}{{/set~}}
- {{~#each definitionTags~}}
- {{~#if (op "||" (op "!" @root.compactTags) (op "!" redundant))~}}
- {{~#if (get "any")}}, {{else}}<i>({{/if~}}
- {{name}}
- {{~#set "any" true}}{{/set~}}
- {{~/if~}}
- {{~/each~}}
- {{~#unless noDictionaryTag~}}
- {{~#if (op "||" (op "!" @root.compactTags) (op "!==" dictionary (get "previousDictionary")))~}}
- {{~#if (get "any")}}, {{else}}<i>({{/if~}}
- {{dictionary}}
- {{~#set "any" true}}{{/set~}}
- {{~/if~}}
- {{~/unless~}}
- {{~#if (get "any")}})</i> {{/if~}}
- {{~/scope~}}
- {{~#if only~}}({{#each only}}{{.}}{{#unless @last}}, {{/unless}}{{/each}} only) {{/if~}}
- {{~/unless~}}
- {{~#if (op "<=" glossary.length 1)~}}
- {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{/each}}
- {{~else if @root.compactGlossaries~}}
- {{#each glossary}}{{#multiLine}}{{.}}{{/multiLine}}{{#unless @last}} | {{/unless}}{{/each}}
- {{~else~}}
- <ul>{{#each glossary}}<li>{{#multiLine}}{{.}}{{/multiLine}}</li>{{/each}}</ul>
- {{~/if~}}
- {{~#set "previousDictionary" dictionary~}}{{~/set~}}
-{{/inline}}
-
-{{#*inline "audio"}}
- {{~#if definition.audioFileName~}}
- [sound:{{definition.audioFileName}}]
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "character"}}
- {{~definition.character~}}
-{{/inline}}
-
-{{#*inline "dictionary"}}
- {{~definition.dictionary~}}
-{{/inline}}
-
-{{#*inline "expression"}}
- {{~#if merge~}}
- {{~#if modeTermKana~}}
- {{~#each definition.reading~}}
- {{{.}}}
- {{~#unless @last}}、{{/unless~}}
- {{~else~}}
- {{~#each definition.expression~}}
- {{{.}}}
- {{~#unless @last}}、{{/unless~}}
- {{~/each~}}
- {{~/each~}}
- {{~else~}}
- {{~#each definition.expression~}}
- {{{.}}}
- {{~#unless @last}}、{{/unless~}}
- {{~/each~}}
- {{~/if~}}
- {{~else~}}
- {{~#if modeTermKana~}}
- {{~#if definition.reading~}}
- {{definition.reading}}
- {{~else~}}
- {{definition.expression}}
- {{~/if~}}
- {{~else~}}
- {{definition.expression}}
- {{~/if~}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "furigana"}}
- {{~#if merge~}}
- {{~#each definition.expressions~}}
- <span class="expression-{{termFrequency}}">{{~#furigana}}{{{.}}}{{/furigana~}}</span>
- {{~#unless @last}}、{{/unless~}}
- {{~/each~}}
- {{~else~}}
- {{#furigana}}{{{definition}}}{{/furigana}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "furigana-plain"}}
- {{~#if merge~}}
- {{~#each definition.expressions~}}
- <span class="expression-{{termFrequency}}">{{~#furiganaPlain}}{{{.}}}{{/furiganaPlain~}}</span>
- {{~#unless @last}}、{{/unless~}}
- {{~/each~}}
- {{~else~}}
- {{#furiganaPlain}}{{{definition}}}{{/furiganaPlain}}
- {{~/if~}}
-{{/inline}}
-
-{{~#*inline "glossary"~}}
- <div style="text-align: left;">
- {{~#scope~}}
- {{~#if (op "===" definition.type "term")~}}
- {{~> glossary-single definition brief=brief noDictionaryTag=noDictionaryTag ~}}
- {{~else if (op "||" (op "===" definition.type "termGrouped") (op "===" definition.type "termMerged"))~}}
- {{~#if (op ">" definition.definitions.length 1)~}}
- <ol>{{~#each definition.definitions~}}<li>{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}</li>{{~/each~}}</ol>
- {{~else~}}
- {{~#each definition.definitions~}}{{~> glossary-single . brief=../brief noDictionaryTag=../noDictionaryTag ~}}{{~/each~}}
- {{~/if~}}
- {{~else if (op "===" definition.type "kanji")~}}
- {{~#if (op ">" definition.glossary.length 1)~}}
- <ol>{{#each definition.glossary}}<li>{{.}}</li>{{/each}}</ol>
- {{~else~}}
- {{~#each definition.glossary~}}{{.}}{{~/each~}}
- {{~/if~}}
- {{~/if~}}
- {{~/scope~}}
- </div>
-{{~/inline~}}
-
-{{#*inline "glossary-no-dictionary"}}
- {{~> glossary noDictionaryTag=true ~}}
-{{/inline}}
-
-{{#*inline "glossary-brief"}}
- {{~> glossary brief=true ~}}
-{{/inline}}
-
-{{#*inline "kunyomi"}}
- {{~#each definition.kunyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}}
-{{/inline}}
-
-{{#*inline "onyomi"}}
- {{~#each definition.onyomi}}{{.}}{{#unless @last}}, {{/unless}}{{/each~}}
-{{/inline}}
-
-{{#*inline "reading"}}
- {{~#unless modeTermKana~}}
- {{~#if merge~}}
- {{~#each definition.reading~}}
- {{{.}}}
- {{~#unless @last}}、{{/unless~}}
- {{~/each~}}
- {{~else~}}
- {{~definition.reading~}}
- {{~/if~}}
- {{~/unless~}}
-{{/inline}}
-
-{{#*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-suffix"}}
- {{~#if definition.cloze}}{{definition.cloze.suffix}}{{/if~}}
-{{/inline}}
-
-{{#*inline "tags"}}
- {{~#mergeTags definition group merge}}{{this}}{{/mergeTags~}}
-{{/inline}}
-
-{{#*inline "url"}}
- <a href="{{definition.url}}">{{definition.url}}</a>
-{{/inline}}
-
-{{#*inline "screenshot"}}
- <img src="{{definition.screenshotFileName}}" />
-{{/inline}}
-
-{{#*inline "document-title"}}
- {{~context.document.title~}}
-{{/inline}}
-
-{{! Pitch Accents }}
-{{#*inline "pitch-accent-item-downstep-notation"}}
- {{~#scope~}}
- <span>
- {{~#set "style1a"~}}display:inline-block;position:relative;{{~/set~}}
- {{~#set "style1b"~}}padding-right:0.1em;margin-right:0.1em;{{~/set~}}
- {{~#set "style2a"~}}display:block;user-select:none;pointer-events:none;position:absolute;top:0.1em;left:0;right:0;height:0;border-top:0.1em solid;{{~/set~}}
- {{~#set "style2b"~}}right:-0.1em;height:0.4em;border-right:0.1em solid;{{~/set~}}
- {{~#each (getKanaMorae reading)~}}
- {{~#set "style1"}}{{#get "style1a"}}{{/get}}{{/set~}}
- {{~#set "style2"}}{{/set~}}
- {{~#if (isMoraPitchHigh @index ../position)}}
- {{~#set "style2"}}{{#get "style2a"}}{{/get}}{{/set~}}
- {{~#if (op "!" (isMoraPitchHigh (op "+" @index 1) ../position))~}}
- {{~#set "style1" (op "+" (get "style1") (get "style1b"))}}{{/set~}}
- {{~#set "style2" (op "+" (get "style2") (get "style2b"))}}{{/set~}}
- {{~/if~}}
- {{~/if~}}
- <span style="{{#get "style1"}}{{/get}}">{{{.}}}<span style="{{#get "style2"}}{{/get}}"></span></span>
- {{~/each~}}
- </span>
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-graph-position-x"}}{{#op "+" 25 (op "*" index 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position-y"}}{{#op "+" 25 (op "?:" (isMoraPitchHigh index position) 0 50)}}{{/op}}{{/inline}}
-{{#*inline "pitch-accent-item-graph-position"}}{{> pitch-accent-item-graph-position-x index=index position=position}} {{> pitch-accent-item-graph-position-y index=index position=position}}{{/inline}}
-{{#*inline "pitch-accent-item-graph"}}
- {{~#scope~}}
- {{~#set "morae" (getKanaMorae reading)}}{{/set~}}
- {{~#set "morae-count" (property (get "morae") "length")}}{{/set~}}
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 {{#op "+" 50 (op "*" 50 (get "morae-count"))}}{{/op}} 100" style="display:inline-block;height:2em;">
- <defs>
- <g id="term-pitch-accent-graph-dot"><circle cx="0" cy="0" r="15" style="fill:#000;stroke:#000;stroke-width:5;" /></g>
- <g id="term-pitch-accent-graph-dot-downstep"><circle cx="0" cy="0" r="15" style="fill:none;stroke:#000;stroke-width:5;" /><circle cx="0" cy="0" r="5" style="fill:none;stroke:#000;stroke-width:5;" /></g>
- <g id="term-pitch-accent-graph-triangle"><path d="M0 13 L15 -13 L-15 -13 Z" style="fill:none;stroke:#000;stroke-width:5;" /></g>
- </defs>
- <path style="fill:none;stroke:#000;stroke-width:5;" d="
- {{~#set "cmd" "M"}}{{/set~}}
- {{~#each (get "morae")~}}
- {{~#get "cmd"}}{{/get~}}
- {{~> pitch-accent-item-graph-position index=@index position=../position~}}
- {{~#set "cmd" "L"}}{{/set~}}
- {{~/each~}}
- "></path>
- <path style="fill:none;stroke:#000;stroke-width:5;stroke-dasharray:5 5;" d="M{{> pitch-accent-item-graph-position index=(op "-" (get "morae-count") 1) position=position}} L{{> pitch-accent-item-graph-position index=(get "morae-count") position=position}}"></path>
- {{#each (get "morae")}}
- <use href="{{#if (op "&&" (isMoraPitchHigh @index ../position) (op "!" (isMoraPitchHigh (op "+" @index 1) ../position)))}}#term-pitch-accent-graph-dot-downstep{{else}}#term-pitch-accent-graph-dot{{/if}}" x="{{> pitch-accent-item-graph-position-x index=@index position=../position}}" y="{{> pitch-accent-item-graph-position-y index=@index position=../position}}"></use>
- {{/each}}
- <use href="#term-pitch-accent-graph-triangle" x="{{> pitch-accent-item-graph-position-x index=(get "morae-count") position=position}}" y="{{> pitch-accent-item-graph-position-y index=(get "morae-count") position=position}}"></use>
-</svg>
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-position"~}}
- <span>[{{position}}]</span>
-{{~/inline}}
-
-{{#*inline "pitch-accent-item"}}
- {{~#if (op "==" format "downstep-notation")~}}
- {{~> pitch-accent-item-downstep-notation~}}
- {{~else if (op "==" format "graph")~}}
- {{~> pitch-accent-item-graph~}}
- {{~else if (op "==" format "position")~}}
- {{~> pitch-accent-item-position~}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-item-disambiguation"}}
- {{~#scope~}}
- {{~#set "exclusive" (spread exclusiveExpressions exclusiveReadings)}}{{/set~}}
- {{~#if (op ">" (property (get "exclusive") "length") 0)~}}
- {{~#set "separator" ""~}}{{/set~}}
- <em>({{#each (get "exclusive")~}}
- {{~#get "separator"}}{{/get~}}{{{.}}}
- {{~/each}} only) </em>
- {{~/if~}}
- {{~/scope~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-list"}}
- {{~#if (op ">" pitchCount 0)~}}
- {{~#if (op ">" pitchCount 1)~}}<ol>{{~/if~}}
- {{~#each pitches~}}
- {{~#each pitches~}}
- {{~#if (op ">" ../../pitchCount 1)~}}<li>{{~/if~}}
- {{~> pitch-accent-item-disambiguation~}}
- {{~> pitch-accent-item format=../../format~}}
- {{~#if (op ">" ../../pitchCount 1)~}}</li>{{~/if~}}
- {{~/each~}}
- {{~/each~}}
- {{~#if (op ">" pitchCount 1)~}}</ol>{{~/if~}}
- {{~else~}}
- No pitch accent data
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "pitch-accents"}}
- {{~> pitch-accent-list format='downstep-notation'~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-graphs"}}
- {{~> pitch-accent-list format='graph'~}}
-{{/inline}}
-
-{{#*inline "pitch-accent-positions"}}
- {{~> pitch-accent-list format='position'~}}
-{{/inline}}
-{{! End Pitch Accents }}
-
-{{#*inline "clipboard-image"}}
- {{~#if definition.clipboardImageFileName~}}
- <img src="{{definition.clipboardImageFileName}}" />
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "clipboard-text"}}
- {{~#if definition.clipboardText~}}{{definition.clipboardText}}{{~/if~}}
-{{/inline}}
-
-{{#*inline "conjugation"}}
- {{~#if definition.reasons~}}
- {{~#each definition.reasons~}}
- {{~#if (op ">" @index 0)}} « {{/if~}}
- {{.}}
- {{~/each~}}
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "frequencies"}}
- {{~#if (op ">" definition.frequencies.length 0)~}}
- <ul style="text-align: left;">
- {{~#each definition.frequencies~}}
- <li>
- {{~#if (op "!==" ../definition.type "kanji")~}}
- {{~#if (op "||" (op ">" ../uniqueExpressions.length 1) (op ">" ../uniqueReadings.length 1))~}}(
- {{~#furigana expression reading~}}{{~/furigana~}}
- ) {{/if~}}
- {{~/if~}}
- {{~dictionary}}: {{frequency~}}
- </li>
- {{~/each~}}
- </ul>
- {{~/if~}}
-{{/inline}}
-
-{{#*inline "stroke-count"}}
- {{~#scope~}}
- {{~#set "found" false}}{{/set~}}
- {{~#each definition.stats.misc~}}
- {{~#if (op "===" name "strokes")~}}
- {{~#set "found" true}}{{/set~}}
- Stroke count: {{value}}
- {{~/if~}}
- {{~/each~}}
- {{~#if (op "!" (get "found"))~}}
- Stroke count: Unknown
- {{~/if~}}
- {{~/scope~}}
-{{/inline}}
-
-{{~> (lookup . "marker") ~}}
diff --git a/ext/bg/data/dictionary-index-schema.json b/ext/bg/data/dictionary-index-schema.json
deleted file mode 100644
index 09cff711..00000000
--- a/ext/bg/data/dictionary-index-schema.json
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "description": "Index file containing information about the data contained in the dictionary.",
- "required": [
- "title",
- "revision"
- ],
- "properties": {
- "title": {
- "type": "string",
- "description": "Title of the dictionary."
- },
- "revision": {
- "type": "string",
- "description": "Revision of the dictionary. This value is only used for displaying information."
- },
- "sequenced": {
- "type": "boolean",
- "default": false,
- "description": "Whether or not this dictionary can be used as the primary dictionary. Primary dictionaries typically contain term/expression definitions."
- },
- "format": {
- "type": "integer",
- "description": "Format of data found in the JSON data files.",
- "enum": [1, 2, 3]
- },
- "version": {
- "type": "integer",
- "description": "Alias for format.",
- "enum": [1, 2, 3]
- },
- "author": {
- "type": "string",
- "description": "Creator of the dictionary."
- },
- "url": {
- "type": "string",
- "description": "URL for the source of the dictionary."
- },
- "description": {
- "type": "string",
- "description": "Description of the dictionary data."
- },
- "attribution": {
- "type": "string",
- "description": "Attribution information for the dictionary data."
- },
- "tagMeta": {
- "type": "object",
- "description": "Tag information for terms and kanji. This object is obsolete and individual tag files should be used instead.",
- "additionalProperties": {
- "type": "object",
- "description": "Information about a single tag. The object key is the name of the tag.",
- "properties": {
- "category": {
- "type": "string",
- "description": "Category for the tag."
- },
- "order": {
- "type": "number",
- "description": "Sorting order for the tag."
- },
- "notes": {
- "type": "string",
- "description": "Notes for the tag."
- },
- "score": {
- "type": "number",
- "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
- }
- },
- "additionalProperties": false
- }
- }
- },
- "anyOf": [
- {
- "required": ["format"]
- },
- {
- "required": ["version"]
- }
- ]
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-kanji-bank-v1-schema.json b/ext/bg/data/dictionary-kanji-bank-v1-schema.json
deleted file mode 100644
index 6dad5a7a..00000000
--- a/ext/bg/data/dictionary-kanji-bank-v1-schema.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Data file containing kanji information.",
- "additionalItems": {
- "type": "array",
- "description": "Information about a single kanji character.",
- "minItems": 4,
- "items": [
- {
- "type": "string",
- "description": "Kanji character.",
- "minLength": 1
- },
- {
- "type": "string",
- "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."
- },
- {
- "type": "string",
- "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."
- },
- {
- "type": "string",
- "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags."
- }
- ],
- "additionalItems": {
- "type": "string",
- "description": "A meaning for the kanji character."
- }
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-kanji-bank-v3-schema.json b/ext/bg/data/dictionary-kanji-bank-v3-schema.json
deleted file mode 100644
index a5b82039..00000000
--- a/ext/bg/data/dictionary-kanji-bank-v3-schema.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Data file containing kanji information.",
- "additionalItems": {
- "type": "array",
- "description": "Information about a single kanji character.",
- "minItems": 6,
- "items": [
- {
- "type": "string",
- "description": "Kanji character.",
- "minLength": 1
- },
- {
- "type": "string",
- "description": "String of space-separated onyomi readings for the kanji character. An empty string is treated as no readings."
- },
- {
- "type": "string",
- "description": "String of space-separated kunyomi readings for the kanji character. An empty string is treated as no readings."
- },
- {
- "type": "string",
- "description": "String of space-separated tags for the kanji character. An empty string is treated as no tags."
- },
- {
- "type": "array",
- "description": "Array of meanings for the kanji character.",
- "items": {
- "type": "string",
- "description": "A meaning for the kanji character."
- }
- },
- {
- "type": "object",
- "description": "Various stats for the kanji character.",
- "additionalProperties": {
- "type": "string"
- }
- }
- ]
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-kanji-meta-bank-v3-schema.json b/ext/bg/data/dictionary-kanji-meta-bank-v3-schema.json
deleted file mode 100644
index 62479026..00000000
--- a/ext/bg/data/dictionary-kanji-meta-bank-v3-schema.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Custom metadata for kanji characters.",
- "additionalItems": {
- "type": "array",
- "description": "Metadata about a single kanji character.",
- "minItems": 3,
- "items": [
- {
- "type": "string",
- "minLength": 1
- },
- {
- "type": "string",
- "enum": ["freq"],
- "description": "Type of data. \"freq\" corresponds to frequency information."
- },
- {
- "type": ["string", "number"],
- "description": "Data for the character."
- }
- ]
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-tag-bank-v3-schema.json b/ext/bg/data/dictionary-tag-bank-v3-schema.json
deleted file mode 100644
index ee5ca64d..00000000
--- a/ext/bg/data/dictionary-tag-bank-v3-schema.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Data file containing tag information for terms and kanji.",
- "additionalItems": {
- "type": "array",
- "description": "Information about a single tag.",
- "minItems": 5,
- "items": [
- {
- "type": "string",
- "description": "Tag name."
- },
- {
- "type": "string",
- "description": "Category for the tag."
- },
- {
- "type": "number",
- "description": "Sorting order for the tag."
- },
- {
- "type": "string",
- "description": "Notes for the tag."
- },
- {
- "type": "number",
- "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
- }
- ]
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-term-bank-v1-schema.json b/ext/bg/data/dictionary-term-bank-v1-schema.json
deleted file mode 100644
index 6ffb26e6..00000000
--- a/ext/bg/data/dictionary-term-bank-v1-schema.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Data file containing term and expression information.",
- "additionalItems": {
- "type": "array",
- "description": "Information about a single term/expression.",
- "minItems": 5,
- "items": [
- {
- "type": "string",
- "description": "Term or expression."
- },
- {
- "type": "string",
- "description": "Reading of the term/expression, or an empty string if the reading is the same as the term/expression."
- },
- {
- "type": ["string", "null"],
- "description": "String of space-separated tags for the definition. An empty string is treated as no tags."
- },
- {
- "type": "string",
- "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns."
- },
- {
- "type": "number",
- "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
- }
- ],
- "additionalItems": {
- "type": "string",
- "description": "Single definition for the term/expression."
- }
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-term-bank-v3-schema.json b/ext/bg/data/dictionary-term-bank-v3-schema.json
deleted file mode 100644
index 4790e561..00000000
--- a/ext/bg/data/dictionary-term-bank-v3-schema.json
+++ /dev/null
@@ -1,125 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Data file containing term and expression information.",
- "additionalItems": {
- "type": "array",
- "description": "Information about a single term/expression.",
- "minItems": 8,
- "items": [
- {
- "type": "string",
- "description": "Term or expression."
- },
- {
- "type": "string",
- "description": "Reading of the term/expression, or an empty string if the reading is the same as the term/expression."
- },
- {
- "type": ["string", "null"],
- "description": "String of space-separated tags for the definition. An empty string is treated as no tags."
- },
- {
- "type": "string",
- "description": "String of space-separated rule identifiers for the definition which is used to validate delinflection. Valid rule identifiers are: v1: ichidan verb; v5: godan verb; vs: suru verb; vk: kuru verb; adj-i: i-adjective. An empty string corresponds to words which aren't inflected, such as nouns."
- },
- {
- "type": "number",
- "description": "Score used to determine popularity. Negative values are more rare and positive values are more frequent. This score is also used to sort search results."
- },
- {
- "type": "array",
- "description": "Array of definitions for the term/expression.",
- "items": {
- "oneOf": [
- {
- "type": "string",
- "description": "Single definition for the term/expression."
- },
- {
- "type": "object",
- "description": "Single detailed definition for the term/expression.",
- "required": [
- "type"
- ],
- "properties": {
- "type": {
- "type": "string",
- "description": "The type of the data for this definition.",
- "enum": ["text", "image"]
- }
- },
- "oneOf": [
- {
- "required": [
- "type",
- "text"
- ],
- "additionalProperties": false,
- "properties": {
- "type": {
- "type": "string",
- "enum": ["text"]
- },
- "text": {
- "type": "string",
- "description": "Single definition for the term/expression."
- }
- }
- },
- {
- "required": [
- "type",
- "path"
- ],
- "additionalProperties": false,
- "properties": {
- "type": {
- "type": "string",
- "enum": ["image"]
- },
- "path": {
- "type": "string",
- "description": "Path to the image file in the archive."
- },
- "width": {
- "type": "integer",
- "description": "Preferred width of the image.",
- "minimum": 1
- },
- "height": {
- "type": "integer",
- "description": "Preferred width of the image.",
- "minimum": 1
- },
- "title": {
- "type": "string",
- "description": "Hover text for the image."
- },
- "description": {
- "type": "string",
- "description": "Description of the image."
- },
- "pixelated": {
- "type": "boolean",
- "description": "Whether or not the image should appear pixelated at sizes larger than the image's native resolution.",
- "default": false
- }
- }
- }
- ]
- }
- ]
- }
- },
- {
- "type": "integer",
- "description": "Sequence number for the term/expression. Terms/expressions with the same sequence number can be shown together when the \"resultOutputMode\" option is set to \"merge\"."
- },
- {
- "type": "string",
- "description": "String of space-separated tags for the term/expression. An empty string is treated as no tags."
- }
- ]
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/dictionary-term-meta-bank-v3-schema.json b/ext/bg/data/dictionary-term-meta-bank-v3-schema.json
deleted file mode 100644
index ffffb546..00000000
--- a/ext/bg/data/dictionary-term-meta-bank-v3-schema.json
+++ /dev/null
@@ -1,105 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "array",
- "description": "Custom metadata for terms/expressions.",
- "additionalItems": {
- "type": "array",
- "description": "Metadata about a single term/expression.",
- "minItems": 3,
- "items": [
- {
- "type": "string",
- "description": "Term or expression."
- },
- {
- "type": "string",
- "enum": ["freq", "pitch"],
- "description": "Type of data. \"freq\" corresponds to frequency information; \"pitch\" corresponds to pitch information."
- },
- {
- "description": "Data for the term/expression."
- }
- ],
- "oneOf": [
- {
- "items": [
- {},
- {"enum": ["freq"]},
- {
- "oneOf": [
- {
- "type": ["string", "number"],
- "description": "Frequency information for the term or expression."
- },
- {
- "type": ["object"],
- "required": [
- "reading",
- "frequency"
- ],
- "additionalProperties": false,
- "properties": {
- "reading": {
- "type": "string",
- "description": "Reading for the term or expression."
- },
- "frequency": {
- "type": ["string", "number"],
- "description": "Frequency information for the term or expression."
- }
- }
- }
- ]
- }
- ]
- },
- {
- "items": [
- {},
- {"enum": ["pitch"]},
- {
- "type": ["object"],
- "description": "Pitch accent information for the term or expression.",
- "required": [
- "reading",
- "pitches"
- ],
- "additionalProperties": false,
- "properties": {
- "reading": {
- "type": "string",
- "description": "Reading for the term or expression."
- },
- "pitches": {
- "type": "array",
- "description": "List of different pitch accent information for the term and reading combination.",
- "additionalItems": {
- "type": "object",
- "required": [
- "position"
- ],
- "additionalProperties": false,
- "properties": {
- "position": {
- "type": "integer",
- "description": "Mora position of the pitch accent downstep. A value of 0 indicates that the word does not have a downstep (heiban).",
- "minimum": 0
- },
- "tags": {
- "type": "array",
- "description": "List of tags for this pitch accent.",
- "items": {
- "type": "string",
- "description": "Tag for this pitch accent. This typically corresponds to a certain type of part of speech."
- }
- }
- }
- }
- }
- }
- }
- ]
- }
- ]
- }
-} \ No newline at end of file
diff --git a/ext/bg/data/options-schema.json b/ext/bg/data/options-schema.json
deleted file mode 100644
index f4f5d0ca..00000000
--- a/ext/bg/data/options-schema.json
+++ /dev/null
@@ -1,1101 +0,0 @@
-{
- "$schema": "http://json-schema.org/draft-07/schema#",
- "type": "object",
- "required": [
- "version",
- "profiles",
- "profileCurrent",
- "global"
- ],
- "properties": {
- "version": {
- "type": "integer",
- "minimum": 0,
- "default": 0
- },
- "profiles": {
- "type": "array",
- "minItems": 1,
- "items": {
- "type": "object",
- "required": [
- "name",
- "conditionGroups",
- "options"
- ],
- "properties": {
- "name": {
- "type": "string",
- "default": "Default"
- },
- "conditionGroups": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "conditions"
- ],
- "properties": {
- "conditions": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "type",
- "operator",
- "value"
- ],
- "properties": {
- "type": {
- "type": "string"
- },
- "operator": {
- "type": "string"
- },
- "value": {}
- }
- }
- }
- }
- }
- },
- "options": {
- "type": "object",
- "required": [
- "general",
- "popupWindow",
- "audio",
- "scanning",
- "translation",
- "dictionaries",
- "parsing",
- "anki",
- "sentenceParsing",
- "inputs",
- "clipboard"
- ],
- "properties": {
- "general": {
- "type": "object",
- "required": [
- "enable",
- "resultOutputMode",
- "debugInfo",
- "maxResults",
- "showAdvanced",
- "popupDisplayMode",
- "popupWidth",
- "popupHeight",
- "popupHorizontalOffset",
- "popupVerticalOffset",
- "popupHorizontalOffset2",
- "popupVerticalOffset2",
- "popupHorizontalTextPosition",
- "popupVerticalTextPosition",
- "popupScalingFactor",
- "popupScaleRelativeToPageZoom",
- "popupScaleRelativeToVisualViewport",
- "showGuide",
- "compactTags",
- "glossaryLayoutMode",
- "mainDictionary",
- "popupTheme",
- "popupOuterTheme",
- "customPopupCss",
- "customPopupOuterCss",
- "enableWanakana",
- "showPitchAccentDownstepNotation",
- "showPitchAccentPositionNotation",
- "showPitchAccentGraph",
- "showIframePopupsInRootFrame",
- "useSecurePopupFrameUrl",
- "usePopupShadowDom",
- "usePopupWindow",
- "popupCurrentIndicatorMode",
- "popupActionBarVisibility",
- "popupActionBarLocation"
- ],
- "properties": {
- "enable": {
- "type": "boolean",
- "default": true
- },
- "resultOutputMode": {
- "type": "string",
- "enum": ["group", "merge", "split"],
- "default": "group"
- },
- "debugInfo": {
- "type": "boolean",
- "default": false
- },
- "maxResults": {
- "type": "integer",
- "minimum": 1,
- "default": 32
- },
- "showAdvanced": {
- "type": "boolean",
- "default": false
- },
- "popupDisplayMode": {
- "type": "string",
- "enum": ["default", "full-width"],
- "default": "default"
- },
- "popupWidth": {
- "type": "number",
- "minimum": 0,
- "default": 400
- },
- "popupHeight": {
- "type": "number",
- "minimum": 0,
- "default": 250
- },
- "popupHorizontalOffset": {
- "type": "number",
- "default": 0
- },
- "popupVerticalOffset": {
- "type": "number",
- "default": 10
- },
- "popupHorizontalOffset2": {
- "type": "number",
- "default": 10
- },
- "popupVerticalOffset2": {
- "type": "number",
- "default": 0
- },
- "popupHorizontalTextPosition": {
- "type": "string",
- "enum": ["below", "above"],
- "default": "below"
- },
- "popupVerticalTextPosition": {
- "type": "string",
- "enum": ["default", "before", "after", "left", "right"],
- "default": "before"
- },
- "popupScalingFactor": {
- "type": "number",
- "default": 1
- },
- "popupScaleRelativeToPageZoom": {
- "type": "boolean",
- "default": false
- },
- "popupScaleRelativeToVisualViewport": {
- "type": "boolean",
- "default": true
- },
- "showGuide": {
- "type": "boolean",
- "default": true
- },
- "compactTags": {
- "type": "boolean",
- "default": false
- },
- "glossaryLayoutMode": {
- "type": "string",
- "enum": ["default", "compact"],
- "default": "default"
- },
- "mainDictionary": {
- "type": "string"
- },
- "popupTheme": {
- "type": "string",
- "enum": ["default", "dark"],
- "default": "default"
- },
- "popupOuterTheme": {
- "type": "string",
- "enum": ["default", "dark", "auto"],
- "default": "default"
- },
- "customPopupCss": {
- "type": "string",
- "default": ""
- },
- "customPopupOuterCss": {
- "type": "string",
- "default": ""
- },
- "enableWanakana": {
- "type": "boolean",
- "default": true
- },
- "showPitchAccentDownstepNotation": {
- "type": "boolean",
- "default": true
- },
- "showPitchAccentPositionNotation": {
- "type": "boolean",
- "default": true
- },
- "showPitchAccentGraph": {
- "type": "boolean",
- "default": false
- },
- "showIframePopupsInRootFrame": {
- "type": "boolean",
- "default": false
- },
- "useSecurePopupFrameUrl": {
- "type": "boolean",
- "default": true
- },
- "usePopupShadowDom": {
- "type": "boolean",
- "default": true
- },
- "usePopupWindow": {
- "type": "boolean",
- "default": false
- },
- "popupCurrentIndicatorMode": {
- "type": "string",
- "enum": ["none", "asterisk", "triangle", "bar-left", "bar-right", "dot-left", "dot-right"],
- "default": "triangle"
- },
- "popupActionBarVisibility": {
- "type": "string",
- "enum": ["auto", "always"],
- "default": "auto"
- },
- "popupActionBarLocation": {
- "type": "string",
- "enum": ["left", "right", "top", "bottom"],
- "default": "top"
- }
- }
- },
- "popupWindow": {
- "type": "object",
- "required": [
- "width",
- "height",
- "left",
- "top",
- "useLeft",
- "useTop",
- "windowType",
- "windowState"
- ],
- "properties": {
- "width": {
- "type": "integer",
- "minimum": 0,
- "default": 400
- },
- "height": {
- "type": "integer",
- "minimum": 0,
- "default": 250
- },
- "left": {
- "type": "integer",
- "default": 0
- },
- "top": {
- "type": "integer",
- "default": 0
- },
- "useLeft": {
- "type": "boolean",
- "default": false
- },
- "useTop": {
- "type": "boolean",
- "default": false
- },
- "windowType": {
- "type": "string",
- "enum": ["normal", "popup"],
- "default": "popup"
- },
- "windowState": {
- "type": "string",
- "enum": ["normal", "maximized", "fullscreen"],
- "default": "normal"
- }
- }
- },
- "audio": {
- "type": "object",
- "required": [
- "enabled",
- "sources",
- "volume",
- "autoPlay",
- "customSourceUrl",
- "customSourceType",
- "textToSpeechVoice"
- ],
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": true
- },
- "sources": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "jpod101",
- "jpod101-alternate",
- "jisho",
- "text-to-speech",
- "text-to-speech-reading",
- "custom"
- ],
- "default": "jpod101"
- },
- "default": [
- "jpod101"
- ]
- },
- "volume": {
- "type": "number",
- "minimum": 0,
- "maximum": 100,
- "default": 100
- },
- "autoPlay": {
- "type": "boolean",
- "default": false
- },
- "customSourceUrl": {
- "type": "string",
- "default": ""
- },
- "customSourceType": {
- "type": "string",
- "enum": ["audio", "json"],
- "default": "audio"
- },
- "textToSpeechVoice": {
- "type": "string",
- "default": ""
- }
- }
- },
- "scanning": {
- "type": "object",
- "required": [
- "inputs",
- "preventMiddleMouse",
- "touchInputEnabled",
- "pointerEventsEnabled",
- "selectText",
- "alphanumeric",
- "autoHideResults",
- "delay",
- "hideDelay",
- "length",
- "deepDomScan",
- "popupNestingMaxDepth",
- "enablePopupSearch",
- "enableOnPopupExpressions",
- "enableOnSearchPage",
- "enableSearchTags",
- "layoutAwareScan"
- ],
- "properties": {
- "inputs": {
- "type": "array",
- "default": [
- {
- "include": "shift",
- "exclude": "mouse0",
- "types": {
- "mouse": true,
- "touch": false,
- "pen": false
- },
- "options": {
- "showAdvanced": false,
- "searchTerms": true,
- "searchKanji": true,
- "scanOnTouchMove": true,
- "scanOnPenHover": true,
- "scanOnPenPress": true,
- "scanOnPenRelease": false,
- "preventTouchScrolling": false
- }
- },
- {
- "include": "",
- "exclude": "",
- "types": {
- "mouse": false,
- "touch": true,
- "pen": true
- },
- "options": {
- "showAdvanced": false,
- "searchTerms": true,
- "searchKanji": true,
- "scanOnTouchMove": true,
- "scanOnPenHover": true,
- "scanOnPenPress": true,
- "scanOnPenRelease": false,
- "preventTouchScrolling": true
- }
- }
- ],
- "items": {
- "required": [
- "include",
- "exclude",
- "types",
- "options"
- ],
- "properties": {
- "include": {
- "type": "string",
- "default": "shift"
- },
- "exclude": {
- "type": "string",
- "default": ""
- },
- "types": {
- "type": "object",
- "required": [
- "mouse",
- "touch",
- "pen"
- ],
- "properties": {
- "mouse": {
- "type": "boolean",
- "default": true
- },
- "touch": {
- "type": "boolean",
- "default": true
- },
- "pen": {
- "type": "boolean",
- "default": true
- }
- }
- },
- "options": {
- "type": "object",
- "required": [
- "showAdvanced",
- "searchTerms",
- "searchKanji",
- "scanOnTouchMove",
- "scanOnPenHover",
- "scanOnPenPress",
- "scanOnPenRelease",
- "preventTouchScrolling"
- ],
- "properties": {
- "showAdvanced": {
- "type": "boolean",
- "default": false
- },
- "searchTerms": {
- "type": "boolean",
- "default": true
- },
- "searchKanji": {
- "type": "boolean",
- "default": true
- },
- "scanOnTouchMove": {
- "type": "boolean",
- "default": true
- },
- "scanOnPenHover": {
- "type": "boolean",
- "default": true
- },
- "scanOnPenPress": {
- "type": "boolean",
- "default": true
- },
- "scanOnPenRelease": {
- "type": "boolean",
- "default": false
- },
- "preventTouchScrolling": {
- "type": "boolean",
- "default": true
- }
- }
- }
- }
- }
- },
- "preventMiddleMouse": {
- "type": "object",
- "required": [
- "onWebPages",
- "onPopupPages",
- "onSearchPages",
- "onSearchQuery"
- ],
- "properties": {
- "onWebPages": {
- "type": "boolean",
- "default": false
- },
- "onPopupPages": {
- "type": "boolean",
- "default": false
- },
- "onSearchPages": {
- "type": "boolean",
- "default": false
- },
- "onSearchQuery": {
- "type": "boolean",
- "default": false
- }
- }
- },
- "touchInputEnabled": {
- "type": "boolean",
- "default": true
- },
- "pointerEventsEnabled": {
- "type": "boolean",
- "default": false
- },
- "selectText": {
- "type": "boolean",
- "default": true
- },
- "alphanumeric": {
- "type": "boolean",
- "default": true
- },
- "autoHideResults": {
- "type": "boolean",
- "default": false
- },
- "delay": {
- "type": "number",
- "minimum": 0,
- "default": 20
- },
- "hideDelay": {
- "type": "number",
- "minimum": 0,
- "default": 0
- },
- "length": {
- "type": "integer",
- "minimum": 1,
- "default": 10
- },
- "deepDomScan": {
- "type": "boolean",
- "default": false
- },
- "popupNestingMaxDepth": {
- "type": "integer",
- "minimum": 0,
- "default": 0
- },
- "enablePopupSearch": {
- "type": "boolean",
- "default": false
- },
- "enableOnPopupExpressions": {
- "type": "boolean",
- "default": false
- },
- "enableOnSearchPage": {
- "type": "boolean",
- "default": true
- },
- "enableSearchTags": {
- "type": "boolean",
- "default": false
- },
- "layoutAwareScan": {
- "type": "boolean",
- "default": false
- }
- }
- },
- "translation": {
- "type": "object",
- "required": [
- "convertHalfWidthCharacters",
- "convertNumericCharacters",
- "convertAlphabeticCharacters",
- "convertHiraganaToKatakana",
- "convertKatakanaToHiragana",
- "collapseEmphaticSequences",
- "textReplacements"
- ],
- "properties": {
- "convertHalfWidthCharacters": {
- "type": "string",
- "enum": ["false", "true", "variant"],
- "default": "false"
- },
- "convertNumericCharacters": {
- "type": "string",
- "enum": ["false", "true", "variant"],
- "default": "false"
- },
- "convertAlphabeticCharacters": {
- "type": "string",
- "enum": ["false", "true", "variant"],
- "default": "false"
- },
- "convertHiraganaToKatakana": {
- "type": "string",
- "enum": ["false", "true", "variant"],
- "default": "false"
- },
- "convertKatakanaToHiragana": {
- "type": "string",
- "enum": ["false", "true", "variant"],
- "default": "variant"
- },
- "collapseEmphaticSequences": {
- "type": "string",
- "enum": ["false", "true", "full"],
- "default": "false"
- },
- "textReplacements": {
- "type": "object",
- "required": [
- "searchOriginal",
- "groups"
- ],
- "properties": {
- "searchOriginal": {
- "type": "boolean",
- "default": true
- },
- "groups": {
- "type": "array",
- "items": {
- "type": "array",
- "items": {
- "required": [
- "pattern",
- "ignoreCase",
- "replacement"
- ],
- "properties": {
- "pattern": {
- "type": "string",
- "default": ""
- },
- "ignoreCase": {
- "type": "boolean",
- "default": false
- },
- "replacement": {
- "type": "string",
- "default": ""
- }
- }
- }
- }
- }
- }
- }
- }
- },
- "dictionaries": {
- "type": "object",
- "additionalProperties": {
- "type": "object",
- "required": [
- "priority",
- "enabled",
- "allowSecondarySearches"
- ],
- "properties": {
- "priority": {
- "type": "number",
- "default": 0
- },
- "enabled": {
- "type": "boolean",
- "default": true
- },
- "allowSecondarySearches": {
- "type": "boolean",
- "default": false
- }
- }
- }
- },
- "parsing": {
- "type": "object",
- "required": [
- "enableScanningParser",
- "enableMecabParser",
- "selectedParser",
- "termSpacing",
- "readingMode"
- ],
- "properties": {
- "enableScanningParser": {
- "type": "boolean",
- "default": true
- },
- "enableMecabParser": {
- "type": "boolean",
- "default": false
- },
- "selectedParser": {
- "type": ["string", "null"],
- "default": null
- },
- "termSpacing": {
- "type": "boolean",
- "default": true
- },
- "readingMode": {
- "type": "string",
- "enum": ["hiragana", "katakana", "romaji", "none"],
- "default": "hiragana"
- }
- }
- },
- "anki": {
- "type": "object",
- "required": [
- "enable",
- "server",
- "tags",
- "screenshot",
- "terms",
- "kanji",
- "duplicateScope",
- "checkForDuplicates",
- "fieldTemplates",
- "suspendNewCards"
- ],
- "properties": {
- "enable": {
- "type": "boolean",
- "default": false
- },
- "server": {
- "type": "string",
- "default": "http://127.0.0.1:8765"
- },
- "tags": {
- "type": "array",
- "items": {
- "type": "string"
- },
- "default": [
- "yomichan"
- ]
- },
- "screenshot": {
- "type": "object",
- "required": [
- "format",
- "quality"
- ],
- "properties": {
- "format": {
- "type": "string",
- "enum": ["png", "jpeg"],
- "default": "png"
- },
- "quality": {
- "type": "integer",
- "minimum": 0,
- "maximum": 100,
- "default": 92
- }
- }
- },
- "terms": {
- "type": "object",
- "required": [
- "deck",
- "model",
- "fields"
- ],
- "properties": {
- "deck": {
- "type": "string",
- "default": ""
- },
- "model": {
- "type": "string",
- "default": ""
- },
- "fields": {
- "type": "object",
- "additionalProperties": {
- "type": "string",
- "default": ""
- }
- }
- }
- },
- "kanji": {
- "type": "object",
- "required": [
- "deck",
- "model",
- "fields"
- ],
- "properties": {
- "deck": {
- "type": "string",
- "default": ""
- },
- "model": {
- "type": "string",
- "default": ""
- },
- "fields": {
- "type": "object",
- "additionalProperties": {
- "type": "string",
- "default": ""
- }
- }
- }
- },
- "duplicateScope": {
- "type": "string",
- "default": "collection",
- "enum": ["collection", "deck", "deck-root"]
- },
- "checkForDuplicates": {
- "type": "boolean",
- "default": true
- },
- "fieldTemplates": {
- "type": ["string", "null"],
- "default": null
- },
- "suspendNewCards": {
- "type": "boolean",
- "default": false
- }
- }
- },
- "sentenceParsing": {
- "type": "object",
- "required": [
- "scanExtent",
- "enableTerminationCharacters",
- "terminationCharacters"
- ],
- "properties": {
- "scanExtent": {
- "type": "integer",
- "minimum": 0,
- "default": 200
- },
- "enableTerminationCharacters": {
- "type": "boolean",
- "default": true
- },
- "terminationCharacters": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "enabled",
- "character1",
- "character2",
- "includeCharacterAtStart",
- "includeCharacterAtEnd"
- ],
- "properties": {
- "enabled": {
- "type": "boolean",
- "default": true
- },
- "character1": {
- "type": "string",
- "default": "\"",
- "minLength": 1,
- "maxLength": 1
- },
- "character2": {
- "type": ["string", "null"],
- "default": "\"",
- "minLength": 1,
- "maxLength": 1
- },
- "includeCharacterAtStart": {
- "type": "boolean",
- "default": false
- },
- "includeCharacterAtEnd": {
- "type": "boolean",
- "default": false
- }
- }
- },
- "default": [
- {"enabled": true, "character1": "「", "character2": "」", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
- {"enabled": true, "character1": "『", "character2": "』", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
- {"enabled": true, "character1": "\"", "character2": "\"", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
- {"enabled": true, "character1": "'", "character2": "'", "includeCharacterAtStart": false, "includeCharacterAtEnd": false},
- {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": ".", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "。", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "!", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "?", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true},
- {"enabled": true, "character1": "…", "character2": null, "includeCharacterAtStart": false, "includeCharacterAtEnd": true}
- ]
- }
- }
- },
- "inputs": {
- "type": "object",
- "required": [
- "hotkeys"
- ],
- "properties": {
- "hotkeys": {
- "type": "array",
- "items": {
- "type": "object",
- "required": [
- "action",
- "key",
- "modifiers",
- "scopes",
- "enabled"
- ],
- "properties": {
- "action": {
- "type": "string",
- "default": ""
- },
- "key": {
- "type": ["string", "null"],
- "default": null
- },
- "modifiers": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["alt", "ctrl", "shift", "meta"],
- "default": "alt"
- }
- },
- "scopes": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": ["popup", "search", "web"],
- "default": "popup"
- },
- "default": ["popup", "search"]
- },
- "enabled": {
- "type": "boolean",
- "default": true
- }
- }
- },
- "default": [
- {"action": "close", "key": "Escape", "modifiers": [], "scopes": ["popup"], "enabled": true},
- {"action": "focusSearchBox", "key": "Escape", "modifiers": [], "scopes": ["search"], "enabled": true},
- {"action": "previousEntry3", "key": "PageUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "nextEntry3", "key": "PageDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "lastEntry", "key": "End", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "firstEntry", "key": "Home", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "previousEntry", "key": "ArrowUp", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "nextEntry", "key": "ArrowDown", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "historyBackward", "key": "KeyB", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "historyForward", "key": "KeyF", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "addNoteKanji", "key": "KeyK", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "addNoteTermKanji", "key": "KeyE", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "addNoteTermKana", "key": "KeyR", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "playAudio", "key": "KeyP", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "viewNote", "key": "KeyV", "modifiers": ["alt"], "scopes": ["popup", "search"], "enabled": true},
- {"action": "copyHostSelection", "key": "KeyC", "modifiers": ["ctrl"], "scopes": ["popup"], "enabled": true}
- ]
- }
- }
- },
- "clipboard": {
- "type": "object",
- "required": [
- "enableBackgroundMonitor",
- "enableSearchPageMonitor",
- "autoSearchContent",
- "maximumSearchLength"
- ],
- "properties": {
- "enableBackgroundMonitor": {
- "type": "boolean",
- "default": false
- },
- "enableSearchPageMonitor": {
- "type": "boolean",
- "default": false
- },
- "autoSearchContent": {
- "type": "boolean",
- "default": true
- },
- "maximumSearchLength": {
- "type": "integer",
- "default": 1000,
- "minimum": 0
- }
- }
- }
- }
- }
- }
- }
- },
- "profileCurrent": {
- "type": "integer",
- "minimum": 0,
- "default": 0
- },
- "global": {
- "type": "object",
- "required": [
- "database",
- "useSettingsV2"
- ],
- "properties": {
- "database": {
- "type": "object",
- "required": [
- "prefixWildcardsSupported"
- ],
- "properties": {
- "prefixWildcardsSupported": {
- "type": "boolean",
- "default": false
- }
- }
- },
- "useSettingsV2": {
- "type": "boolean",
- "default": true
- }
- }
- }
- }
-}
diff --git a/ext/bg/js/audio-downloader.js b/ext/bg/js/audio-downloader.js
index 25c25250..4e77419b 100644
--- a/ext/bg/js/audio-downloader.js
+++ b/ext/bg/js/audio-downloader.js
@@ -300,7 +300,7 @@ class AudioDownloader {
async _getCustomAudioListSchema() {
let schema = this._customAudioListSchema;
if (schema === null) {
- const url = chrome.runtime.getURL('/bg/data/custom-audio-list-schema.json');
+ const url = chrome.runtime.getURL('/data/schemas/custom-audio-list-schema.json');
const response = await fetch(url, {
method: 'GET',
mode: 'no-cors',
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 3dd1955f..3970fe2d 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -211,7 +211,7 @@ class Backend {
this._translator.prepare(deinflectionReasions);
await this._optionsUtil.prepare();
- this._defaultAnkiFieldTemplates = (await this._fetchAsset('/bg/data/default-anki-field-templates.handlebars')).trim();
+ this._defaultAnkiFieldTemplates = (await this._fetchAsset('/data/templates/default-anki-field-templates.handlebars')).trim();
this._options = await this._optionsUtil.load();
this._applyOptions('background');
diff --git a/ext/bg/js/dictionary-importer.js b/ext/bg/js/dictionary-importer.js
index 33870259..4cb608db 100644
--- a/ext/bg/js/dictionary-importer.js
+++ b/ext/bg/js/dictionary-importer.js
@@ -50,7 +50,7 @@ class DictionaryImporter {
const index = JSON.parse(await indexFile.async('string'));
- const indexSchema = await this._getSchema('/bg/data/dictionary-index-schema.json');
+ const indexSchema = await this._getSchema('/data/schemas/dictionary-index-schema.json');
this._validateJsonSchema(index, indexSchema, indexFileName);
const dictionaryTitle = index.title;
@@ -280,17 +280,17 @@ class DictionaryImporter {
_getDataBankSchemaPaths(version) {
const termBank = (
version === 1 ?
- '/bg/data/dictionary-term-bank-v1-schema.json' :
- '/bg/data/dictionary-term-bank-v3-schema.json'
+ '/data/schemas/dictionary-term-bank-v1-schema.json' :
+ '/data/schemas/dictionary-term-bank-v3-schema.json'
);
- const termMetaBank = '/bg/data/dictionary-term-meta-bank-v3-schema.json';
+ const termMetaBank = '/data/schemas/dictionary-term-meta-bank-v3-schema.json';
const kanjiBank = (
version === 1 ?
- '/bg/data/dictionary-kanji-bank-v1-schema.json' :
- '/bg/data/dictionary-kanji-bank-v3-schema.json'
+ '/data/schemas/dictionary-kanji-bank-v1-schema.json' :
+ '/data/schemas/dictionary-kanji-bank-v3-schema.json'
);
- const kanjiMetaBank = '/bg/data/dictionary-kanji-meta-bank-v3-schema.json';
- const tagBank = '/bg/data/dictionary-tag-bank-v3-schema.json';
+ const kanjiMetaBank = '/data/schemas/dictionary-kanji-meta-bank-v3-schema.json';
+ const tagBank = '/data/schemas/dictionary-tag-bank-v3-schema.json';
return [termBank, termMetaBank, kanjiBank, kanjiMetaBank, tagBank];
}
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index 9e0e9cf0..1105dfed 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -28,7 +28,7 @@ class OptionsUtil {
}
async prepare() {
- this._optionsSchema = await this._fetchAsset('/bg/data/options-schema.json', true);
+ this._optionsSchema = await this._fetchAsset('/data/schemas/options-schema.json', true);
}
async update(options) {
@@ -487,7 +487,7 @@ class OptionsUtil {
async _updateVersion3(options) {
// Version 3 changes:
// Pitch accent Anki field templates added.
- await this._applyAnkiFieldTemplatesPatch(options, '/bg/data/anki-field-templates-upgrade-v2.handlebars');
+ await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v2.handlebars');
return options;
}
@@ -572,7 +572,7 @@ class OptionsUtil {
});
profileOptions.scanning.inputs = scanningInputs;
}
- await this._applyAnkiFieldTemplatesPatch(options, '/bg/data/anki-field-templates-upgrade-v4.handlebars');
+ await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v4.handlebars');
return options;
}
@@ -592,7 +592,7 @@ class OptionsUtil {
// Added global option useSettingsV2.
// Added anki.checkForDuplicates.
// Added general.glossaryLayoutMode; removed general.compactGlossaries.
- await this._applyAnkiFieldTemplatesPatch(options, '/bg/data/anki-field-templates-upgrade-v6.handlebars');
+ await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v6.handlebars');
options.global.showPopupPreview = false;
options.global.useSettingsV2 = false;
for (const profile of options.profiles) {
@@ -665,7 +665,7 @@ class OptionsUtil {
// Moved general.enableClipboardMonitor => clipboard.enableSearchPageMonitor. Forced value to false due to a bug which caused its value to not be read.
// Moved general.maximumClipboardSearchLength => clipboard.maximumSearchLength.
// Added clipboard.autoSearchContent.
- await this._applyAnkiFieldTemplatesPatch(options, '/bg/data/anki-field-templates-upgrade-v8.handlebars');
+ await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v8.handlebars');
options.global.useSettingsV2 = true;
for (const profile of options.profiles) {
profile.options.translation.textReplacements = {
diff --git a/ext/bg/settings2.html b/ext/bg/settings2.html
index 88a55206..37bb1996 100644
--- a/ext/bg/settings2.html
+++ b/ext/bg/settings2.html
@@ -2283,7 +2283,7 @@
</li>
<li>
<strong>JSON</strong> - The link is interpreted as a link to a JSON file, which is downloaded and parsed for audio URLs.
- The format of the JSON file is specified in <a href="/bg/data/custom-audio-list-schema.json" target="_blank" rel="noopener noreferrer">this schema file</a>.
+ The format of the JSON file is specified in <a href="/data/schemas/custom-audio-list-schema.json" target="_blank" rel="noopener noreferrer">this schema file</a>.
</li>
</ul>
<p>