Sha256: a852477b1fb17e01a1f5ebd69f73cdd798cf8dae4d2d39d8d62b5b1ecde33eb0

Contents?: true

Size: 1.31 KB

Versions: 1

Compression:

Stored size: 1.31 KB

Contents

module RiCal
  class PropertyValue
    class RecurrenceRule < PropertyValue
      class OccurrenceIncrementer # :nodoc:
        class ByMonthIncrementer < ListIncrementer #:nodoc:

          def self.for_rrule(rrule)
            conditional_incrementer(rrule, :bymonth, MonthlyIncrementer)
          end

          def occurrences_for(date_time)
            if contains_daily_incrementer?
              list.map {|value| date_time.change(:month => value, :day => 1)}
            else
              list.map {|value| date_time.in_month(value)}
            end
          end

          def range_advance(date_time)
            advance_year(date_time)
          end

          def start_of_cycle(date_time)
            if contains_daily_incrementer?
              date_time.change(:month => 1, :day => 1)
            else
              date_time.change(:month => 1)
            end
          end

          def varying_time_attribute
            :month
          end

          def advance_cycle(date_time)
            if contains_daily_incrementer?
              first_day_of_year(advance_year(date_time))
            else
              advance_year(date_time).change(:month => 1)
            end
          end

          def end_of_occurrence(date_time)
            date_time.end_of_month
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
friflaj_ri_cal-0.9.0 lib/ri_cal/property_value/recurrence_rule/occurrence_incrementer/by_month_incrementer.rb