Files
api/helpers/time/buildTimeString.ts
2023-08-07 17:51:34 -07:00

43 lines
1.3 KiB
TypeScript

import { TimeStringsObject } from '~/types/time';
const buildStringFromValues = ({
years, months, days, hours, minutes, seconds, firstDateWasLater, displaySeconds,
}: TimeStringsObject) => {
const result = [];
type DateStrings = {
[key: string]: string;
};
const dateStrings: DateStrings = {
year: 'year',
years: 'years',
month: 'month',
months: 'months',
day: 'day',
days: 'days',
hour: 'hour',
hours: 'hours',
minute: 'minute',
minutes: 'minutes',
second: 'second',
seconds: 'seconds',
firstDateWasLater: 'ago',
delimiter: ' ',
};
const pluralize = (num: number, word: string) => {
const index = word + (num === 1 ? '' : 's');
return `${num} ${dateStrings[index]}`;
};
if (years) { result.push(pluralize(years, 'year')); }
if (months) { result.push(pluralize(months, 'month')); }
if (days) { result.push(pluralize(days, 'day')); }
if (hours) { result.push(pluralize(hours, 'hour')); }
if (minutes) { result.push(pluralize(minutes, 'minute')); }
if (seconds && ((!years && !months && !days && !hours && !minutes) || displaySeconds)) { result.push(pluralize(seconds, 'second')); }
if (firstDateWasLater) { result.push(dateStrings.firstDateWasLater); }
return result.join(dateStrings.delimiter);
};
export default buildStringFromValues;