diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-29 05:23:56 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-29 05:23:56 -0400 |
| commit | 0a0d6ceb872771e9538464f623907b21a21818f5 (patch) | |
| tree | 86f23d99c0ec897b0f84c0ee5c975d5631703a67 /modules/test-runner.el | |
| parent | 7779cda6a3d95da9c4b4f7c0c242ddae8fd8b0c4 (diff) | |
| download | dotemacs-0a0d6ceb872771e9538464f623907b21a21818f5.tar.gz dotemacs-0a0d6ceb872771e9538464f623907b21a21818f5.zip | |
refactor: split calendar-sync.el into layered modules
Break the 1724-line calendar-sync.el into a thin public face plus four layered libraries, moving every function verbatim so behavior and public names are unchanged:
- calendar-sync-ics.el — base parsing: RFC 5545 text cleaning, VEVENT property extraction, attendee/organizer/URL parsing, timezone and timestamp conversion, date arithmetic, single-event parsing. Depends on neither of the other new modules.
- calendar-sync-recurrence.el — RRULE/EXDATE/RECURRENCE-ID expansion.
- calendar-sync-org.el — Org rendering and atomic file output.
- calendar-sync-source.el — sync state and persistence, async .ics fetch, the batch conversion worker, and the Google Calendar API path.
calendar-sync.el keeps configuration, the parse orchestrator, sync dispatch, the user commands, the timer, and the C-; g keymap, and requires the four layers. Each layer forward-declares the config defvars it reads, so no layer requires the top module back. The batch worker loads the whole graph, so source forward-declares the two functions it calls there.
Every public name is preserved, so all 574 existing calendar-sync tests pass unchanged through the require chain. The four new modules carry the load-graph and package headers and join the header-contract allowlist.
Claude-Session: https://claude.ai/code/session_014fyKMTTqLrZpL3rDF3dYc3
Diffstat (limited to 'modules/test-runner.el')
0 files changed, 0 insertions, 0 deletions
