si-funciona
Version:
Funciones de utilidad para uso general. [General usage utility functions.]
44 lines (42 loc) • 1.44 kB
JavaScript
Object.defineProperty(exports, '__esModule', {
value: true
})
exports.makeRelativePath = exports.default = void 0
var _strBefore = _interopRequireDefault(require('./strBefore'))
var _strAfter = _interopRequireDefault(require('./strAfter'))
function _interopRequireDefault (e) { return e && e.__esModule ? e : { default: e } }
/**
* Compare two file paths and simplify them to a relative path.
* @memberOf module:stringHelpers
* @param {string} fromFile
* @param {string} toFile
* @return {string}
*/
const makeRelativePath = (fromFile, toFile) => {
let relativePath = toFile
let nextPart = fromFile
let firstPart = (0, _strBefore.default)(nextPart, '/')
let hasMatches = false
while (firstPart && relativePath.startsWith(firstPart)) {
relativePath = (0, _strAfter.default)(relativePath, ''.concat(firstPart, '/'))
nextPart = (0, _strAfter.default)(nextPart, ''.concat(firstPart, '/'))
firstPart = (0, _strBefore.default)(nextPart, '/')
hasMatches = true
}
if (!hasMatches) {
// No similar base paths, use the path as-is
return relativePath
}
let relativePrefix = ''
const nextParts = nextPart.split('/')
if (nextParts.length < 2) {
relativePrefix = './'
}
for (let i = 1; i < nextParts.length; ++i) {
relativePrefix += '../'
}
return relativePrefix + relativePath
}
exports.makeRelativePath = makeRelativePath
var _default = exports.default = makeRelativePath