Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/cheerio.js |
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/cheerio.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/cheerio.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..943571d83a5b51fbb0a2f39d7591e524bc9c455c |
--- /dev/null |
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/cheerio.js |
@@ -0,0 +1,143 @@ |
+/* |
+ Module dependencies |
+*/ |
+ |
+var path = require('path'), |
+ select = require('cheerio-select'), |
+ parse = require('./parse'), |
+ evaluate = parse.evaluate, |
+ updateDOM = parse.update, |
+ _ = require('underscore'); |
+ |
+/* |
+ * The API |
+ */ |
+ |
+var api = ['attributes', 'traversing', 'manipulation', 'css']; |
+ |
+/* |
+ * A simple way to check for HTML strings or ID strings |
+ */ |
+ |
+var quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/; |
+ |
+/** |
+ * Static Methods |
+ */ |
+ |
+var $ = require('./static'); |
+ |
+/* |
+ * Instance of cheerio |
+ */ |
+ |
+var Cheerio = module.exports = function(selector, context, root) { |
+ if (!(this instanceof Cheerio)) return new Cheerio(selector, context, root); |
+ |
+ // $(), $(null), $(undefined), $(false) |
+ if (!selector) return this; |
+ |
+ if (root) { |
+ if (typeof root === 'string') root = parse(root); |
+ this._root = this.make(root, this); |
+ } |
+ |
+ // $($) |
+ if (selector.cheerio) return selector; |
+ |
+ // $(dom) |
+ if (selector.name || Array.isArray(selector)) |
+ return this.make(selector, this); |
+ |
+ // $(<html>) |
+ if (typeof selector === 'string' && isHtml(selector)) { |
+ return this.make(parse(selector).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); |
+ context = this.make(context, this); |
+ } else { |
+ // $('li', 'ul') |
+ selector = [context, selector].join(' '); |
+ context = this._root; |
+ } |
+ } |
+ |
+ // If we still don't have a context, return |
+ if (!context) return this; |
+ |
+ // #id, .class, tag |
+ return context.find(selector); |
+}; |
+ |
+/** |
+ * Inherit from `static` |
+ */ |
+ |
+Cheerio.__proto__ = require('./static'); |
+ |
+/* |
+ * Set a signature of the object |
+ */ |
+ |
+Cheerio.prototype.cheerio = '[cheerio object]'; |
+ |
+/* |
+ * Cheerio default options |
+ */ |
+ |
+Cheerio.prototype.options = { |
+ ignoreWhitespace: false, |
+ xmlMode: false, |
+ lowerCaseTags: false |
+}; |
+ |
+/* |
+ * Make cheerio an array-like object |
+ */ |
+ |
+Cheerio.prototype.length = 0; |
+Cheerio.prototype.sort = [].splice; |
+ |
+/* |
+ * Check if string is HTML |
+ */ |
+var isHtml = function(str) { |
+ // Faster than running regex, if str starts with `<` and ends with `>`, assume it's HTML |
+ if (str.charAt(0) === '<' && str.charAt(str.length - 1) === '>' && str.length >= 3) return true; |
+ |
+ // Run the regex |
+ var match = quickExpr.exec(str); |
+ return !!(match && match[1]); |
+}; |
+ |
+/* |
+ * Make a cheerio object |
+ */ |
+ |
+Cheerio.prototype.make = function(dom, context) { |
+ if (dom.cheerio) return dom; |
+ dom = (Array.isArray(dom)) ? dom : [dom]; |
+ return _.extend(context || new Cheerio(), dom, { length: dom.length }); |
+}; |
+ |
+/** |
+ * Turn a cheerio object into an array |
+ */ |
+ |
+Cheerio.prototype.toArray = function() { |
+ return [].slice.call(this, 0); |
+}; |
+ |
+/** |
+ * Plug in the API |
+ */ |
+api.forEach(function(mod) { |
+ _.extend(Cheerio.prototype, require('./api/' + mod)); |
+}); |