summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js139
1 files changed, 139 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js
new file mode 100644
index 00000000..b0864e8b
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/cheerio.js
@@ -0,0 +1,139 @@
+/*
+ Module dependencies
+*/
+
+var parse = require('./parse'),
+ defaultOptions = require('./options').default,
+ flattenOptions = require('./options').flatten,
+ isHtml = require('./utils').isHtml,
+ _ = {
+ extend: require('lodash/assignIn'),
+ bind: require('lodash/bind'),
+ forEach: require('lodash/forEach'),
+ defaults: require('lodash/defaults')
+ };
+
+/*
+ * The API
+ */
+
+var api = [
+ require('./api/attributes'),
+ require('./api/traversing'),
+ require('./api/manipulation'),
+ require('./api/css'),
+ require('./api/forms')
+];
+
+/*
+ * Instance of cheerio
+ */
+
+var Cheerio = module.exports = function(selector, context, root, options) {
+ if (!(this instanceof Cheerio)) return new Cheerio(selector, context, root, options);
+
+ this.options = _.defaults(flattenOptions(options), this.options, defaultOptions);
+
+ // $(), $(null), $(undefined), $(false)
+ if (!selector) return this;
+
+ if (root) {
+ if (typeof root === 'string') root = parse(root, this.options, false);
+ this._root = Cheerio.call(this, root);
+ }
+
+ // $($)
+ if (selector.cheerio) return selector;
+
+ // $(dom)
+ if (isNode(selector))
+ selector = [selector];
+
+ // $([dom])
+ if (Array.isArray(selector)) {
+ _.forEach(selector, _.bind(function(elem, idx) {
+ this[idx] = elem;
+ }, this));
+ this.length = selector.length;
+ return this;
+ }
+
+ // $(<html>)
+ if (typeof selector === 'string' && isHtml(selector)) {
+ return Cheerio.call(this, parse(selector, this.options, false).children);
+ }
+
+ // If we don't have a context, maybe we have a root, from loading
+ if (!context) {
+ context = this._root;
+ } else if (typeof context === 'string') {
+ if (isHtml(context)) {
+ // $('li', '<ul>...</ul>')
+ context = parse(context, this.options, false);
+ context = Cheerio.call(this, context);
+ } else {
+ // $('li', 'ul')
+ selector = [context, selector].join(' ');
+ context = this._root;
+ }
+ // $('li', node), $('li', [nodes])
+ } else if (!context.cheerio) {
+ context = Cheerio.call(this, context);
+ }
+
+ // If we still don't have a context, return
+ if (!context) return this;
+
+ // #id, .class, tag
+ return context.find(selector);
+};
+
+/**
+ * Mix in `static`
+ */
+
+_.extend(Cheerio, require('./static'));
+
+/*
+ * Set a signature of the object
+ */
+
+Cheerio.prototype.cheerio = '[cheerio object]';
+
+/*
+ * Make cheerio an array-like object
+ */
+
+Cheerio.prototype.length = 0;
+Cheerio.prototype.splice = Array.prototype.splice;
+
+/*
+ * Make a cheerio object
+ *
+ * @api private
+ */
+
+Cheerio.prototype._make = function(dom, context) {
+ var cheerio = new this.constructor(dom, context, this._root, this.options);
+ cheerio.prevObject = this;
+ return cheerio;
+};
+
+/**
+ * Turn a cheerio object into an array
+ */
+
+Cheerio.prototype.toArray = function() {
+ return this.get();
+};
+
+/**
+ * Plug in the API
+ */
+api.forEach(function(mod) {
+ _.extend(Cheerio.prototype, mod);
+});
+
+var isNode = function(obj) {
+ return obj.name || obj.type === 'text' || obj.type === 'comment';
+};