| Index: node_modules/vulcanize/node_modules/whacko/lib/static.js
|
| diff --git a/node_modules/vulcanize/node_modules/whacko/lib/static.js b/node_modules/vulcanize/node_modules/whacko/lib/static.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..41ab5c2db1541650c2d990acd9ab83672ee8f0bc
|
| --- /dev/null
|
| +++ b/node_modules/vulcanize/node_modules/whacko/lib/static.js
|
| @@ -0,0 +1,160 @@
|
| +/**
|
| + * Module dependencies
|
| + */
|
| +
|
| +var select = require('CSSselect'),
|
| + parse = require('./parse'),
|
| + render = require('./render'),
|
| + _ = require('lodash');
|
| +
|
| +/**
|
| + * $.load(str)
|
| + */
|
| +
|
| +exports.load = function (content, options, isFragment) {
|
| + var Cheerio = require('./cheerio');
|
| +
|
| + options = _.defaults(options || {}, Cheerio.prototype.options);
|
| +
|
| + var root = parse(content, options, !isFragment);
|
| +
|
| + var initialize = function (selector, context, r, opts) {
|
| + opts = _.defaults(opts || {}, options);
|
| + return Cheerio.call(this, selector, context, r || root, opts);
|
| + };
|
| +
|
| + // Ensure that selections created by the "loaded" `initialize` function are
|
| + // true Cheerio instances.
|
| + initialize.prototype = Cheerio.prototype;
|
| +
|
| + // Add in the static methods
|
| + _.merge(initialize, exports);
|
| +
|
| + // Add in the root
|
| + initialize._root = root;
|
| + // store options
|
| + initialize._options = options;
|
| +
|
| + return initialize;
|
| +};
|
| +
|
| +/**
|
| + * $.html([selector | dom])
|
| + */
|
| +
|
| +exports.html = function (dom, options) {
|
| + var Cheerio = require('./cheerio');
|
| +
|
| + // be flexible about parameters, sometimes we call html(),
|
| + // with options as only parameter
|
| + // check dom argument for dom element specific properties
|
| + // assume there is no 'length' or 'type' properties in the options object
|
| + if (Object.prototype.toString.call(dom) === '[object Object]' && !options && !('length' in dom) &&
|
| + !('type' in dom)) {
|
| + options = dom;
|
| + dom = undefined;
|
| + }
|
| +
|
| + // sometimes $.html() used without preloading html
|
| + // so fallback non existing options to the default ones
|
| + options = _.defaults(options || {}, this._options, Cheerio.prototype.options);
|
| +
|
| + if (dom) {
|
| + dom = (typeof dom === 'string') ? select(dom, this._root, options) : dom;
|
| + return render(dom, options);
|
| + } else if (this._root && this._root.children) {
|
| + return render(this._root.children, options);
|
| + } else {
|
| + return '';
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * $.xml([selector | dom])
|
| + */
|
| +
|
| +exports.xml = function (dom) {
|
| + if (dom) {
|
| + dom = (typeof dom === 'string') ? select(dom, this._root, this.options) : dom;
|
| + return render(dom, { xmlMode: true });
|
| + } else if (this._root && this._root.children) {
|
| + return render(this._root.children, { xmlMode: true });
|
| + } else {
|
| + return '';
|
| + }
|
| +};
|
| +
|
| +/**
|
| + * $.text(dom)
|
| + */
|
| +
|
| +exports.text = function (elems) {
|
| + if (!elems) return '';
|
| +
|
| + var ret = '',
|
| + len = elems.length,
|
| + elem;
|
| +
|
| + for (var i = 0; i < len; i++) {
|
| + elem = elems[i];
|
| + if (elem.type === 'text') ret += elem.data;
|
| + else if (elem.children && elem.type !== 'comment') {
|
| + ret += exports.text(elem.children);
|
| + }
|
| + }
|
| +
|
| + return ret;
|
| +};
|
| +
|
| +/**
|
| + * $.parseHTML(data [, context ] [, keepScripts ])
|
| + * Parses a string into an array of DOM nodes. The `context` argument has no
|
| + * meaning for Cheerio, but it is maintained for API compatibility with jQuery.
|
| + */
|
| +exports.parseHTML = function (data, context, keepScripts) {
|
| + var parsed;
|
| +
|
| + if (!data || typeof data !== 'string') {
|
| + return null;
|
| + }
|
| +
|
| + if (typeof context === 'boolean') {
|
| + keepScripts = context;
|
| + }
|
| +
|
| + parsed = this.load(data, null, true);
|
| + if (!keepScripts) {
|
| + parsed('script').remove();
|
| + }
|
| +
|
| + return parsed.root()[0].children;
|
| +};
|
| +
|
| +/**
|
| + * $.root()
|
| + */
|
| +exports.root = function () {
|
| + return this(this._root);
|
| +};
|
| +
|
| +/**
|
| + * $.contains()
|
| + */
|
| +exports.contains = function (container, contained) {
|
| +
|
| + // According to the jQuery API, an element does not "contain" itself
|
| + if (contained === container) {
|
| + return false;
|
| + }
|
| +
|
| + // Step up the descendants, stopping when the root element is reached
|
| + // (signaled by `.parent` returning a reference to the same object)
|
| + while (contained && contained !== contained.parent) {
|
| + contained = contained.parent;
|
| + if (contained === container) {
|
| + return true;
|
| + }
|
| + }
|
| +
|
| + return false;
|
| +};
|
|
|