Conflict detection for calendar events — pure functions, no I/O.
Detects overlapping events by expanding recurring events to individual occurrences and performing pairwise interval overlap checks.
FC/IS rule: no I/O, no logging, no exceptions.
Conflict detection for calendar events — pure functions, no I/O. Detects overlapping events by expanding recurring events to individual occurrences and performing pairwise interval overlap checks. FC/IS rule: no I/O, no logging, no exceptions.
Event type registry and pure helper functions.
Provides the defevent macro for declaring event type definitions as data,
an in-process registry backed by an atom, and pure helper functions
for working with EventData maps.
FC/IS rule: no I/O here. All side effects live in the shell layer.
Event type registry and pure helper functions. Provides the `defevent` macro for declaring event type definitions as data, an in-process registry backed by an atom, and pure helper functions for working with EventData maps. FC/IS rule: no I/O here. All side effects live in the shell layer.
RRULE parsing and occurrence expansion — pure functions, no I/O.
Uses ical4j's net.fortuna.ical4j.model.Recur for RFC 5545 RRULE parsing. All date arithmetic uses java.time with explicit timezone handling so that DST transitions are respected (e.g. a 9:00 AM recurring event stays at 9:00 AM local time even when UTC offset changes).
ical4j 4.x API note: Recur.getDates accepts java.time.ZonedDateTime seeds and returns List<ZonedDateTime>, giving correct DST-aware expansion.
FC/IS rule: no I/O, no logging, no exceptions thrown for valid inputs.
RRULE parsing and occurrence expansion — pure functions, no I/O. Uses ical4j's net.fortuna.ical4j.model.Recur for RFC 5545 RRULE parsing. All date arithmetic uses java.time with explicit timezone handling so that DST transitions are respected (e.g. a 9:00 AM recurring event stays at 9:00 AM local time even when UTC offset changes). ical4j 4.x API note: Recur.getDates accepts java.time.ZonedDateTime seeds and returns List<ZonedDateTime>, giving correct DST-aware expansion. FC/IS rule: no I/O, no logging, no exceptions thrown for valid inputs.
Pure Hiccup UI components for calendar views.
All functions are pure — they receive data and return Hiccup structures. No side effects, no I/O, no HTMX-specific markup. Composable into any Ring handler or Hiccup template.
Components: event-badge — colored pill with title and time day-cell — single day grid cell with event badges month-view — full month calendar grid week-view — 7-column week grid with hourly rows mini-calendar — compact month navigator for sidebars
Pure Hiccup UI components for calendar views. All functions are pure — they receive data and return Hiccup structures. No side effects, no I/O, no HTMX-specific markup. Composable into any Ring handler or Hiccup template. Components: event-badge — colored pill with title and time day-cell — single day grid cell with event badges month-view — full month calendar grid week-view — 7-column week grid with hourly rows mini-calendar — compact month navigator for sidebars
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |