Files
api/helpers/time/buildTimeString.ts
2023-08-08 13:50:42 -07:00

42 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;