Skip to content

More RRULE extending - #14

Merged
filecage merged 19 commits into
local-timezone-offset-supportfrom
rrule-extending
Feb 27, 2026
Merged

filecage merged 19 commits into
local-timezone-offset-supportfrom
rrule-extending

Conversation

@filecage

@filecage filecage commented Feb 25, 2026 •

Copy link
Copy Markdown
Owner

This PR adds more RRULE functionality. Added support for:

  • BYSETPOS
  • BYMONTHDAY with FREQ=MONTHLY,YEARLY
  • BYDAY with FREQ=MONTHLY
  • BYHOUR, BYMINUTE, BYSECOND for expanding FREQ

Also, support has been completed for:

  • BYMONTH

It also refactors the internal rrule engine, keeping a scoped context instead of a list of dates - which makes it way more efficient, because now only the actual requested dates are generated (at where index-based access isn't required).

Also, fixes some bugs.

This simplifies the expansion by a ton, because it allows concepts like not creating each day of a month only to then select Sundays (for example).

It also simplifies some branches in the code (like: what to do if the occurences array is empty? is it empty because all dates have been filtered or is it empty because no filter has been set?)

Additionally, each expander is in charge of keeping dates sorted, meaning that those who don't require extra sorting just don't have to apply it while those that might create dates out of sorting can apply it.
@filecage
filecage changed the base branch from main to local-timezone-offset-support February 25, 2026 19:49
@filecage
filecage merged commit b3988e1 into local-timezone-offset-support Feb 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant