diff --git a/.vscode/settings.json b/.vscode/settings.json index 7185d2b..b873f92 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,6 +1,7 @@ { "deno.enable": true, "cSpell.words": [ + "BYDAY", "CALSCALE", "DTEND", "DTSTAMP", diff --git a/mod.ts b/mod.ts index 6169c08..c958a78 100644 --- a/mod.ts +++ b/mod.ts @@ -1,2 +1,3 @@ export { Calendar, Event } from './main.ts'; export type { EventConfig } from './main.ts'; +export type { Day, RecurrenceRule } from './rrule.ts'; diff --git a/rrule.ts b/rrule.ts index 057c93d..e22bd0e 100644 --- a/rrule.ts +++ b/rrule.ts @@ -5,20 +5,24 @@ export interface RecurrenceRule { until?: DateData; interval?: number; count?: number; + byDay?: Day[]; } export function parseRRule(rrule: RecurrenceRule | undefined) { if (rrule === undefined) return; - const { freq, until, interval, count } = rrule; + const { freq, until, interval, count, byDay } = rrule; return [ ['FREQ', freq], ['UNTIL', parseDate(until)], ['INTERVAL', interval], ['COUNT', count], + ['BYDAY', byDay ? byDay.join() : undefined], ] .filter(line => line[1] !== undefined) .map(line => `${line[0]}=${line[1]};`) .join(''); } + +export type Day = 'MO' | 'TU' | 'WE' | 'TH' | 'FR' | 'SA' | 'SU';