arnaucube
arnaucube/socketioMEANseedPublic Self-hosted repository
socketioMEANseed/server/node_modules/ms/index.js
server/node_modules/ms/index.jsRaw
  1/**
  2 * Helpers.
  3 */
  4
  5var s = 1000;
  6var m = s * 60;
  7var h = m * 60;
  8var d = h * 24;
  9var y = d * 365.25;
 10
 11/**
 12 * Parse or format the given `val`.
 13 *
 14 * Options:
 15 *
 16 *  - `long` verbose formatting [false]
 17 *
 18 * @param {String|Number} val
 19 * @param {Object} options
 20 * @return {String|Number}
 21 * @api public
 22 */
 23
 24module.exports = function(val, options){
 25  options = options || {};
 26  if ('string' == typeof val) return parse(val);
 27  return options.long
 28    ? long(val)
 29    : short(val);
 30};
 31
 32/**
 33 * Parse the given `str` and return milliseconds.
 34 *
 35 * @param {String} str
 36 * @return {Number}
 37 * @api private
 38 */
 39
 40function parse(str) {
 41  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
 42  if (!match) return;
 43  var n = parseFloat(match[1]);
 44  var type = (match[2] || 'ms').toLowerCase();
 45  switch (type) {
 46    case 'years':
 47    case 'year':
 48    case 'yrs':
 49    case 'yr':
 50    case 'y':
 51      return n * y;
 52    case 'days':
 53    case 'day':
 54    case 'd':
 55      return n * d;
 56    case 'hours':
 57    case 'hour':
 58    case 'hrs':
 59    case 'hr':
 60    case 'h':
 61      return n * h;
 62    case 'minutes':
 63    case 'minute':
 64    case 'mins':
 65    case 'min':
 66    case 'm':
 67      return n * m;
 68    case 'seconds':
 69    case 'second':
 70    case 'secs':
 71    case 'sec':
 72    case 's':
 73      return n * s;
 74    case 'milliseconds':
 75    case 'millisecond':
 76    case 'msecs':
 77    case 'msec':
 78    case 'ms':
 79      return n;
 80  }
 81}
 82
 83/**
 84 * Short format for `ms`.
 85 *
 86 * @param {Number} ms
 87 * @return {String}
 88 * @api private
 89 */
 90
 91function short(ms) {
 92  if (ms >= d) return Math.round(ms / d) + 'd';
 93  if (ms >= h) return Math.round(ms / h) + 'h';
 94  if (ms >= m) return Math.round(ms / m) + 'm';
 95  if (ms >= s) return Math.round(ms / s) + 's';
 96  return ms + 'ms';
 97}
 98
 99/**
100 * Long format for `ms`.
101 *
102 * @param {Number} ms
103 * @return {String}
104 * @api private
105 */
106
107function long(ms) {
108  return plural(ms, d, 'day')
109    || plural(ms, h, 'hour')
110    || plural(ms, m, 'minute')
111    || plural(ms, s, 'second')
112    || ms + ' ms';
113}
114
115/**
116 * Pluralization helper.
117 */
118
119function plural(ms, n, name) {
120  if (ms < n) return;
121  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
122  return Math.ceil(ms / n) + ' ' + name + 's';
123}