aboutsummaryrefslogtreecommitdiff
path: root/anki-card-template/card.js
diff options
context:
space:
mode:
authorlonkaars <loek@pipeframe.xyz>2023-02-01 16:44:14 +0100
committerlonkaars <loek@pipeframe.xyz>2023-02-01 16:44:14 +0100
commitc1e3683f87e865a43db9e0522f54bb0d2b763198 (patch)
treebdb130be8ae380eed1d78d601ddf0e24785ec55a /anki-card-template/card.js
parent6e6c93e4eed7ba9debcb84ad2f309f73bcd6cc1f (diff)
multiple readings + css cleanup done3.3.0
Diffstat (limited to 'anki-card-template/card.js')
-rw-r--r--anki-card-template/card.js33
1 files changed, 19 insertions, 14 deletions
diff --git a/anki-card-template/card.js b/anki-card-template/card.js
index 42a982e..3b94d2d 100644
--- a/anki-card-template/card.js
+++ b/anki-card-template/card.js
@@ -291,28 +291,33 @@ function setSpoiler(nodes) {
return HTMLtoParseArr(`<span class="outer"><span class="inner">` + nodes.map(n => n.data).join("") + "</span></span>");
}
-HTMLElement.prototype.parse = function() {
- if (this.classList.contains("parsed")) return; // ignore already parsed elements
- var input = this.innerHTML; // get raw data from anki field
+function parse(input, classes) {
var nodes = HTMLtoParseArr(input); // seperate user text from html formatting (keep html intact)
// parsers
- if (this.classList.contains("parse-format")) nodes = parseFormat(nodes);
- if (this.classList.contains("parse-furigana")) nodes = parseFurigana(nodes);
- if (this.classList.contains("parse-reading")) nodes = parseReading(nodes);
- if (this.classList.contains("parse-indicators")) nodes = parseIndicators(nodes);
- if (this.classList.contains("parse-tags")) nodes = parseTags(nodes);
- if (this.classList.contains("parse-definitions")) nodes = parseDefinitions(nodes);
- if (this.classList.contains("parse-script")) nodes = parseScript(nodes);
- if (this.classList.contains("spoiler")) nodes = setSpoiler(nodes);
-
- // join parsed text with unmodified html
+ if (classes.includes("parse-format")) nodes = parseFormat(nodes);
+ if (classes.includes("parse-furigana")) nodes = parseFurigana(nodes);
+ if (classes.includes("parse-reading")) nodes = parseReading(nodes);
+ if (classes.includes("parse-indicators")) nodes = parseIndicators(nodes);
+ if (classes.includes("parse-tags")) nodes = parseTags(nodes);
+ if (classes.includes("parse-definitions")) nodes = parseDefinitions(nodes);
+ if (classes.includes("parse-script")) nodes = parseScript(nodes);
+ if (classes.includes("spoiler")) nodes = setSpoiler(nodes);
+
+ return nodes;
+};
+
+HTMLElement.prototype.parse = function() {
+ if (this.classList.contains("parsed")) return; // ignore already parsed elements
+
+ var nodes = parse(this.innerHTML, Array.from(this.classList));
+
var out = nodes.map(n => n.data).join("");
this.innerHTML = out;
this.classList.add("parsed");
if (nodes.reduce((current, n) => current + (n.type == "text" ? n.data.length : 0), 0) == 0)
this.classList.add("empty"); // if innerHTML only contains empty html (no 'user' text)
-};
+}
function layout() {
// set vertical layout on vertical displays (primarily mobile screens)