Elixir
ephemeris
Wiederholungsregeln, die sowohl RFC-5545-RRULE als auch einfaches Englisch lesen und schreiben, samt einer Engine, die ihre Termine berechnet.
Absicht
RRULE ist der Standard — portabel, präzise, die Sprache der Kalender — und in einer Konfigurationsdatei unlesbar; einfaches Englisch ist in jeder Hinsicht das Gegenteil. Eine Struktur hinter beiden heißt: Eine Regel wird lesbar geschrieben, portabel gespeichert und in beiden Formen wieder angezeigt, ohne zwei Implementierungen, die sich widersprechen. Eine Regel sagt nur, wann — kein Prozess, kein Timer, keine stillschweigende aktuelle Uhrzeit.
Beispiel
{:ok, rule} = Ephemeris.parse("every last sunday of the month")
Ephemeris.to_rrule(rule) #=> "FREQ=MONTHLY;BYDAY=-1SU"
Ephemeris.to_sentence(rule) #=> "every last Sunday of the month"
Ephemeris.next(rule, ~U[2026-01-01 09:00:00Z])
#=> {:ok, ~U[2026-01-25 09:00:00Z]}Installation
{:ephemeris, "~> 0.1"}