diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:38:50 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-05-28 00:40:43 +0200 |
commit | 7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch) | |
tree | 6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/pretty-ms/index.js | |
parent | 963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff) |
add linting (and some initial fixes)
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(' '); +}; |