| Index: tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/render.js
|
| diff --git a/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/render.js b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/render.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a8a80775bdd35e869e7b8fbba71c3a697daa660f
|
| --- /dev/null
|
| +++ b/tools/vulcanize/node_modules/vulcanize/node_modules/cheerio/lib/render.js
|
| @@ -0,0 +1,136 @@
|
| +/*
|
| + Module dependencies
|
| +*/
|
| +var _ = require('underscore');
|
| +var utils = require('./utils');
|
| +
|
| +var decode = utils.decode;
|
| +var encode = utils.encode;
|
| +
|
| +/*
|
| + Boolean Attributes
|
| +*/
|
| +var rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i;
|
| +
|
| +/*
|
| + Format attributes
|
| +*/
|
| +var formatAttrs = function(attributes) {
|
| + if (!attributes) return '';
|
| +
|
| + var output = [],
|
| + value;
|
| +
|
| + // Loop through the attributes
|
| + for (var key in attributes) {
|
| + value = attributes[key];
|
| + if (!value && (rboolean.test(key) || key === '/')) {
|
| + output.push(key);
|
| + } else {
|
| + output.push(key + '="' + encode(decode(value)) + '"');
|
| + }
|
| + }
|
| +
|
| + return output.join(' ');
|
| +};
|
| +
|
| +/*
|
| + Self-enclosing tags (stolen from node-htmlparser)
|
| +*/
|
| +var singleTag = {
|
| + area: 1,
|
| + base: 1,
|
| + basefont: 1,
|
| + br: 1,
|
| + col: 1,
|
| + frame: 1,
|
| + hr: 1,
|
| + img: 1,
|
| + input: 1,
|
| + isindex: 1,
|
| + link: 1,
|
| + meta: 1,
|
| + param: 1,
|
| + embed: 1,
|
| + include: 1,
|
| + 'yield': 1
|
| +};
|
| +
|
| +/*
|
| + Tag types from htmlparser
|
| +*/
|
| +var tagType = {
|
| + tag: 1,
|
| + script: 1,
|
| + link: 1,
|
| + style: 1,
|
| + template: 1
|
| +};
|
| +
|
| +var render = module.exports = function(dom, opts) {
|
| + if (!Array.isArray(dom) && !dom.cheerio) dom = [dom];
|
| + opts = opts || {};
|
| +
|
| + var output = [],
|
| + xmlMode = opts.xmlMode || false,
|
| + ignoreWhitespace = opts.ignoreWhitespace || false;
|
| +
|
| + _.each(dom, function(elem) {
|
| + var pushVal;
|
| +
|
| + if (tagType[elem.type])
|
| + pushVal = renderTag(elem, xmlMode);
|
| + else if (elem.type === 'directive')
|
| + pushVal = renderDirective(elem);
|
| + else if (elem.type === 'comment')
|
| + pushVal = renderComment(elem);
|
| + else
|
| + pushVal = renderText(elem);
|
| +
|
| + // Push rendered DOM node
|
| + output.push(pushVal);
|
| +
|
| + if (elem.children)
|
| + output.push(render(elem.children, opts));
|
| +
|
| + if ((!singleTag[elem.name] || xmlMode) && tagType[elem.type]) {
|
| + if (!isClosedTag(elem, xmlMode)) {
|
| + output.push('</' + elem.name + '>');
|
| + }
|
| + }
|
| + });
|
| +
|
| + return output.join('');
|
| +};
|
| +
|
| +var isClosedTag = function(elem, xmlMode){
|
| + return (xmlMode && (!elem.children || elem.children.length === 0));
|
| +};
|
| +
|
| +var renderTag = function(elem, xmlMode) {
|
| + var tag = '<' + elem.name;
|
| +
|
| + if (elem.attribs && _.size(elem.attribs)) {
|
| + tag += ' ' + formatAttrs(elem.attribs);
|
| + }
|
| +
|
| + if (isClosedTag(elem, xmlMode)) {
|
| + tag += '/';
|
| + }
|
| +
|
| + return tag + '>';
|
| +};
|
| +
|
| +var renderDirective = function(elem) {
|
| + return '<' + elem.data + '>';
|
| +};
|
| +
|
| +var renderText = function(elem) {
|
| + return elem.data;
|
| +};
|
| +
|
| +var renderComment = function(elem) {
|
| + return '<!--' + elem.data + '-->';
|
| +};
|
| +
|
| +// module.exports = $.extend(exports);
|
|
|