Skip to content

Complete recurrence generation#45

Merged
aseigo merged 96 commits into
masterfrom
feature/full-recurrence
Apr 22, 2026
Merged

Complete recurrence generation#45
aseigo merged 96 commits into
masterfrom
feature/full-recurrence

Conversation

@aseigo

@aseigo aseigo commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

This PR replaces the recurrence implementation with a fully implemented RFC5545 RRULE implementation. Accepts both bare ICal.Recurrence structs as well as events, todos, and journals.

All example RRULES from RFC5545 have been added to the test suite for conformance. Most recurrences take <200 microsends to fill, though a few take a couple milliseconds. Probably room for further optimizations, but this at least works.

This also bumps the version to 2.0.0, improves documentation, and updates the CHANGELOG.md file for release readiness.

aseigo and others added 30 commits April 21, 2026 23:30
this enforces uniqueness, and sorts for later ease of use in
recurrence calculations

some entries, such as the order of the weekday entries (if any),
can depend on OTHER entries such as the weekday start entry
this simplifies a number of function heads and allows generate_set/2 to
easily be called repeatedly by catching the state for later use
aseigo added 24 commits April 22, 2026 08:56
this prevents infinite looping in streams
fixes generation of invalid dates
instead of setting the date components on the original datetime,
set the time components on the new (shifted) datetime. this way when the
timezone changes (e.g. EDT -> EST) due to shifting the day, that change
is retained.
using [new_date | acc] is fine as the list always gets sorted
later anyways
@aseigo aseigo self-assigned this Apr 22, 2026
@aseigo aseigo merged commit 9c09e03 into master Apr 22, 2026
5 checks passed
@aseigo aseigo deleted the feature/full-recurrence branch April 22, 2026 11:19
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