You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
658 B
33 lines
658 B
'use strict'; |
|
|
|
var path = require('path'); |
|
|
|
function containsPath(fp, segment) { |
|
if (typeof fp !== 'string' || typeof segment !== 'string') { |
|
throw new TypeError('contains-path expects file paths to be a string.'); |
|
} |
|
|
|
var prefix = '(^|\\/)'; |
|
if (segment.indexOf('./') === 0 || segment.charAt(0) === '/') { |
|
prefix = '^'; |
|
} |
|
|
|
var re = new RegExp(prefix + normalize(segment).join('\\/') + '($|\\/)'); |
|
fp = normalize(fp).join('/'); |
|
return re.test(fp); |
|
} |
|
|
|
/** |
|
* Normalize slashes |
|
*/ |
|
|
|
function normalize(str) { |
|
str = path.normalize(str); |
|
return str.split(/[\\\/]+/); |
|
} |
|
|
|
/** |
|
* Expose `containsPath` |
|
*/ |
|
|
|
module.exports = containsPath;
|
|
|