Class: Zmanim::Limudim::Cycle
- Inherits:
-
Object
- Object
- Zmanim::Limudim::Cycle
- Defined in:
- lib/zmanim/limudim/cycle.rb
Instance Attribute Summary collapse
-
#end_date ⇒ Object
readonly
Returns the value of attribute end_date.
-
#iteration ⇒ Object
readonly
Returns the value of attribute iteration.
-
#start_date ⇒ Object
readonly
Returns the value of attribute start_date.
Class Method Summary collapse
- .from_cycle_initiation(initial_cycle_date, cycle_end_calculation, date) ⇒ Object
- .from_perpetual_anchor(anchor, cycle_end_calculation, date) ⇒ Object
Instance Method Summary collapse
- #first_interval(interval_end_calculation) ⇒ Object
-
#initialize(start_date, end_date, iteration) ⇒ Cycle
constructor
A new instance of Cycle.
- #next(cycle_end_calculation) ⇒ Object
Constructor Details
#initialize(start_date, end_date, iteration) ⇒ Cycle
Returns a new instance of Cycle.
5 6 7 8 9 |
# File 'lib/zmanim/limudim/cycle.rb', line 5 def initialize(start_date, end_date, iteration) @start_date = start_date @end_date = end_date @iteration = iteration end |
Instance Attribute Details
#end_date ⇒ Object (readonly)
Returns the value of attribute end_date.
3 4 5 |
# File 'lib/zmanim/limudim/cycle.rb', line 3 def end_date @end_date end |
#iteration ⇒ Object (readonly)
Returns the value of attribute iteration.
3 4 5 |
# File 'lib/zmanim/limudim/cycle.rb', line 3 def iteration @iteration end |
#start_date ⇒ Object (readonly)
Returns the value of attribute start_date.
3 4 5 |
# File 'lib/zmanim/limudim/cycle.rb', line 3 def start_date @start_date end |
Class Method Details
.from_cycle_initiation(initial_cycle_date, cycle_end_calculation, date) ⇒ Object
17 18 19 20 21 22 23 24 25 26 |
# File 'lib/zmanim/limudim/cycle.rb', line 17 def self.from_cycle_initiation(initial_cycle_date, cycle_end_calculation, date) return nil if initial_cycle_date > date iteration = 1 end_date = cycle_end_calculation.(initial_cycle_date, iteration) cycle = Cycle.new(initial_cycle_date, end_date, iteration) while date > cycle.end_date cycle = cycle.next(cycle_end_calculation) end cycle end |
.from_perpetual_anchor(anchor, cycle_end_calculation, date) ⇒ Object
11 12 13 14 15 |
# File 'lib/zmanim/limudim/cycle.rb', line 11 def self.from_perpetual_anchor(anchor, cycle_end_calculation, date) start_date = anchor.current_or_previous_occurrence(date) end_date = cycle_end_calculation.(start_date, nil) Cycle.new(start_date, end_date, nil) end |
Instance Method Details
#first_interval(interval_end_calculation) ⇒ Object
36 37 38 |
# File 'lib/zmanim/limudim/cycle.rb', line 36 def first_interval(interval_end_calculation) Interval.first_for_cycle(self, interval_end_calculation) end |
#next(cycle_end_calculation) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/zmanim/limudim/cycle.rb', line 28 def next(cycle_end_calculation) return nil unless iteration new_iteration = iteration + 1 new_start_date = end_date + 1 new_end_date = cycle_end_calculation.(new_start_date, new_iteration) Cycle.new(new_start_date, new_end_date, new_iteration) end |