<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs/tests/test-calendar-sync--get-property.el, branch main</title>
<subtitle>My Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs/atom?h=main</id>
<link rel='self' href='https://git.cjennings.net/dotemacs/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/'/>
<updated>2026-02-05T22:10:09+00:00</updated>
<entry>
<title>fix(calendar-sync): fix heading order, continuation lines, and exception text cleaning</title>
<updated>2026-02-05T22:10:09+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-05T22:10:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=1039eca8800959a6a889f3b6d94a4742b794160c'/>
<id>urn:sha1:1039eca8800959a6a889f3b6d94a4742b794160c</id>
<content type='text'>
Three bugs found during manual verification of calendar sync output:

1. Heading/timestamp order reversed in event-to-org — nreverse pattern
   put timestamp before the org heading. Swap initial list order.

2. get-property continuation line regex broken — the ^ anchor in
   "^\n[ \t]" prevented matching at the correct position, truncating
   long DESCRIPTION values at the first ICS line fold. Remove anchor,
   add explicit position check (matching get-all-property-lines pattern).

3. collect-recurrence-exceptions didn't clean text — exception instances
   got raw ICS text (literal \n, HTML tags) replacing the cleaned base
   event text. Wrap summary/description/location in clean-text.
</content>
</entry>
<entry>
<title>feat(calendar-sync): add event details — attendees, organizer, status, URL</title>
<updated>2026-02-05T21:13:57+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2026-02-05T21:13:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=d226f80a376c97a6adbcbc800be647cb69f0b50b'/>
<id>urn:sha1:d226f80a376c97a6adbcbc800be647cb69f0b50b</id>
<content type='text'>
Add ICS text unescaping (RFC 5545), HTML stripping, and new fields
(attendees/status, organizer, meeting URL) to calendar-sync.el.
event-to-org now outputs org property drawers. 88 new tests across
10 test files, 146/146 pass. Also fix pre-existing test require
order and keymap guard issues.
</content>
</entry>
<entry>
<title>feat(calendar-sync): Add RRULE support and refactor expansion functions</title>
<updated>2025-11-18T18:54:25+00:00</updated>
<author>
<name>Craig Jennings</name>
<email>c@cjennings.net</email>
</author>
<published>2025-11-18T18:54:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs/commit/?id=ca5a891b6259e685a1631c20916a762bdc54a4e5'/>
<id>urn:sha1:ca5a891b6259e685a1631c20916a762bdc54a4e5</id>
<content type='text'>
Implements complete recurring event (RRULE) expansion for Google Calendar
with rolling window approach and comprehensive test coverage.

Features:
- RRULE expansion for DAILY, WEEKLY, MONTHLY, YEARLY frequencies
- Support for INTERVAL, BYDAY, UNTIL, and COUNT parameters
- Rolling window: -3 months to +12 months from current date
- Fixed COUNT parameter bug (events no longer appear beyond their limit)
- Fixed TZID parameter parsing (supports timezone-specific timestamps)
- Replaced debug messages with cj/log-silently

Refactoring:
- Extracted helper functions to eliminate code duplication:
  - calendar-sync--date-to-time: Date to time conversion
  - calendar-sync--before-date-p: Date comparison
  - calendar-sync--create-occurrence: Event occurrence creation
- Refactored all expansion functions to use helper functions
- Reduced code duplication across daily/weekly/monthly/yearly expansion

Testing:
- 68 tests total across 5 test files
- Unit tests for RRULE parsing, property extraction, weekly expansion
- Integration tests for complete RRULE workflow
- Tests for helper functions validating refactored code
- All tests passing
</content>
</entry>
</feed>
