Files
rspade_system/node_modules/jsdom/lib/jsdom/living/helpers/node.js
root f6fac6c4bc Fix bin/publish: copy docs.dist from project root
Fix bin/publish: use correct .env path for rspade_system
Fix bin/publish script: prevent grep exit code 1 from terminating script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-21 02:08:33 +00:00

69 lines
1.3 KiB
JavaScript
Executable File

"use strict";
const NODE_TYPE = require("../node-type");
const { domSymbolTree } = require("./internal-constants");
// https://dom.spec.whatwg.org/#concept-node-length
function nodeLength(node) {
switch (node.nodeType) {
case NODE_TYPE.DOCUMENT_TYPE_NODE:
return 0;
case NODE_TYPE.TEXT_NODE:
case NODE_TYPE.PROCESSING_INSTRUCTION_NODE:
case NODE_TYPE.COMMENT_NODE:
return node.data.length;
default:
return domSymbolTree.childrenCount(node);
}
}
// https://dom.spec.whatwg.org/#concept-tree-root
function nodeRoot(node) {
while (domSymbolTree.parent(node)) {
node = domSymbolTree.parent(node);
}
return node;
}
// https://dom.spec.whatwg.org/#concept-tree-inclusive-ancestor
function isInclusiveAncestor(ancestorNode, node) {
while (node) {
if (ancestorNode === node) {
return true;
}
node = domSymbolTree.parent(node);
}
return false;
}
// https://dom.spec.whatwg.org/#concept-tree-following
function isFollowing(nodeA, nodeB) {
if (nodeA === nodeB) {
return false;
}
let current = nodeB;
while (current) {
if (current === nodeA) {
return true;
}
current = domSymbolTree.following(current);
}
return false;
}
module.exports = {
nodeLength,
nodeRoot,
isInclusiveAncestor,
isFollowing
};