diff options
Diffstat (limited to 'node_modules/common-ancestor-path/index.js')
-rw-r--r-- | node_modules/common-ancestor-path/index.js | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/node_modules/common-ancestor-path/index.js b/node_modules/common-ancestor-path/index.js new file mode 100644 index 000000000..09ae31782 --- /dev/null +++ b/node_modules/common-ancestor-path/index.js @@ -0,0 +1,17 @@ +const {parse, sep, normalize: norm} = require('path') + +function* commonArrayMembers (a, b) { + const [l, s] = a.length > b.length ? [a, b] : [b, a] + for (const x of s) { + if (x === l.shift()) + yield x + else + break + } +} + +const commonAncestorPath = (a, b) => a === b ? a + : parse(a).root !== parse(b).root ? null + : [...commonArrayMembers(norm(a).split(sep), norm(b).split(sep))].join(sep) + +module.exports = (...paths) => paths.reduce(commonAncestorPath) |