///|
fn main {
  match @mooncal.parse(@mooncal.sample_ics) {
    Ok(calendar) => {
      let from = @mooncal.DateTime(2026, 8, 1)
      let until = @mooncal.DateTime(2026, 8, 31, hour=23, minute=59, second=59)
      match @mooncal.occurrences_between(calendar, from, until, limit=32) {
        Ok(items) => {
          println("expanded occurrences: \{items.length()}")
          println(@mooncal.occurrences_to_json(items))
        }
        Err(err) => println("expand error: \{@mooncal.error_to_text(err)}")
      }
      let due = @mooncal.tasks_due_on_date(
        calendar,
        @mooncal.DateTime(2026, 8, 18),
      )
      let busy = @mooncal.busy_periods_between(calendar, from, until)
      println("tasks due on 2026-08-18: \{due.length()}")
      println("busy periods in August: \{busy.length()}")
    }
    Err(err) => println("parse error: \{@mooncal.error_to_text(err)}")
  }
}