Class: Hiccup::Enumerable::ScheduleEnumerator
- Inherits:
-
Object
- Object
- Hiccup::Enumerable::ScheduleEnumerator
- Defined in:
- lib/hiccup/enumerable/schedule_enumerator.rb
Direct Known Subclasses
AnnuallyEnumerator, MonthlyEnumerator, NeverEnumerator, WeeklyEnumerator
Instance Attribute Summary collapse
-
#cursor ⇒ Object
readonly
Returns the value of attribute cursor.
-
#schedule ⇒ Object
readonly
Returns the value of attribute schedule.
-
#seed_date ⇒ Object
readonly
Returns the value of attribute seed_date.
Class Method Summary collapse
Instance Method Summary collapse
- #ends? ⇒ Boolean
-
#initialize(schedule, seed_date) ⇒ ScheduleEnumerator
constructor
A new instance of ScheduleEnumerator.
- #next ⇒ Object
- #prev ⇒ Object
- #started? ⇒ Boolean
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
#cursor ⇒ Object (readonly)
Returns the value of attribute cursor.
24 25 26 |
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 24 def cursor @cursor end |
#schedule ⇒ Object (readonly)
Returns the value of attribute schedule.
24 25 26 |
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 24 def schedule @schedule end |
#seed_date ⇒ Object (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
46 47 48 |
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 46 def ends? @ends end |
#next ⇒ Object
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 |
#prev ⇒ Object
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
42 43 44 |
# File 'lib/hiccup/enumerable/schedule_enumerator.rb', line 42 def started? !@cursor.nil? end |