summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authortoasted-nutbread <toasted-nutbread@users.noreply.github.com>2021-01-09 21:25:04 -0500
committerGitHub <noreply@github.com>2021-01-09 21:25:04 -0500
commitda1e1e5c5b4dc20cc6aa46b51c55a496d094ed5c (patch)
tree63d60b93b85b063ff8c42d113083d3b732bb19f5 /ext
parentd698911bc9bf7cb431bce939412131a90f24ee45 (diff)
Sentence parsing options (#1214)
* Rename options.anki.sentenceExt to options.sentenceParsing.scanExtent * Create sentence parsing icon * Create new sentence parsing section
Diffstat (limited to 'ext')
-rw-r--r--ext/bg/data/options-schema.json22
-rw-r--r--ext/bg/js/options.js5
-rw-r--r--ext/bg/settings.html2
-rw-r--r--ext/bg/settings2.html66
-rw-r--r--ext/fg/js/frontend.js2
-rw-r--r--ext/mixed/css/material.css1
-rw-r--r--ext/mixed/img/sentence-parsing.svg1
-rw-r--r--ext/mixed/js/display.js4
8 files changed, 69 insertions, 34 deletions
diff --git a/ext/bg/data/options-schema.json b/ext/bg/data/options-schema.json
index 12c4097d..9053ebb1 100644
--- a/ext/bg/data/options-schema.json
+++ b/ext/bg/data/options-schema.json
@@ -68,7 +68,8 @@
"translation",
"dictionaries",
"parsing",
- "anki"
+ "anki",
+ "sentenceParsing"
],
"properties": {
"general": {
@@ -732,7 +733,6 @@
"enable",
"server",
"tags",
- "sentenceExt",
"screenshot",
"terms",
"kanji",
@@ -758,11 +758,6 @@
"yomichan"
]
},
- "sentenceExt": {
- "type": "integer",
- "minimum": 0,
- "default": 200
- },
"screenshot": {
"type": "object",
"required": [
@@ -847,6 +842,19 @@
"default": null
}
}
+ },
+ "sentenceParsing": {
+ "type": "object",
+ "required": [
+ "scanExtent"
+ ],
+ "properties": {
+ "scanExtent": {
+ "type": "integer",
+ "minimum": 0,
+ "default": 200
+ }
+ }
}
}
}
diff --git a/ext/bg/js/options.js b/ext/bg/js/options.js
index adf3cfd4..441d56ec 100644
--- a/ext/bg/js/options.js
+++ b/ext/bg/js/options.js
@@ -683,11 +683,16 @@ class OptionsUtil {
_updateVersion8(options) {
// Version 8 changes:
// Added translation.textReplacements.
+ // Moved anki.sentenceExt to sentenceParsing.scanExtent.
for (const profile of options.profiles) {
profile.options.translation.textReplacements = {
searchOriginal: true,
groups: []
};
+ profile.options.sentenceParsing = {
+ scanExtent: profile.options.anki.sentenceExt
+ };
+ delete profile.options.anki.sentenceExt;
}
return options;
}
diff --git a/ext/bg/settings.html b/ext/bg/settings.html
index ec048a3b..d206d697 100644
--- a/ext/bg/settings.html
+++ b/ext/bg/settings.html
@@ -960,7 +960,7 @@
<div class="form-group options-advanced">
<label for="sentence-detection-extent">Sentence detection extent <span class="label-light">(in characters)</span></label>
- <input type="number" min="1" step="1" id="sentence-detection-extent" class="form-control" data-setting="anki.sentenceExt">
+ <input type="number" min="0" step="1" id="sentence-detection-extent" class="form-control" data-setting="sentenceParsing.scanExtent">
</div>
<div class="form-group options-advanced">
diff --git a/ext/bg/settings2.html b/ext/bg/settings2.html
index b74c4ec1..e5f105f0 100644
--- a/ext/bg/settings2.html
+++ b/ext/bg/settings2.html
@@ -31,6 +31,7 @@
<a href="#!window" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="window"></span></span><span class="outline-item-label">Window</span></a>
<a href="#!audio" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="speaker"></span></span><span class="outline-item-label">Audio</span></a>
<a href="#!text-parsing" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="text-parsing"></span></span><span class="outline-item-label">Text Parsing</span></a>
+ <a href="#!sentence-parsing" class="outline-item advanced-only"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="sentence-parsing"></span></span><span class="outline-item-label">Sentence Parsing</span></a>
<a href="#!translation" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="translation"></span></span><span class="outline-item-label">Translation</span></a>
<a href="#!anki" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="note-card"></span></span><span class="outline-item-label">Anki</span></a>
<a href="#!shortcuts" class="outline-item"><span class="outline-item-left"><span class="outline-item-icon icon" data-icon="keyboard"></span></span><span class="outline-item-label">Shortcuts</span></a>
@@ -1107,6 +1108,48 @@
</div></div>
</div>
+ <!-- Text Parsing -->
+ <div class="advanced-only">
+ <div class="heading-container">
+ <div class="heading-container-icon"><span class="icon" data-icon="sentence-parsing"></span></div>
+ <div class="heading-container-left"><h2 id="sentence-parsing"><a href="#!sentence-parsing">Sentence Parsing</a></h2></div>
+ <div class="heading-container-right"><a class="more-toggle more-only heading-link-light" data-parent-distance="3">Info&hellip;</a></div>
+ </div>
+ <div class="heading-description more" hidden>
+ <p>
+ Yomichan can will scan and parse sentences which can be used as contextual information for Anki cards.
+ </p>
+ <p>
+ <a class="more-toggle" data-parent-distance="3">Less&hellip;</a>
+ </p>
+ </div>
+ </div>
+ <div class="settings-group advanced-only">
+ <div class="settings-item">
+ <div class="settings-item-inner settings-item-inner-wrappable">
+ <div class="settings-item-left">
+ <div class="settings-item-label">
+ Sentence scanning extent
+ <a class="more-toggle more-only" data-parent-distance="4">(?)</a>
+ </div>
+ </div>
+ <div class="settings-item-right">
+ <input type="number" data-setting="sentenceParsing.scanExtent" min="0" step="1">
+ </div>
+ </div>
+ <div class="settings-item-children more" hidden>
+ <p>
+ This option controls the maximum scanning distance used to determine the bounds of a sentence,
+ in number of characters.
+ Sentence scanning is bidirectional and begins from both the start and end of the source term.
+ </p>
+ <p>
+ <a class="more-toggle" data-parent-distance="3">Less&hellip;</a>
+ </p>
+ </div>
+ </div>
+ </div>
+
<!-- Translation -->
<div>
<div class="heading-container">
@@ -1389,29 +1432,6 @@
</div>
</div>
</div></div>
- <div class="settings-item advanced-only">
- <div class="settings-item-inner settings-item-inner-wrappable">
- <div class="settings-item-left">
- <div class="settings-item-label">
- Sentence scanning extent
- <a class="more-toggle more-only" data-parent-distance="4">(?)</a>
- </div>
- </div>
- <div class="settings-item-right">
- <input type="number" data-setting="anki.sentenceExt" min="1" step="1">
- </div>
- </div>
- <div class="settings-item-children more" hidden>
- <p>
- This option controls the maximum scanning distance used to determine the bounds of a sentence,
- in number of characters.
- Sentence scanning is bidirectional and begins from both the start and end of the source term.
- </p>
- <p>
- <a class="more-toggle" data-parent-distance="3">Less&hellip;</a>
- </p>
- </div>
- </div>
<div class="settings-item settings-item-button" data-modal-action="show,anki-cards"><div class="settings-item-inner">
<div class="settings-item-left">
<div class="settings-item-label">Configure Anki card format&hellip;</div>
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js
index 3a5a2a44..c14c2feb 100644
--- a/ext/fg/js/frontend.js
+++ b/ext/fg/js/frontend.js
@@ -326,7 +326,7 @@ class Frontend {
touchInputEnabled: scanningOptions.touchInputEnabled,
pointerEventsEnabled: scanningOptions.pointerEventsEnabled,
scanLength: scanningOptions.length,
- sentenceExtent: options.anki.sentenceExt,
+ sentenceExtent: options.sentenceParsing.scanExtent,
layoutAwareScan: scanningOptions.layoutAwareScan,
preventMiddleMouse
});
diff --git a/ext/mixed/css/material.css b/ext/mixed/css/material.css
index a21dc2bb..b4a80807 100644
--- a/ext/mixed/css/material.css
+++ b/ext/mixed/css/material.css
@@ -181,6 +181,7 @@
.icon[data-icon=expand] { --icon-image: url(/mixed/img/expand.svg); }
.icon[data-icon=window] { --icon-image: url(/mixed/img/window.svg); }
.icon[data-icon=cross] { --icon-image: url(/mixed/img/cross.svg); }
+.icon[data-icon=sentence-parsing] { --icon-image: url(/mixed/img/sentence-parsing.svg); }
.icon[data-icon=material-down-arrow] {
--icon-image: url(/mixed/img/material-down-arrow.svg);
--icon-size: var(--material-arrow-dimension2) var(--material-arrow-dimension1);
diff --git a/ext/mixed/img/sentence-parsing.svg b/ext/mixed/img/sentence-parsing.svg
new file mode 100644
index 00000000..7c883175
--- /dev/null
+++ b/ext/mixed/img/sentence-parsing.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M2.5996 1.8008C1.5996 2.8008 1 3.75 1 5c0 .55228.44772 1 1 1s1-.44772 1-1c0-.54895-.44255-.89427-.99023-.89844.04617-.75567.59691-1.3901.89062-1.9023l-.30078-.39844zm2.5 0C4.0996 2.8008 3.5 3.75 3.5 5c0 .55228.44772 1 1 1s1-.44772 1-1c0-.54895-.44255-.89427-.99023-.89844.04617-.75567.59691-1.3901.89062-1.9023l-.30078-.39844zM6.5 5v1H15V5H6.5zM1 7v1h7V7H1zm8 0v1h3V7H9zm4 0v1h2V7h-2zM1 9v1h2V9H1zm3 0v1h3V9H4zm4 0v1h3V9H8zm5.5 0c-.8225 0-1.5.6775-1.5 1.5s.6775 1.5 1.5 1.5 1.5-.6775 1.5-1.5S14.3225 9 13.5 9zm0 1c.28206 0 .5.21794.5.5s-.21794.5-.5.5-.5-.21794-.5-.5.21794-.5.5-.5zM1 11v1h4v-1H1zm5 0v1h5v-1H6z" fill="#333"/></svg> \ No newline at end of file
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index e4433925..60842a3d 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -327,7 +327,7 @@ class Display extends EventDispatcher {
touchInputEnabled: scanning.touchInputEnabled,
pointerEventsEnabled: scanning.pointerEventsEnabled,
scanLength: scanning.length,
- sentenceExtent: options.anki.sentenceExt,
+ sentenceExtent: options.sentenceParsing.scanExtent,
layoutAwareScan: scanning.layoutAwareScan,
preventMiddleMouse: scanning.preventMiddleMouse.onSearchQuery
}
@@ -1832,7 +1832,7 @@ class Display extends EventDispatcher {
touchInputEnabled: false,
pointerEventsEnabled: false,
scanLength: scanningOptions.length,
- sentenceExtent: options.anki.sentenceExt,
+ sentenceExtent: options.sentenceParsing.scanExtent,
layoutAwareScan: scanningOptions.layoutAwareScan,
preventMiddleMouse: false
});