open-consul/ui/packages/consul-ui/app/utils/path/resolve.js

26 lines
685 B
JavaScript
Raw Normal View History

/**
* basic path.resolve like function for resolving ember Route-type paths
* importantly your from should look ember-y route-like (i.e. with no prefix /)
* and your to should begin with either ./ or ../
* if to begins with a / then ../ and ./ in the to are not currently
* resolved
*/
export default (from, to) => {
if (to.indexOf('/') === 0) {
return to;
}
return to
.split('/')
.reduce((prev, item, i, items) => {
if (item !== '.') {
if (item === '..') {
prev.pop();
} else if (item !== '' || i === items.length - 1) {
prev.push(item);
}
}
return prev;
}, from.split('/'))
.join('/');
};