github.com/sym3tri/etcd@v0.2.1-0.20140422215517-a563d82f95d6/mod/dashboard/app/module/path.js (about)

     1  'use strict';
     2  
     3  angular.module('etcd.module')
     4  .factory('pathSvc', function() {
     5  
     6    var keyPrefix = '/v2/keys/',
     7        statsPrefix = '/v2/stats/';
     8  
     9    return {
    10  
    11      clean: function(path) {
    12        var parts = this.explode(path);
    13        if (parts.length === 0) {
    14          return '';
    15        }
    16        return parts.join('/');
    17      },
    18  
    19      make: function(arr) {
    20        return '/' + arr.join('/');
    21      },
    22  
    23      explode: function(str) {
    24        var parts = str.split('/');
    25        parts = parts.filter(function(v) {
    26          return v !== '';
    27        });
    28        return parts;
    29      },
    30  
    31      /**
    32       * Get the last segment of a path.
    33       */
    34      tail: function(path) {
    35        var parts = this.explode(path);
    36        if (parts.length) {
    37          return parts[parts.length-1];
    38        }
    39        return '/';
    40      },
    41  
    42      truncate: function(path, maxlen) {
    43        var prefix = '/..';
    44        maxlen = maxlen || 10;
    45        if (!path || !path.length) {
    46          return '';
    47        }
    48        if (path.length <= maxlen) {
    49          return path;
    50        }
    51        return prefix +
    52          path.substring(path.length - maxlen + prefix.length, path.length);
    53      },
    54  
    55      getFullKeyPath: function(key) {
    56        var path = '/' + this.clean(keyPrefix + key);
    57        if (path === keyPrefix.substring(0, keyPrefix.length - 1)) {
    58          return keyPrefix;
    59        }
    60        return path;
    61      },
    62  
    63      getStatFullKeyPath: function(name) {
    64        return '/' + this.clean(statsPrefix + name);
    65      },
    66  
    67      getParent: function(path) {
    68        var parts = path.split('/');
    69        if (parts.length === 0) {
    70          return '/';
    71        }
    72        parts.pop();
    73        return '/' + parts.join('/');
    74      }
    75  
    76    };
    77  
    78  });