lean4-code-actions
Version:
Refactorings and snippets for Lean 4
27 lines (22 loc) • 1.14 kB
text/typescript
import { strict as assert } from 'assert'
import { Friday, Monday, Saturday, Sunday } from 'libs/utils/date.constant'
import { HourNumbers, IANAZone, WeekdayNumbers } from 'luxon'
import { parseDateTimeFilter } from '../DateTimeFilter'
import { Timezone } from '../TimezoneSchema'
export function hoursDaysDateTimeFilter(fromHour: HourNumbers, toHour: HourNumbers, fromDay: WeekdayNumbers, toDay: WeekdayNumbers, timezone: Timezone) {
assert(IANAZone.isValidZone(timezone))
return parseDateTimeFilter({
weekday: { from: fromDay, to: toDay, fromInclusive: true, toInclusive: true },
hour: { from: fromHour, to: toHour, fromInclusive: true, toInclusive: false },
timezone,
})
}
export function workHoursDateTimeFilter(fromHour: HourNumbers, toHour: HourNumbers, timezone: Timezone) {
return hoursDaysDateTimeFilter(fromHour, toHour, Monday, Friday, timezone)
}
export function workdayDateTimeFilter(timezone: Timezone) {
return hoursDaysDateTimeFilter(9, 18, Monday, Friday, timezone)
}
export function weekendDateTimeFilter(timezone: Timezone) {
return hoursDaysDateTimeFilter(1, 23, Saturday, Sunday, timezone)
}