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
Protocol definitions for the calendar module.
FC/IS rule: protocols are interfaces — no implementation here. Adapters (shell layer) implement these protocols.
Protocol definitions for the calendar module. FC/IS rule: protocols are interfaces — no implementation here. Adapters (shell layer) implement these protocols.
Malli validation schemas for the calendar module.
Malli validation schemas for the calendar module.
ical4j 4.x adapter implementing CalendarAdapterProtocol.
Converts boundary EventData maps ↔ RFC 5545 VCALENDAR strings using net.fortuna.ical4j 4.x. VEvents are built with ZonedDateTime so that TZID parameters are correctly emitted and preserved in round-trips.
Shell layer — may perform I/O via ical4j CalendarBuilder/CalendarOutputter.
ical4j 4.x adapter implementing CalendarAdapterProtocol. Converts boundary EventData maps ↔ RFC 5545 VCALENDAR strings using net.fortuna.ical4j 4.x. VEvents are built with ZonedDateTime so that TZID parameters are correctly emitted and preserved in round-trips. Shell layer — may perform I/O via ical4j CalendarBuilder/CalendarOutputter.
Public API for the calendar library.
Wraps the iCal adapter to keep callers decoupled from ical4j internals. All functions create an adapter internally unless one is injected via opts.
Shell layer — may perform I/O via the ical4j adapter.
Public API for the calendar library. Wraps the iCal adapter to keep callers decoupled from ical4j internals. All functions create an adapter internally unless one is injected via opts. Shell layer — may perform I/O via the ical4j adapter.
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 |