diff options
Diffstat (limited to 'node_modules/nanomatch/lib/utils.js')
-rw-r--r-- | node_modules/nanomatch/lib/utils.js | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/node_modules/nanomatch/lib/utils.js b/node_modules/nanomatch/lib/utils.js index 6fc434012..0cf1501d2 100644 --- a/node_modules/nanomatch/lib/utils.js +++ b/node_modules/nanomatch/lib/utils.js @@ -7,6 +7,7 @@ var path = require('path'); * Module dependencies */ +var isWindows = require('is-windows')(); var Snapdragon = require('snapdragon'); utils.define = require('define-property'); utils.diff = require('arr-diff'); @@ -31,7 +32,7 @@ utils.isEmptyString = function(val) { */ utils.isWindows = function() { - return path.sep === '\\' || process.platform === 'win32'; + return path.sep === '\\' || isWindows === true; }; /** @@ -60,7 +61,7 @@ utils.instantiate = function(ast, options) { } utils.define(snapdragon, 'parse', function(str, options) { - var parsed = Snapdragon.prototype.parse.apply(this, arguments); + var parsed = Snapdragon.prototype.parse.call(this, str, options); parsed.input = str; // escape unmatched brace/bracket/parens @@ -148,21 +149,23 @@ utils.isObject = function(val) { */ utils.escapeRegex = function(str) { - return str.replace(/[-[\]{}()^$|*+?.\\\/\s]/g, '\\$&'); + return str.replace(/[-[\]{}()^$|*+?.\\/\s]/g, '\\$&'); }; /** - * Combines duplicate characters in the provided string. - * @param {String} `str` + * Combines duplicate characters in the provided `input` string. + * @param {String} `input` * @returns {String} */ -utils.combineDuplicates = function(str, val) { - if (typeof val === 'string') { - var re = new RegExp('(' + val + ')(?=(?:' + val + ')*\\1)', 'g'); - return str.replace(re, ''); - } - return str.replace(/(.)(?=.*\1)/g, ''); +utils.combineDupes = function(input, patterns) { + patterns = utils.arrayify(patterns).join('|').split('|'); + patterns = patterns.map(function(s) { + return s.replace(/\\?([+*\\/])/g, '\\$1'); + }); + var substr = patterns.join('|'); + var regex = new RegExp('(' + substr + ')(?=\\1)', 'g'); + return input.replace(regex, ''); }; /** @@ -170,7 +173,7 @@ utils.combineDuplicates = function(str, val) { */ utils.hasSpecialChars = function(str) { - return /(?:(?:(^|\/)[!.])|[*?+()|\[\]{}]|[+@]\()/.test(str); + return /(?:(?:(^|\/)[!.])|[*?+()|[\]{}]|[+@]\()/.test(str); }; /** @@ -202,7 +205,7 @@ utils.unescape = function(str) { */ utils.stripDrive = function(fp) { - return utils.isWindows() ? fp.replace(/^[a-z]:[\\\/]+?/i, '/') : fp; + return utils.isWindows() ? fp.replace(/^[a-z]:[\\/]+?/i, '/') : fp; }; /** @@ -226,7 +229,7 @@ utils.stripPrefix = function(str) { */ utils.isSimpleChar = function(str) { - return str === '' || str === ' ' || str === '.'; + return str.trim() === '' || str === '.'; }; /** |