ph-dev-tools
Version:
Development Tools for PHibernate
53 lines • 1.7 kB
JavaScript
;
/**
* 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