<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dotemacs.git/tests/test-calendar-sync--get-property.el, branch v0.7.2</title>
<subtitle>my Emacs configuration
</subtitle>
<id>https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2</id>
<link rel='self' href='https://git.cjennings.net/dotemacs.git/atom?h=v0.7.2'/>
<link rel='alternate' type='text/html' href='https://git.cjennings.net/dotemacs.git/'/>
<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.git/commit/?id=00ddf74b232b0762baa7826e62f6765d087041fb'/>
<id>urn:sha1:00ddf74b232b0762baa7826e62f6765d087041fb</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.git/commit/?id=b7cb1c51e5663419344d8b55766635801f3ee4c8'/>
<id>urn:sha1:b7cb1c51e5663419344d8b55766635801f3ee4c8</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.git/commit/?id=2da0e8001ae390920f31f1db5e56aa2ed68bf1be'/>
<id>urn:sha1:2da0e8001ae390920f31f1db5e56aa2ed68bf1be</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

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude &lt;noreply@anthropic.com&gt;
</content>
</entry>
</feed>
