2014-04-14 12:13:04 -07:00

79 lines
1.6 KiB
JavaScript

'use strict';
angular.module('etcd.module')
.factory('pathSvc', function() {
var keyPrefix = '/v2/keys/',
statsPrefix = '/v2/stats/';
return {
clean: function(path) {
var parts = this.explode(path);
if (parts.length === 0) {
return '';
}
return parts.join('/');
},
make: function(arr) {
return '/' + arr.join('/');
},
explode: function(str) {
var parts = str.split('/');
parts = parts.filter(function(v) {
return v !== '';
});
return parts;
},
/**
* Get the last segment of a path.
*/
tail: function(path) {
var parts = this.explode(path);
if (parts.length) {
return parts[parts.length-1];
}
return '/';
},
truncate: function(path, maxlen) {
var prefix = '/..';
maxlen = maxlen || 10;
if (!path || !path.length) {
return '';
}
if (path.length <= maxlen) {
return path;
}
return prefix +
path.substring(path.length - maxlen + prefix.length, path.length);
},
getFullKeyPath: function(key) {
var path = '/' + this.clean(keyPrefix + key);
if (path === keyPrefix.substring(0, keyPrefix.length - 1)) {
return keyPrefix;
}
return path;
},
getStatFullKeyPath: function(name) {
return '/' + this.clean(statsPrefix + name);
},
getParent: function(path) {
var parts = path.split('/');
if (parts.length === 0) {
return '/';
}
parts.pop();
return '/' + parts.join('/');
}
};
});