UNPKG

path2

Version:

Modular and extended version of `path` package

46 lines (34 loc) 988 B
'use strict'; var resolve = require('./resolve'); module.exports = function (from, to) { var trim, fromParts, toParts, length, samePartsLength, i, outputParts; from = resolve(from).substr(1); to = resolve(to).substr(1); trim = function (arr) { var start, end; for (start = 0; start < arr.length; start++) { if (arr[start] !== '') break; } for (end = arr.length - 1; end >= 0; end--) { if (arr[end] !== '') break; } if (start > end) return []; return arr.slice(start, end - start + 1); }; fromParts = trim(from.split('/')); toParts = trim(to.split('/')); length = Math.min(fromParts.length, toParts.length); samePartsLength = length; for (i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break; } } outputParts = []; for (i = samePartsLength; i < fromParts.length; i++) { outputParts.push('..'); } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join('/'); };