Module: Vpim::Icalendar::Property::Recurrence
Overview
Occurrences are calculated from DTSTART: and RRULE:. If there is not RRULE:, the component recurs only once, at the start time.
Limitations:
Only a single RRULE: is currently supported, this is the most common case.
Implementation of multiple RRULE:s, and RDATE:, EXRULE:, and EXDATE: is on the todo list. Its not a very high priority, because I haven’t seen calendars using the full range of recurrence features, and haven’t received feedback from any users requesting these features. So, if you need it, contact me and implementation will get on the schedule.
Instance Method Summary collapse
-
#occurences ⇒ Object
The times this event occurs, as a Vpim::Rrule.
-
#occurs_in?(t0, t1) ⇒ Boolean
Check if this event overlaps with the time period later than or equal to
t0, but earlier thant1. - #rdates ⇒ Object
Instance Method Details
#occurences ⇒ Object
The times this event occurs, as a Vpim::Rrule.
28 29 30 31 32 33 34 |
# File 'lib/vpim/property/recurrence.rb', line 28 def occurences start = dtstart unless start raise ArgumentError, "Components with no DTSTART: don't have occurences!" end Vpim::Rrule.new(start, propvalue('RRULE')) end |
#occurs_in?(t0, t1) ⇒ Boolean
Check if this event overlaps with the time period later than or equal to t0, but earlier than t1.
38 39 40 |
# File 'lib/vpim/property/recurrence.rb', line 38 def occurs_in?(t0, t1) occurences.each_until(t1).detect { |t| tend = t + (duration || 0); tend > t0 } end |
#rdates ⇒ Object
42 43 44 |
# File 'lib/vpim/property/recurrence.rb', line 42 def rdates Vpim.decode_date_time_list(propvalue('RDATE')) end |