Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Unified Diff: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/api/manipulation.js

Issue 125733002: Add vulcanize to tools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/api/manipulation.js
diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/api/manipulation.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/api/manipulation.js
new file mode 100644
index 0000000000000000000000000000000000000000..cc84a3af7384dfc143bb05f3931263c6e5bfbb5d
--- /dev/null
+++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/api/manipulation.js
@@ -0,0 +1,212 @@
+var _ = require('underscore'),
+ parse = require('../parse'),
+ $ = require('../static'),
+ updateDOM = parse.update,
+ evaluate = parse.evaluate,
+ encode = require('../utils').encode,
+ slice = Array.prototype.slice;
+
+// Create an array of nodes, recursing into arrays and parsing strings if
+// necessary
+var makeDomArray = function(elem) {
+ if (elem == null) {
+ return [];
+ } else if (elem.cheerio) {
+ return elem.toArray();
+ } else if (_.isArray(elem)) {
+ return _.flatten(elem.map(makeDomArray));
+ } else if (_.isString(elem)) {
+ return evaluate(elem);
+ } else {
+ return [elem];
+ }
+};
+
+var _insert = function(concatenator) {
+ return function() {
+ var elems = slice.call(arguments),
+ dom = makeDomArray(elems);
+
+ return this.each(function(i, el) {
+ if (_.isFunction(elems[0])) {
+ dom = makeDomArray(elems[0].call(el, i, this.html()));
+ }
+ updateDOM(concatenator(dom, el.children || (el.children = [])), el);
+ });
+ };
+};
+
+var append = exports.append = _insert(function(dom, children) {
+ return children.concat(dom);
+});
+
+var prepend = exports.prepend = _insert(function(dom, children) {
+ return dom.concat(children);
+});
+
+var after = exports.after = function() {
+ var elems = slice.call(arguments),
+ dom = makeDomArray(elems);
+
+ this.each(function(i, el) {
+ var siblings = el.parent.children,
+ index = siblings.indexOf(el);
+
+ // If not found, move on
+ if (!~index) return;
+
+ if (_.isFunction(elems[0])) {
+ dom = makeDomArray(elems[0].call(el, i));
+ }
+
+ // Add element after `this` element
+ siblings.splice.apply(siblings, [++index, 0].concat(dom));
+
+ // Update next, prev, and parent pointers
+ updateDOM(siblings, el.parent);
+ el.parent.children = siblings;
+
+ });
+
+ return this;
+};
+
+var before = exports.before = function() {
+ var elems = slice.call(arguments),
+ dom = makeDomArray(elems);
+
+ this.each(function(i, el) {
+ var siblings = el.parent.children,
+ index = siblings.indexOf(el);
+
+ // If not found, move on
+ if (!~index) return;
+
+ if (_.isFunction(elems[0])) {
+ dom = makeDomArray(elems[0].call(el, i));
+ }
+
+ // Add element before `el` element
+ siblings.splice.apply(siblings, [index, 0].concat(dom));
+
+ // Update next, prev, and parent pointers
+ updateDOM(siblings, el.parent);
+ el.parent.children = siblings;
+
+ });
+
+ return this;
+};
+
+/*
+ remove([selector])
+*/
+var remove = exports.remove = function(selector) {
+ var elems = this;
+
+ // Filter if we have selector
+ if (selector)
+ elems = elems.filter(selector);
+
+ elems.each(function(i, el) {
+ var siblings = el.parent.children,
+ index = siblings.indexOf(el);
+
+ if (!~index) return;
+
+ siblings.splice(index, 1);
+
+ // Update next, prev, and parent pointers
+ updateDOM(siblings, el.parent);
+ el.parent.children = siblings;
+ });
+
+ return this;
+};
+
+var replaceWith = exports.replaceWith = function(content) {
+ var dom = makeDomArray(content);
+
+ this.each(function(i, el) {
+ var siblings = el.parent.children,
+ index = siblings.indexOf(el);
+
+ if (!~index) return;
+
+ if (_.isFunction(content)) {
+ dom = makeDomArray(content.call(el, i));
+ }
+
+ siblings.splice.apply(siblings, [index, 1].concat(dom));
+
+ updateDOM(siblings, el.parent);
+ el.parent.children = siblings;
+ });
+
+ return this;
+};
+
+var empty = exports.empty = function() {
+ this.each(function(i, el) {
+ el.children = [];
+ });
+ return this;
+};
+
+/**
+ * Set/Get the HTML
+ */
+var html = exports.html = function(str) {
+ if (str === undefined) {
+ if (!this[0] || !this[0].children) return null;
+ return $.html(this[0].children);
+ }
+
+ str = str.cheerio ? str.toArray() : evaluate(str);
+
+ this.each(function(i, el) {
+ el.children = str;
+ updateDOM(el.children, el);
+ });
+
+ return this;
+};
+
+var toString = exports.toString = function() {
+ return $.html(this);
+};
+
+var text = exports.text = function(str) {
+ // If `str` is undefined, act as a "getter"
+ if (str === undefined) {
+ return $.text(this);
+ } else if (_.isFunction(str)) {
+ // Function support
+ return this.each(function(i, el) {
+ return this.text(str.call(el, i, this.text()));
+ });
+ }
+
+ var elem = {
+ data: encode(str),
+ type: 'text',
+ parent: null,
+ prev: null,
+ next: null,
+ children: []
+ };
+
+ // Append text node to each selected elements
+ this.each(function(i, el) {
+ el.children = elem;
+ updateDOM(el.children, el);
+ });
+
+ return this;
+};
+
+var clone = exports.clone = function() {
+ // Turn it into HTML, then recreate it,
+ // Seems to be the easiest way to reconnect everything correctly
+ return this.constructor($.html(this));
+};

Powered by Google App Engine
This is Rietveld 408576698