diff options
| author | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
|---|---|---|
| committer | Joel Kronqvist <joel.h.kronqvist@gmail.com> | 2022-03-05 19:02:27 +0200 | 
| commit | 5d309ff52cd399a6b71968a6b9a70c8ac0b98981 (patch) | |
| tree | 360f7eb50f956e2367ef38fa1fc6ac7ac5258042 /node_modules/parse5/lib/tree-adapters | |
| parent | b500a50f1b97d93c98b36ed9a980f8188d648147 (diff) | |
| download | LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.tar.gz LYLLRuoka-5d309ff52cd399a6b71968a6b9a70c8ac0b98981.zip  | |
Added node_modules for the updating to work properly.
Diffstat (limited to 'node_modules/parse5/lib/tree-adapters')
| -rw-r--r-- | node_modules/parse5/lib/tree-adapters/default.js | 221 | 
1 files changed, 221 insertions, 0 deletions
diff --git a/node_modules/parse5/lib/tree-adapters/default.js b/node_modules/parse5/lib/tree-adapters/default.js new file mode 100644 index 0000000..14d007a --- /dev/null +++ b/node_modules/parse5/lib/tree-adapters/default.js @@ -0,0 +1,221 @@ +'use strict'; + +const { DOCUMENT_MODE } = require('../common/html'); + +//Node construction +exports.createDocument = function() { +    return { +        nodeName: '#document', +        mode: DOCUMENT_MODE.NO_QUIRKS, +        childNodes: [] +    }; +}; + +exports.createDocumentFragment = function() { +    return { +        nodeName: '#document-fragment', +        childNodes: [] +    }; +}; + +exports.createElement = function(tagName, namespaceURI, attrs) { +    return { +        nodeName: tagName, +        tagName: tagName, +        attrs: attrs, +        namespaceURI: namespaceURI, +        childNodes: [], +        parentNode: null +    }; +}; + +exports.createCommentNode = function(data) { +    return { +        nodeName: '#comment', +        data: data, +        parentNode: null +    }; +}; + +const createTextNode = function(value) { +    return { +        nodeName: '#text', +        value: value, +        parentNode: null +    }; +}; + +//Tree mutation +const appendChild = (exports.appendChild = function(parentNode, newNode) { +    parentNode.childNodes.push(newNode); +    newNode.parentNode = parentNode; +}); + +const insertBefore = (exports.insertBefore = function(parentNode, newNode, referenceNode) { +    const insertionIdx = parentNode.childNodes.indexOf(referenceNode); + +    parentNode.childNodes.splice(insertionIdx, 0, newNode); +    newNode.parentNode = parentNode; +}); + +exports.setTemplateContent = function(templateElement, contentElement) { +    templateElement.content = contentElement; +}; + +exports.getTemplateContent = function(templateElement) { +    return templateElement.content; +}; + +exports.setDocumentType = function(document, name, publicId, systemId) { +    let doctypeNode = null; + +    for (let i = 0; i < document.childNodes.length; i++) { +        if (document.childNodes[i].nodeName === '#documentType') { +            doctypeNode = document.childNodes[i]; +            break; +        } +    } + +    if (doctypeNode) { +        doctypeNode.name = name; +        doctypeNode.publicId = publicId; +        doctypeNode.systemId = systemId; +    } else { +        appendChild(document, { +            nodeName: '#documentType', +            name: name, +            publicId: publicId, +            systemId: systemId +        }); +    } +}; + +exports.setDocumentMode = function(document, mode) { +    document.mode = mode; +}; + +exports.getDocumentMode = function(document) { +    return document.mode; +}; + +exports.detachNode = function(node) { +    if (node.parentNode) { +        const idx = node.parentNode.childNodes.indexOf(node); + +        node.parentNode.childNodes.splice(idx, 1); +        node.parentNode = null; +    } +}; + +exports.insertText = function(parentNode, text) { +    if (parentNode.childNodes.length) { +        const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1]; + +        if (prevNode.nodeName === '#text') { +            prevNode.value += text; +            return; +        } +    } + +    appendChild(parentNode, createTextNode(text)); +}; + +exports.insertTextBefore = function(parentNode, text, referenceNode) { +    const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1]; + +    if (prevNode && prevNode.nodeName === '#text') { +        prevNode.value += text; +    } else { +        insertBefore(parentNode, createTextNode(text), referenceNode); +    } +}; + +exports.adoptAttributes = function(recipient, attrs) { +    const recipientAttrsMap = []; + +    for (let i = 0; i < recipient.attrs.length; i++) { +        recipientAttrsMap.push(recipient.attrs[i].name); +    } + +    for (let j = 0; j < attrs.length; j++) { +        if (recipientAttrsMap.indexOf(attrs[j].name) === -1) { +            recipient.attrs.push(attrs[j]); +        } +    } +}; + +//Tree traversing +exports.getFirstChild = function(node) { +    return node.childNodes[0]; +}; + +exports.getChildNodes = function(node) { +    return node.childNodes; +}; + +exports.getParentNode = function(node) { +    return node.parentNode; +}; + +exports.getAttrList = function(element) { +    return element.attrs; +}; + +//Node data +exports.getTagName = function(element) { +    return element.tagName; +}; + +exports.getNamespaceURI = function(element) { +    return element.namespaceURI; +}; + +exports.getTextNodeContent = function(textNode) { +    return textNode.value; +}; + +exports.getCommentNodeContent = function(commentNode) { +    return commentNode.data; +}; + +exports.getDocumentTypeNodeName = function(doctypeNode) { +    return doctypeNode.name; +}; + +exports.getDocumentTypeNodePublicId = function(doctypeNode) { +    return doctypeNode.publicId; +}; + +exports.getDocumentTypeNodeSystemId = function(doctypeNode) { +    return doctypeNode.systemId; +}; + +//Node types +exports.isTextNode = function(node) { +    return node.nodeName === '#text'; +}; + +exports.isCommentNode = function(node) { +    return node.nodeName === '#comment'; +}; + +exports.isDocumentTypeNode = function(node) { +    return node.nodeName === '#documentType'; +}; + +exports.isElementNode = function(node) { +    return !!node.tagName; +}; + +// Source code location +exports.setNodeSourceCodeLocation = function(node, location) { +    node.sourceCodeLocation = location; +}; + +exports.getNodeSourceCodeLocation = function(node) { +    return node.sourceCodeLocation; +}; + +exports.updateNodeSourceCodeLocation = function(node, endLocation) { +    node.sourceCodeLocation = Object.assign(node.sourceCodeLocation, endLocation); +};  | 
