UNPKG

@heinlein-video/rrule

Version:

rrule fork. Includes the src/ folder for typescript sourceMaps

52 lines (43 loc) 1.23 kB
// ============================================================================= // Weekday // ============================================================================= export type WeekdayStr = 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA' | 'SU' export const ALL_WEEKDAYS: WeekdayStr[] = [ 'MO', 'TU', 'WE', 'TH', 'FR', 'SA', 'SU', ] export class Weekday { public readonly weekday: number public readonly n?: number constructor(weekday: number, n?: number) { if (n === 0) throw new Error("Can't create weekday with n == 0") this.weekday = weekday this.n = n } static fromStr(str: WeekdayStr): Weekday { return new Weekday(ALL_WEEKDAYS.indexOf(str)) } // __call__ - Cannot call the object directly, do it through // e.g. RRule.TH.nth(-1) instead, nth(n: number) { return this.n === n ? this : new Weekday(this.weekday, n) } // __eq__ equals(other: Weekday) { return this.weekday === other.weekday && this.n === other.n } // __repr__ toString() { let s: string = ALL_WEEKDAYS[this.weekday] if (this.n) s = (this.n > 0 ? '+' : '') + String(this.n) + s return s } getJsWeekday() { return this.weekday === 6 ? 0 : this.weekday + 1 } }