Sha256: 58dea31bb1447be78fdfb6ebd814a02a2de41dc62246604a9170658ffdaf50b4
Contents?: true
Size: 1.9 KB
Versions: 1
Compression:
Stored size: 1.9 KB
Contents
# -*- encoding : utf-8 -*- =begin Copyright (C) 2008 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 require "enumerator" module Vpim class Icalendar module Property # Occurrences are calculated from DTSTART and RRULE. If there is no # RRULE, the component occurs only once, at the start time. # # Limitations: # # Only a single RRULE: is currently supported, this is the most common # case. module Recurrence def rrule #:nodoc: start = dtstart unless start raise ArgumentError, "Components without a DTSTART don't have occurrences!" end Vpim::Rrule.new(start, propvalue('RRULE')) end # The times this components occurs. If a block is not provided, returns # an enumerator. # # Occurrences may be infinite, +dountil+ can be provided to limit the # iterations, see Rrule#each. def occurrences(dountil = nil, &block) #:yield: occurrence time rr = rrule unless block_given? return Enumerable::Enumerator.new(self, :occurrences, dountil) end rr.each(dountil, &block) end alias occurences occurrences #:nodoc: backwards compatibility # True if this components occurs in a time period later than +t0+, but # earlier than +t1+. def occurs_in?(t0, t1) # TODO - deprecate this, its a hack occurrences(t1).detect do |tend| if respond_to? :duration tend += duration || 0 end tend >= t0 end end def rdates #:nodoc: # TODO - this is a hack, remove it Vpim.decode_date_time_list(propvalue('RDATE')) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
vpim-13.11.11 | lib/vpim/property/recurrence.rb |