diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/parse5/lib/tree_adapters/default.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/parse5/lib/tree_adapters/default.js | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/parse5/lib/tree_adapters/default.js b/bin/wiki/ImportarDesdeURL/node_modules/parse5/lib/tree_adapters/default.js new file mode 100644 index 00000000..de4d505f --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/parse5/lib/tree_adapters/default.js @@ -0,0 +1,209 @@ +'use strict'; + +var DOCUMENT_MODE = require('../common/html').DOCUMENT_MODE; + +//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 + }; +}; + +var createTextNode = function (value) { + return { + nodeName: '#text', + value: value, + parentNode: null + }; +}; + + +//Tree mutation +var appendChild = exports.appendChild = function (parentNode, newNode) { + parentNode.childNodes.push(newNode); + newNode.parentNode = parentNode; +}; + +var insertBefore = exports.insertBefore = function (parentNode, newNode, referenceNode) { + var 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) { + var doctypeNode = null; + + for (var 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) { + var idx = node.parentNode.childNodes.indexOf(node); + + node.parentNode.childNodes.splice(idx, 1); + node.parentNode = null; + } +}; + +exports.insertText = function (parentNode, text) { + if (parentNode.childNodes.length) { + var 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) { + var 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) { + var recipientAttrsMap = []; + + for (var i = 0; i < recipient.attrs.length; i++) + recipientAttrsMap.push(recipient.attrs[i].name); + + for (var 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; +}; |