123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- 'use strict';
- var win32 = process && process.platform === 'win32';
- var path = require('path');
- var fileRe = require('filename-regex');
- var utils = module.exports;
- /**
- * Module dependencies
- */
- utils.diff = require('arr-diff');
- utils.unique = require('array-unique');
- utils.braces = require('braces');
- utils.brackets = require('expand-brackets');
- utils.extglob = require('extglob');
- utils.isExtglob = require('is-extglob');
- utils.isGlob = require('is-glob');
- utils.typeOf = require('kind-of');
- utils.normalize = require('normalize-path');
- utils.omit = require('object.omit');
- utils.parseGlob = require('parse-glob');
- utils.cache = require('regex-cache');
- /**
- * Get the filename of a filepath
- *
- * @param {String} `string`
- * @return {String}
- */
- utils.filename = function filename(fp) {
- var seg = fp.match(fileRe());
- return seg && seg[0];
- };
- /**
- * Returns a function that returns true if the given
- * pattern is the same as a given `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
- utils.isPath = function isPath(pattern, opts) {
- opts = opts || {};
- return function(fp) {
- var unixified = utils.unixify(fp, opts);
- if(opts.nocase){
- return pattern.toLowerCase() === unixified.toLowerCase();
- }
- return pattern === unixified;
- };
- };
- /**
- * Returns a function that returns true if the given
- * pattern contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
- utils.hasPath = function hasPath(pattern, opts) {
- return function(fp) {
- return utils.unixify(pattern, opts).indexOf(fp) !== -1;
- };
- };
- /**
- * Returns a function that returns true if the given
- * pattern matches or contains a `filepath`
- *
- * @param {String} `pattern`
- * @return {Function}
- */
- utils.matchPath = function matchPath(pattern, opts) {
- var fn = (opts && opts.contains)
- ? utils.hasPath(pattern, opts)
- : utils.isPath(pattern, opts);
- return fn;
- };
- /**
- * Returns a function that returns true if the given
- * regex matches the `filename` of a file path.
- *
- * @param {RegExp} `re`
- * @return {Boolean}
- */
- utils.hasFilename = function hasFilename(re) {
- return function(fp) {
- var name = utils.filename(fp);
- return name && re.test(name);
- };
- };
- /**
- * Coerce `val` to an array
- *
- * @param {*} val
- * @return {Array}
- */
- utils.arrayify = function arrayify(val) {
- return !Array.isArray(val)
- ? [val]
- : val;
- };
- /**
- * Normalize all slashes in a file path or glob pattern to
- * forward slashes.
- */
- utils.unixify = function unixify(fp, opts) {
- if (opts && opts.unixify === false) return fp;
- if (opts && opts.unixify === true || win32 || path.sep === '\\') {
- return utils.normalize(fp, false);
- }
- if (opts && opts.unescape === true) {
- return fp ? fp.toString().replace(/\\(\w)/g, '$1') : '';
- }
- return fp;
- };
- /**
- * Escape/unescape utils
- */
- utils.escapePath = function escapePath(fp) {
- return fp.replace(/[\\.]/g, '\\$&');
- };
- utils.unescapeGlob = function unescapeGlob(fp) {
- return fp.replace(/[\\"']/g, '');
- };
- utils.escapeRe = function escapeRe(str) {
- return str.replace(/[-[\\$*+?.#^\s{}(|)\]]/g, '\\$&');
- };
- /**
- * Expose `utils`
- */
- module.exports = utils;
|