UNPKG

daet

Version:

Minimal immutable date class that supports relative time, calendar time, and plus/minus of different units.

115 lines (114 loc) 4.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.relativeSecondWeek = exports.relativeThisWeek = exports.earlierLastWeek = exports.earlierThisWeek = exports.earlierOrLater = exports.earlierOrLaterToday = exports.underMinute = exports.fewSeconds = exports.weekdayNextWeek = exports.weekdayThisWeek = exports.relativeDelta = exports.relativeHoursAndMinutes = exports.yesterdayOrTommorow = exports.hoursAndMinutes = exports.hours = exports.relativeMinutes = exports.minutes = exports.relativeSeconds = exports.seconds = exports.relativeTicks = exports.rightNow = void 0; const index_js_1 = require("./index.js"); function rightNow() { return 'right now'; } exports.rightNow = rightNow; function relativeTicks({ past, ticks, }) { return past ? `${ticks} ago` : `in ${ticks}`; } exports.relativeTicks = relativeTicks; function seconds({ seconds }) { return `${seconds} ${seconds > 1 ? 'seconds' : 'second'}`; } exports.seconds = seconds; function relativeSeconds(opts) { const ticks = seconds({ seconds: opts.seconds }); return relativeTicks({ past: opts.past, ticks }); } exports.relativeSeconds = relativeSeconds; function minutes({ minutes }) { return `${minutes} ${minutes > 1 ? 'minutes' : 'minute'}`; } exports.minutes = minutes; function relativeMinutes(opts) { const ticks = minutes({ minutes: opts.minutes }); return relativeTicks({ past: opts.past, ticks }); } exports.relativeMinutes = relativeMinutes; function hours({ hours }) { return `${hours} ${hours > 1 ? 'hours' : 'hour'}`; } exports.hours = hours; function hoursAndMinutes(opts) { return hours(opts) + (opts.minutes ? ' ' + minutes(opts) : ''); } exports.hoursAndMinutes = hoursAndMinutes; function yesterdayOrTommorow({ past }) { return past ? 'yesterday' : 'tomorrow'; } exports.yesterdayOrTommorow = yesterdayOrTommorow; function relativeHoursAndMinutes(opts) { const ticks = hoursAndMinutes({ hours: opts.hours, minutes: opts.minutes }); return relativeTicks({ past: opts.past, ticks }); } exports.relativeHoursAndMinutes = relativeHoursAndMinutes; function relativeDelta(opts) { if (opts.delta < index_js_1.Minute) { const seconds = Math.floor(opts.delta / index_js_1.Second); if (seconds) return relativeSeconds({ past: opts.past, seconds }); } const hours = Math.floor(opts.delta / index_js_1.Hour); const minutes = Math.floor((opts.delta - hours * index_js_1.Hour) / index_js_1.Minute); if (hours) return relativeHoursAndMinutes({ past: opts.past, hours, minutes }); if (minutes) return relativeMinutes({ past: opts.past, minutes }); return rightNow(); } exports.relativeDelta = relativeDelta; function weekdayThisWeek({ weekday }) { return `this ${weekday}`; } exports.weekdayThisWeek = weekdayThisWeek; function weekdayNextWeek({ weekday }) { return `next ${weekday}`; } exports.weekdayNextWeek = weekdayNextWeek; function fewSeconds({ past }) { return past ? 'a few seconds ago' : 'in a few seconds'; } exports.fewSeconds = fewSeconds; function underMinute({ past }) { return past ? 'under a minute ago' : 'in under a minute'; } exports.underMinute = underMinute; function earlierOrLaterToday({ past }) { return past ? 'earlier today' : 'later today'; } exports.earlierOrLaterToday = earlierOrLaterToday; function earlierOrLater({ past }) { return past ? 'sometime earlier' : 'sometime later'; } exports.earlierOrLater = earlierOrLater; function earlierThisWeek() { return 'earlier this week'; } exports.earlierThisWeek = earlierThisWeek; function earlierLastWeek() { return 'earlier last week'; } exports.earlierLastWeek = earlierLastWeek; function relativeThisWeek({ past, when, }) { return past ? earlierThisWeek() : weekdayThisWeek({ weekday: when.format('en', { weekday: 'long', }), }); } exports.relativeThisWeek = relativeThisWeek; function relativeSecondWeek({ past, when, }) { return past ? earlierLastWeek() : weekdayNextWeek({ weekday: when.format('en', { weekday: 'long', }), }); } exports.relativeSecondWeek = relativeSecondWeek;