Skip to content

Instantly share code, notes, and snippets.

@farski
Created March 4, 2011 00:53
Show Gist options
  • Save farski/853947 to your computer and use it in GitHub Desktop.
Save farski/853947 to your computer and use it in GitHub Desktop.
#!/usr/local/bin/macruby
framework 'calendarstore'
range = Time.local(Time.now.year, Time.now.mon, Time.now.day)..(Time.local(Time.now.year, Time.now.mon, Time.now.day) + (31 * 3600 * 24))
events = CalCalendarStore.defaultCalendarStore.eventsWithPredicate(CalCalendarStore.eventPredicateWithStartDate(NSDate.dateWithString(range.begin.to_s), endDate:NSDate.dateWithString(range.end.to_s), calendars:CalCalendarStore.defaultCalendarStore.calendars))[0,7]
events.each_with_index do |event, i|
event.startDate, output = Time.at(event.startDate.timeIntervalSince1970), Array.new
if (!events[i-1] || (event.startDate.day != Time.at(events[i-1].startDate.timeIntervalSince1970).day))
output << case
when (event.startDate.day == Time.now.day) then "tTODAY"
when (event.startDate.day == (Time.now.day + 1)) then "tTOMORROW"
else "t#{event.startDate.strftime("%A %B %d").upcase} (#{(event.startDate.day - Time.now.day)} days away)"
end
output << "n"
end
output << case
when (event.startDate <= Time.now && event.endDate >= Time.now && !event.isAllDay) then " •"
when (event.startDate - Time.now < (3600 * 5)) && (event.startDate - Time.now ) > 0 && !event.isAllDay then " -"
else ""
end
output << (event.isAllDay ? "t ∞ t" : event.startDate.strftime("%t%R%t"))
output << event.title
output << " @ #{event.location}" if event.location && !event.location.empty?
output << ((events[i+1] && event.startDate.day == Time.at(events[i+1].startDate.timeIntervalSince1970).day) ? "n" : "nn")
puts output.join
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment