daet
Version:
Minimal immutable date class that supports relative time, calendar time, and plus/minus of different units.
128 lines (127 loc) • 4.64 kB
JavaScript
;
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;
var index_js_1 = require("./index.js");
function rightNow() {
return 'right now';
}
exports.rightNow = rightNow;
function relativeTicks(_a) {
var past = _a.past, ticks = _a.ticks;
return past ? "".concat(ticks, " ago") : "in ".concat(ticks);
}
exports.relativeTicks = relativeTicks;
function seconds(_a) {
var seconds = _a.seconds;
return "".concat(seconds, " ").concat(seconds > 1 ? 'seconds' : 'second');
}
exports.seconds = seconds;
function relativeSeconds(opts) {
var ticks = seconds({ seconds: opts.seconds });
return relativeTicks({ past: opts.past, ticks: ticks });
}
exports.relativeSeconds = relativeSeconds;
function minutes(_a) {
var minutes = _a.minutes;
return "".concat(minutes, " ").concat(minutes > 1 ? 'minutes' : 'minute');
}
exports.minutes = minutes;
function relativeMinutes(opts) {
var ticks = minutes({ minutes: opts.minutes });
return relativeTicks({ past: opts.past, ticks: ticks });
}
exports.relativeMinutes = relativeMinutes;
function hours(_a) {
var hours = _a.hours;
return "".concat(hours, " ").concat(hours > 1 ? 'hours' : 'hour');
}
exports.hours = hours;
function hoursAndMinutes(opts) {
return hours(opts) + (opts.minutes ? ' ' + minutes(opts) : '');
}
exports.hoursAndMinutes = hoursAndMinutes;
function yesterdayOrTommorow(_a) {
var past = _a.past;
return past ? 'yesterday' : 'tomorrow';
}
exports.yesterdayOrTommorow = yesterdayOrTommorow;
function relativeHoursAndMinutes(opts) {
var ticks = hoursAndMinutes({ hours: opts.hours, minutes: opts.minutes });
return relativeTicks({ past: opts.past, ticks: ticks });
}
exports.relativeHoursAndMinutes = relativeHoursAndMinutes;
function relativeDelta(opts) {
if (opts.delta < index_js_1.Minute) {
var seconds_1 = Math.floor(opts.delta / index_js_1.Second);
if (seconds_1)
return relativeSeconds({ past: opts.past, seconds: seconds_1 });
}
var hours = Math.floor(opts.delta / index_js_1.Hour);
var minutes = Math.floor((opts.delta - hours * index_js_1.Hour) / index_js_1.Minute);
if (hours)
return relativeHoursAndMinutes({ past: opts.past, hours: hours, minutes: minutes });
if (minutes)
return relativeMinutes({ past: opts.past, minutes: minutes });
return rightNow();
}
exports.relativeDelta = relativeDelta;
function weekdayThisWeek(_a) {
var weekday = _a.weekday;
return "this ".concat(weekday);
}
exports.weekdayThisWeek = weekdayThisWeek;
function weekdayNextWeek(_a) {
var weekday = _a.weekday;
return "next ".concat(weekday);
}
exports.weekdayNextWeek = weekdayNextWeek;
function fewSeconds(_a) {
var past = _a.past;
return past ? 'a few seconds ago' : 'in a few seconds';
}
exports.fewSeconds = fewSeconds;
function underMinute(_a) {
var past = _a.past;
return past ? 'under a minute ago' : 'in under a minute';
}
exports.underMinute = underMinute;
function earlierOrLaterToday(_a) {
var past = _a.past;
return past ? 'earlier today' : 'later today';
}
exports.earlierOrLaterToday = earlierOrLaterToday;
function earlierOrLater(_a) {
var past = _a.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(_a) {
var past = _a.past, when = _a.when;
return past
? earlierThisWeek()
: weekdayThisWeek({
weekday: when.format('en', {
weekday: 'long',
}),
});
}
exports.relativeThisWeek = relativeThisWeek;
function relativeSecondWeek(_a) {
var past = _a.past, when = _a.when;
return past
? earlierLastWeek()
: weekdayNextWeek({
weekday: when.format('en', {
weekday: 'long',
}),
});
}
exports.relativeSecondWeek = relativeSecondWeek;