1 | 'use strict';
|
2 |
|
3 | var path = require('path');
|
4 | var fileRe = require('filename-regex');
|
5 | var win32 = process.platform === 'win32';
|
6 | var win;
|
7 |
|
8 | var utils = module.exports;
|
9 |
|
10 | utils.filename = function filename(fp) {
|
11 | var seg = fp.match(fileRe());
|
12 | return seg && seg[0];
|
13 | };
|
14 |
|
15 | utils.isPath = function isPath(pattern) {
|
16 | return function (fp) {
|
17 | return fp === pattern;
|
18 | };
|
19 | };
|
20 |
|
21 | utils.hasPath = function hasPath(pattern) {
|
22 | return function (fp) {
|
23 | return fp.indexOf(pattern) !== -1;
|
24 | };
|
25 | };
|
26 |
|
27 | utils.matchPath = function matchPath(pattern, opts) {
|
28 | var fn = (opts && opts.contains)
|
29 | ? utils.hasPath(pattern)
|
30 | : utils.isPath(pattern);
|
31 | return fn;
|
32 | };
|
33 |
|
34 | utils.hasFilename = function hasFilename(re) {
|
35 | return function (fp) {
|
36 | var name = utils.filename(fp);
|
37 | return name && re.test(name);
|
38 | };
|
39 | };
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | utils.arrayify = function arrayify(val) {
|
49 | return !Array.isArray(val)
|
50 | ? [val]
|
51 | : val;
|
52 | };
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 | utils.unixify = function unixify(fp, opts) {
|
59 | if (opts && opts.unixify === true) {
|
60 | win = true;
|
61 | } else if (opts && opts.cache && typeof win === 'undefined') {
|
62 | win = win32 || path.sep === '\\';
|
63 | }
|
64 | if (win) {
|
65 | return fp.replace(/[\\\/]+/g, '/');
|
66 | }
|
67 | return fp;
|
68 | };
|
69 |
|
70 |
|
71 |
|
72 |
|
73 |
|
74 | utils.escapePath = function escapePath(fp) {
|
75 | return fp.replace(/[\\.]/g, '\\$&');
|
76 | };
|
77 |
|
78 | utils.unescapeGlob = function unescapeGlob(fp) {
|
79 | return fp.replace(/[\\"']/g, '');
|
80 | };
|
81 |
|
82 | utils.escapeRe = function escapeRe(str) {
|
83 | return str.replace(/[-[\\$*+?.#^\s{}(|)\]]/g, '\\$&');
|
84 | };
|