Class: Hiccup::Enumerable::ScheduleEnumerator

Inherits:
Object
  • Object
show all
Defined in:
lib/hiccup/enumerable/schedule_enumerator.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(schedule, seed_date) ⇒ ScheduleEnumerator

Returns a new instance of ScheduleEnumerator.



16
17
18
19
20
21
22
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 16

def initialize(schedule, seed_date)
  @schedule = schedule
  @ends = schedule.ends?
  @seed_date = seed_date
  @seed_date = seed_date.to_date if seed_date.respond_to?(:to_date)
  @cursor = nil
end

Instance Attribute Details

#cursorObject (readonly)

Returns the value of attribute cursor.



24
25
26
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 24

def cursor
  @cursor
end

#scheduleObject (readonly)

Returns the value of attribute schedule.



24
25
26
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 24

def schedule
  @schedule
end

#seed_dateObject (readonly)

Returns the value of attribute seed_date.



24
25
26
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 24

def seed_date
  @seed_date
end

Class Method Details

.enum_for(schedule) ⇒ Object



5
6
7
8
9
10
11
12
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 5

def self.enum_for(schedule)
  case schedule.kind
  when :weekly then WeeklyEnumerator
  when :annually then AnnuallyEnumerator
  when :monthly then MonthlyEnumerator.for(schedule)
  else NeverEnumerator
  end
end

Instance Method Details

#ends?Boolean

Returns:

  • (Boolean)


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

def ends?
  @ends
end

#nextObject



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

def next
  @cursor = started? ? advance! : first_occurrence_on_or_after(seed_start_date)
  return nil if @cursor && ends? && @cursor > end_date
  @cursor
end

#prevObject



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

def prev
  @cursor = started? ? rewind! : first_occurrence_on_or_before(seed_end_date)
  return nil if @cursor && @cursor < start_date
  @cursor
end

#started?Boolean

Returns:

  • (Boolean)


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

def started?
  !@cursor.nil?
end