diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-09-01 10:28:50 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2019-09-02 19:33:52 -0400 |
commit | fad53324885c971a1ab1aeee3da5dd60dc5058df (patch) | |
tree | fb156e733c2c2113e294cad2afac9b07f73f3683 /ext/fg/js/frontend.js | |
parent | f4b81eff3054e4277e97d06290535bfecc9b9cc1 (diff) |
Move static DOM scanning functions into TextSourceRange
Diffstat (limited to 'ext/fg/js/frontend.js')
-rw-r--r-- | ext/fg/js/frontend.js | 48 |
1 files changed, 2 insertions, 46 deletions
diff --git a/ext/fg/js/frontend.js b/ext/fg/js/frontend.js index eea77d2a..b70bf036 100644 --- a/ext/fg/js/frontend.js +++ b/ext/fg/js/frontend.js @@ -515,58 +515,14 @@ class Frontend { length = textSource.text().length; while (textSource.range && length > 0) { - const nodes = Frontend.getNodesInRange(textSource.range); - if (Frontend.isValidScanningNodeList(nodes, this.ignoreNodes)) { + const nodes = TextSourceRange.getNodesInRange(textSource.range); + if (!TextSourceRange.anyNodeMatchesSelector(nodes, this.ignoreNodes)) { break; } --length; textSource.setEndOffset(length); } } - - static getNodesInRange(range) { - const end = range.endContainer; - const nodes = []; - for (let node = range.startContainer; node !== null; node = Frontend.getNextNode(node)) { - nodes.push(node); - if (node === end) { break; } - } - return nodes; - } - - static getNextNode(node) { - let next = node.firstChild; - if (next === null) { - while (true) { - next = node.nextSibling; - if (next !== null) { break; } - - next = node.parentNode; - if (node === null) { break; } - - node = next; - } - } - return next; - } - - static isValidScanningNodeList(nodeList, selector) { - for (const node of nodeList) { - if (!Frontend.isValidScanningNode(node, selector)) { - return false; - } - } - return true; - } - - static isValidScanningNode(node, selector) { - for (; node !== null; node = node.parentNode) { - if (node.nodeType === Node.ELEMENT_NODE) { - return !node.matches(selector); - } - } - return true; - } } window.yomichan_frontend = Frontend.create(); |