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.
34 lines
658 B
34 lines
658 B
4 years ago
|
'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;
|