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.
29 lines
802 B
29 lines
802 B
var path = require('path'); |
|
|
|
module.exports = function (basedir, relfiles) { |
|
if (relfiles) { |
|
var files = relfiles.map(function (r) { |
|
return path.resolve(basedir, r); |
|
}); |
|
} |
|
else { |
|
var files = basedir; |
|
} |
|
|
|
var res = files.slice(1).reduce(function (ps, file) { |
|
if (!file.match(/^([A-Za-z]:)?\/|\\/)) { |
|
throw new Error('relative path without a basedir'); |
|
} |
|
|
|
var xs = file.split(/\/+|\\+/); |
|
for ( |
|
var i = 0; |
|
ps[i] === xs[i] && i < Math.min(ps.length, xs.length); |
|
i++ |
|
); |
|
return ps.slice(0, i); |
|
}, files[0].split(/\/+|\\+/)); |
|
|
|
// Windows correctly handles paths with forward-slashes |
|
return res.length > 1 ? res.join('/') : '/' |
|
};
|
|
|