summaryrefslogtreecommitdiff
path: root/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js
diff options
context:
space:
mode:
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js')
-rw-r--r--bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js121
1 files changed, 121 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js
new file mode 100644
index 00000000..d9ffae6c
--- /dev/null
+++ b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/api/css.js
@@ -0,0 +1,121 @@
+var domEach = require('../utils').domEach,
+ _ = {
+ pick: require('lodash/pick'),
+ };
+
+var toString = Object.prototype.toString;
+
+/**
+ * Set / Get css.
+ *
+ * @param {String|Object} prop
+ * @param {String} val
+ * @return {self}
+ * @api public
+ */
+
+exports.css = function(prop, val) {
+ if (arguments.length === 2 ||
+ // When `prop` is a "plain" object
+ (toString.call(prop) === '[object Object]')) {
+ return domEach(this, function(idx, el) {
+ setCss(el, prop, val, idx);
+ });
+ } else {
+ return getCss(this[0], prop);
+ }
+};
+
+/**
+ * Set styles of all elements.
+ *
+ * @param {String|Object} prop
+ * @param {String} val
+ * @param {Number} idx - optional index within the selection
+ * @return {self}
+ * @api private
+ */
+
+function setCss(el, prop, val, idx) {
+ if ('string' == typeof prop) {
+ var styles = getCss(el);
+ if (typeof val === 'function') {
+ val = val.call(el, idx, styles[prop]);
+ }
+
+ if (val === '') {
+ delete styles[prop];
+ } else if (val != null) {
+ styles[prop] = val;
+ }
+
+ el.attribs.style = stringify(styles);
+ } else if ('object' == typeof prop) {
+ Object.keys(prop).forEach(function(k){
+ setCss(el, k, prop[k]);
+ });
+ }
+}
+
+/**
+ * Get parsed styles of the first element.
+ *
+ * @param {String} prop
+ * @return {Object}
+ * @api private
+ */
+
+function getCss(el, prop) {
+ var styles = parse(el.attribs.style);
+ if (typeof prop === 'string') {
+ return styles[prop];
+ } else if (Array.isArray(prop)) {
+ return _.pick(styles, prop);
+ } else {
+ return styles;
+ }
+}
+
+/**
+ * Stringify `obj` to styles.
+ *
+ * @param {Object} obj
+ * @return {Object}
+ * @api private
+ */
+
+function stringify(obj) {
+ return Object.keys(obj || {})
+ .reduce(function(str, prop){
+ return str += ''
+ + (str ? ' ' : '')
+ + prop
+ + ': '
+ + obj[prop]
+ + ';';
+ }, '');
+}
+
+/**
+ * Parse `styles`.
+ *
+ * @param {String} styles
+ * @return {Object}
+ * @api private
+ */
+
+function parse(styles) {
+ styles = (styles || '').trim();
+
+ if (!styles) return {};
+
+ return styles
+ .split(';')
+ .reduce(function(obj, str){
+ var n = str.indexOf(':');
+ // skip if there is no :, or if it is the first/last character
+ if (n < 1 || n === str.length-1) return obj;
+ obj[str.slice(0,n).trim()] = str.slice(n+1).trim();
+ return obj;
+ }, {});
+}