diff options
Diffstat (limited to 'bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/utils.js')
-rw-r--r-- | bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/utils.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/utils.js b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/utils.js new file mode 100644 index 00000000..61a8c04d --- /dev/null +++ b/bin/wiki/ImportarDesdeURL/node_modules/cheerio/lib/utils.js @@ -0,0 +1,86 @@ +var parse = require('./parse'), + render = require('dom-serializer'), + assign = require('lodash/assign'); + +/** + * HTML Tags + */ + +var tags = { tag: true, script: true, style: true }; + +/** + * Check if the DOM element is a tag + * + * isTag(type) includes <script> and <style> tags + */ + +exports.isTag = function(type) { + if (type.type) type = type.type; + return tags[type] || false; +}; + +/** + * Convert a string to camel case notation. + * @param {String} str String to be converted. + * @return {String} String in camel case notation. + */ + +exports.camelCase = function(str) { + return str.replace(/[_.-](\w|$)/g, function(_, x) { + return x.toUpperCase(); + }); +}; + +/** + * Convert a string from camel case to "CSS case", where word boundaries are + * described by hyphens ("-") and all characters are lower-case. + * @param {String} str String to be converted. + * @return {string} String in "CSS case". + */ +exports.cssCase = function(str) { + return str.replace(/[A-Z]/g, '-$&').toLowerCase(); +}; + +/** + * Iterate over each DOM element without creating intermediary Cheerio instances. + * + * This is indented for use internally to avoid otherwise unnecessary memory pressure introduced + * by _make. + */ + +exports.domEach = function(cheerio, fn) { + var i = 0, len = cheerio.length; + while (i < len && fn.call(cheerio, i, cheerio[i]) !== false) ++i; + return cheerio; +}; + +/** + * Create a deep copy of the given DOM structure by first rendering it to a + * string and then parsing the resultant markup. + * + * @argument {Object} dom - The htmlparser2-compliant DOM structure + * @argument {Object} options - The parsing/rendering options + */ +exports.cloneDom = function(dom, options) { + options = assign({}, options, { _useHtmlParser2: true }); + + return parse(render(dom, options), options, false).children; +}; + +/* + * A simple way to check for HTML strings or ID strings + */ + +var quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/; + +/* + * Check if string is HTML + */ +exports.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]); +}; |