diff options
Diffstat (limited to 'node_modules/pretty-ms/index.js')
-rw-r--r-- | node_modules/pretty-ms/index.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/node_modules/pretty-ms/index.js b/node_modules/pretty-ms/index.js new file mode 100644 index 000000000..74aadf440 --- /dev/null +++ b/node_modules/pretty-ms/index.js @@ -0,0 +1,47 @@ +'use strict'; +var parseMs = require('parse-ms'); +var plur = require('plur'); +var isFinitePonyfill = require('is-finite'); + +module.exports = function (ms, opts) { + if (!isFinitePonyfill(ms)) { + throw new TypeError('Expected a finite number'); + } + + opts = opts || {}; + + if (ms < 1000) { + var msDecimalDigits = typeof opts.msDecimalDigits === 'number' ? opts.msDecimalDigits : 0; + return (msDecimalDigits ? ms.toFixed(msDecimalDigits) : Math.ceil(ms)) + (opts.verbose ? ' ' + plur('millisecond', Math.ceil(ms)) : 'ms'); + } + + var ret = []; + + var add = function (val, long, short, valStr) { + if (val === 0) { + return; + } + + var postfix = opts.verbose ? ' ' + plur(long, val) : short; + + ret.push((valStr || val) + postfix); + }; + + var parsed = parseMs(ms); + + add(parsed.days, 'day', 'd'); + add(parsed.hours, 'hour', 'h'); + add(parsed.minutes, 'minute', 'm'); + + if (opts.compact) { + add(parsed.seconds, 'second', 's'); + return '~' + ret[0]; + } + + var sec = ms / 1000 % 60; + var secDecimalDigits = typeof opts.secDecimalDigits === 'number' ? opts.secDecimalDigits : 1; + var secStr = sec.toFixed(secDecimalDigits).replace(/\.0$/, ''); + add(sec, 'second', 's', secStr); + + return ret.join(' '); +}; |