arnaucube
arnaucube/raspberryGPIOhtmlserverPublic Self-hosted repository
raspberryGPIOhtmlserver/node_modules/ms/index.js
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  str = '' + str;
 42  if (str.length > 10000) return;
 43  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(str);
 44  if (!match) return;
 45  var n = parseFloat(match[1]);
 46  var type = (match[2] || 'ms').toLowerCase();
 47  switch (type) {
 48    case 'years':
 49    case 'year':
 50    case 'yrs':
 51    case 'yr':
 52    case 'y':
 53      return n * y;
 54    case 'days':
 55    case 'day':
 56    case 'd':
 57      return n * d;
 58    case 'hours':
 59    case 'hour':
 60    case 'hrs':
 61    case 'hr':
 62    case 'h':
 63      return n * h;
 64    case 'minutes':
 65    case 'minute':
 66    case 'mins':
 67    case 'min':
 68    case 'm':
 69      return n * m;
 70    case 'seconds':
 71    case 'second':
 72    case 'secs':
 73    case 'sec':
 74    case 's':
 75      return n * s;
 76    case 'milliseconds':
 77    case 'millisecond':
 78    case 'msecs':
 79    case 'msec':
 80    case 'ms':
 81      return n;
 82  }
 83}
 84
 85/**
 86 * Short format for `ms`.
 87 *
 88 * @param {Number} ms
 89 * @return {String}
 90 * @api private
 91 */
 92
 93function short(ms) {
 94  if (ms >= d) return Math.round(ms / d) + 'd';
 95  if (ms >= h) return Math.round(ms / h) + 'h';
 96  if (ms >= m) return Math.round(ms / m) + 'm';
 97  if (ms >= s) return Math.round(ms / s) + 's';
 98  return ms + 'ms';
 99}
100
101/**
102 * Long format for `ms`.
103 *
104 * @param {Number} ms
105 * @return {String}
106 * @api private
107 */
108
109function long(ms) {
110  return plural(ms, d, 'day')
111    || plural(ms, h, 'hour')
112    || plural(ms, m, 'minute')
113    || plural(ms, s, 'second')
114    || ms + ' ms';
115}
116
117/**
118 * Pluralization helper.
119 */
120
121function plural(ms, n, name) {
122  if (ms < n) return;
123  if (ms < n * 1.5) return Math.floor(ms / n) + ' ' + name;
124  return Math.ceil(ms / n) + ' ' + name + 's';
125}