Module: Hiccup::Enumerable

Defined in:
lib/hiccup/enumerable.rb,
lib/hiccup/enumerable/never_enumerator.rb,
lib/hiccup/enumerable/weekly_enumerator.rb,
lib/hiccup/enumerable/monthly_enumerator.rb,
lib/hiccup/enumerable/annually_enumerator.rb,
lib/hiccup/enumerable/schedule_enumerator.rb,
lib/hiccup/enumerable/monthly_date_enumerator.rb

Defined Under Namespace

Classes: AnnuallyEnumerator, MonthlyDateEnumerator, MonthlyEnumerator, NeverEnumerator, ScheduleEnumerator, WeeklyEnumerator

Instance Method Summary collapse

Instance Method Details

#enumeratorObject



13
14
15
# File 'lib/hiccup/enumerable.rb', line 13

def enumerator
  ScheduleEnumerator.enum_for(self)
end

#first_n_occurrences(limit) ⇒ Object



75
76
77
# File 'lib/hiccup/enumerable.rb', line 75

def first_n_occurrences(limit)
  n_occurrences_on_or_after(limit, start_date)
end

#first_occurrence_after(date) ⇒ Object Also known as: next_occurrence_after



34
35
36
# File 'lib/hiccup/enumerable.rb', line 34

def first_occurrence_after(date)
  first_occurrence_on_or_after(date.to_date + 1)
end

#first_occurrence_before(date) ⇒ Object



45
46
47
# File 'lib/hiccup/enumerable.rb', line 45

def first_occurrence_before(date)
  first_occurrence_on_or_before(date.to_date - 1)
end

#first_occurrence_on_or_after(date) ⇒ Object



30
31
32
# File 'lib/hiccup/enumerable.rb', line 30

def first_occurrence_on_or_after(date)
  enumerator.new(self, date).next
end

#first_occurrence_on_or_before(date) ⇒ Object



41
42
43
# File 'lib/hiccup/enumerable.rb', line 41

def first_occurrence_on_or_before(date)
  enumerator.new(self, date).prev
end

#n_occurrences_after(limit, date) ⇒ Object



79
80
81
# File 'lib/hiccup/enumerable.rb', line 79

def n_occurrences_after(limit, date)
  n_occurrences_on_or_after(limit, date.to_date + 1)
end

#n_occurrences_before(limit, date) ⇒ Object



60
61
62
# File 'lib/hiccup/enumerable.rb', line 60

def n_occurrences_before(limit, date)
  n_occurrences_on_or_before(limit, date.to_date - 1)
end

#n_occurrences_on_or_after(limit, date) ⇒ Object



83
84
85
86
87
88
89
90
# File 'lib/hiccup/enumerable.rb', line 83

def n_occurrences_on_or_after(limit, date)
  occurrences = []
  enum = enumerator.new(self, date)
  while (occurrence = enum.next) && occurrences.length < limit
    occurrences << occurrence
  end
  occurrences
end

#n_occurrences_on_or_before(limit, date) ⇒ Object



64
65
66
67
68
69
70
71
# File 'lib/hiccup/enumerable.rb', line 64

def n_occurrences_on_or_before(limit, date)
  occurrences = []
  enum = enumerator.new(self, date)
  while (occurrence = enum.prev) && occurrences.length < limit
    occurrences << occurrence
  end
  occurrences
end

#occurrences_between(earlier_date, later_date) ⇒ Object



19
20
21
22
23
24
25
26
# File 'lib/hiccup/enumerable.rb', line 19

def occurrences_between(earlier_date, later_date)
  occurrences = []
  enum = enumerator.new(self, earlier_date)
  while (occurrence = enum.next) && (occurrence <= later_date)
    occurrences << occurrence
  end
  occurrences
end

#occurs_on(date) ⇒ Object Also known as: contains?, predicts?



51
52
53
54
# File 'lib/hiccup/enumerable.rb', line 51

def occurs_on(date)
  date = date.to_date
  date == first_occurrence_on_or_after(date)
end