rittenhop-dev/versions/5.94.2/node_modules/human-interval/index.js
2024-09-23 19:40:12 -04:00

49 lines
1.0 KiB
JavaScript

const numbered = require('numbered');
const units = {};
units.second = 1000;
units.minute = units.second * 60;
units.hour = units.minute * 60;
units.day = units.hour * 24;
units.week = units.day * 7;
units.month = units.day * 30;
units.year = units.day * 365;
const regexp = /(second|minute|hour|day|week|month|year)s?/;
const humanInterval = time => {
if (!time || typeof time === 'number') {
return time;
}
let result = Number.NaN;
time = time.replace(/([^a-z\d.-]|and)+/g, ' ');
for (;;) {
const match = time.match(regexp);
if (!match) {
return result;
}
const matchedNumber = time.slice(0, match.index).trim();
const unit = units[match[1]];
let number = 1;
if (matchedNumber.length > 0) {
number = Number.parseFloat(matchedNumber);
if (Number.isNaN(number)) {
number = numbered.parse(matchedNumber);
}
}
if (Number.isNaN(result)) {
result = 0;
}
result += number * unit;
time = time.slice(match.index + match[0].length);
}
};
module.exports = humanInterval;