summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js100
1 files changed, 100 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js
new file mode 100644
index 00000000..bf2ba6f0
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/parse.js
@@ -0,0 +1,100 @@
+/*
+ Module Dependencies
+*/
+var htmlparser = require('htmlparser2'),
+ parse5 = require('parse5');
+
+/*
+ Parser
+*/
+exports = module.exports = function(content, options, isDocument) {
+ var dom = exports.evaluate(content, options, isDocument),
+ // Generic root element
+ root = exports.evaluate('<root></root>', options, false)[0];
+
+ root.type = 'root';
+ root.parent = null;
+
+ // Update the dom using the root
+ exports.update(dom, root);
+
+ return root;
+};
+
+function parseWithParse5 (content, isDocument) {
+ var parse = isDocument ? parse5.parse : parse5.parseFragment,
+ root = parse(content, { treeAdapter: parse5.treeAdapters.htmlparser2 });
+
+ return root.children;
+}
+
+exports.evaluate = function(content, options, isDocument) {
+ // options = options || $.fn.options;
+
+ var dom;
+
+ if (Buffer.isBuffer(content))
+ content = content.toString();
+
+ if (typeof content === 'string') {
+ var useHtmlParser2 = options.xmlMode || options._useHtmlParser2;
+
+ dom = useHtmlParser2 ? htmlparser.parseDOM(content, options) : parseWithParse5(content, isDocument);
+ } else {
+ dom = content;
+ }
+
+ return dom;
+};
+
+/*
+ Update the dom structure, for one changed layer
+*/
+exports.update = function(arr, parent) {
+ // normalize
+ if (!Array.isArray(arr)) arr = [arr];
+
+ // Update parent
+ if (parent) {
+ parent.children = arr;
+ } else {
+ parent = null;
+ }
+
+ // Update neighbors
+ for (var i = 0; i < arr.length; i++) {
+ var node = arr[i];
+
+ // Cleanly remove existing nodes from their previous structures.
+ var oldParent = node.parent || node.root,
+ oldSiblings = oldParent && oldParent.children;
+ if (oldSiblings && oldSiblings !== arr) {
+ oldSiblings.splice(oldSiblings.indexOf(node), 1);
+ if (node.prev) {
+ node.prev.next = node.next;
+ }
+ if (node.next) {
+ node.next.prev = node.prev;
+ }
+ }
+
+ if (parent) {
+ node.prev = arr[i - 1] || null;
+ node.next = arr[i + 1] || null;
+ } else {
+ node.prev = node.next = null;
+ }
+
+ if (parent && parent.type === 'root') {
+ node.root = parent;
+ node.parent = null;
+ } else {
+ node.root = null;
+ node.parent = parent;
+ }
+ }
+
+ return parent;
+};
+
+// module.exports = $.extend(exports);