Sha256: 35f4062f0eefea48d7c46f9eae99da9937f70be45847584461e59bf5291e66c9

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 KB

Contents

=begin
  Copyright (C) 2006 Sam Roberts

  This library is free software; you can redistribute it and/or modify it
  under the same terms as the ruby language itself, see the file COPYING for
  details.
=end

module Vpim
  class Icalendar
    module Property

      # 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.
      module Recurrence
        # The times this event occurs, as a Vpim::Rrule.
        def occurences
          start = dtstart
          unless start
            raise ArgumentError, "Components with no DTSTART: don't have occurences!"
          end
          Vpim::Rrule.new(start, propvalue('RRULE'))
        end

        # Check if this event overlaps with the time period later than or equal to +t0+, but
        # earlier than +t1+.
        def occurs_in?(t0, t1)
          occurences.each_until(t1).detect { |t| tend = t + (duration || 0); tend > t0 }
        end

      end
    end
  end
end


Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vpim-0.357 lib/vpim/property/recurrence.rb
vpim-0.360 lib/vpim/property/recurrence.rb