UNPKG

ph-dev-tools

Version:
53 lines 1.7 kB
"use strict"; /** * Created by Papa on 4/27/2016. */ function resolveRelativeEntityPath(from, // to // ) { return resolveRelativePath(from.path, to.path); } exports.resolveRelativeEntityPath = resolveRelativeEntityPath; function resolveRelativePath(fromPath, // toPath // ) { fromPath = normalizePath(fromPath); toPath = normalizePath(toPath); let fromFragments = fromPath.split('/'); let toFragments = toPath.split('/'); let numCommonFragments = 0; for (let i = 0; i < fromFragments.length; i++) { let fromFragment = fromFragments[i]; let toFragment = toFragments[i]; if (fromFragment !== toFragment) { break; } numCommonFragments = i + 1; } let numFromPathDiffDirectories = fromFragments.length - numCommonFragments - 1; let toPathDiffNodes = toFragments.slice(numCommonFragments); let relativePath = ''; if (numFromPathDiffDirectories == 0) { relativePath = './'; } else { for (let i = 0; i < numFromPathDiffDirectories; i++) { relativePath += '../'; } } for (let i = 0; i < toPathDiffNodes.length; i++) { relativePath += toPathDiffNodes[i]; if (i < toPathDiffNodes.length - 1) { relativePath += '/'; } } return relativePath; } exports.resolveRelativePath = resolveRelativePath; function normalizePath(path) { let forwardSlashedPath = path.replace(/\\/g, '/'); let lowercasePath = forwardSlashedPath.toLowerCase(); return lowercasePath; } exports.normalizePath = normalizePath; //# sourceMappingURL=pathResolver.js.map