Sha256: 3d973340ba244995424ff53bb46b18fdfaf395c34d2a249421c9ea7cf7fd74ad

Contents?: true

Size: 1.35 KB

Versions: 6

Compression:

Stored size: 1.35 KB

Contents

var strings = (function() {
  var longestCommonPrefix = function(strings) {
    strings = _.filter(strings, _.isString);

    if (strings.length === 0) {
      return '';
    }

    var prefix = '';
    var maxlen = _.min(_.map(strings, function(s) { return s.length }));
    var i;
    var j;
    var c;

    for (i = 0; i < maxlen; i++) {
      c = strings[0].charAt(i);
      for (j = 0; j < strings.length; j++) {
        if (strings[j].charAt(i) !== c) {
          return prefix;
        }
      }
      prefix = prefix + c;
    }

    return prefix;
  }

  // Like longestCommonPrefix, but only breaks at whitespace
  var commonPrefix = function(strings) {
    var prefix = longestCommonPrefix(strings);
    if (strings[0] && strings[0] === prefix) {
      // All strings are the same
      return prefix;
    }

    var regex = /(^.*[\s\.]+)/;
    var match = regex.exec(prefix);
    if (match) {
      return match[1];
    }
    return '';
  }

  // Shortens a list of strings by removing common prefixes.
  var shorten = function(prefixFn, strings) {
    var prefix = prefixFn(strings);
    return _.map(strings, function(s) {
      if (s && s.length !== prefix.length) {
        return s.substring(prefix.length);
      }
      return s;
    });
  };

  return {
    commonPrefix: commonPrefix,
    longestCommonPrefix: longestCommonPrefix,
    shorten: shorten
  }
})();

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
riemann-dash-0.2.14 lib/riemann/dash/public/strings.js
riemann-dash-0.2.13 lib/riemann/dash/public/strings.js
riemann-dash-0.2.12 lib/riemann/dash/public/strings.js
riemann-dash-0.2.11 lib/riemann/dash/public/strings.js
riemann-dash-0.2.10 lib/riemann/dash/public/strings.js
riemann-dash-0.2.9 lib/riemann/dash/public/strings.js