%PDF- %PDF-
Direktori : /home/opti/workflow/node_modules/cheerio/lib/ |
Current File : /home/opti/workflow/node_modules/cheerio/lib/utils.js |
var parse = require('./parse'), render = require('dom-serializer'); /** * 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) { return parse(render(dom, options), options).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]); };