Class: Prdigest::Schedule
- Inherits:
-
Object
- Object
- Prdigest::Schedule
- Defined in:
- lib/prdigest/schedule.rb
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(yesterday:, last_digested_date:, max_catchup_days:) ⇒ Schedule
constructor
A new instance of Schedule.
Constructor Details
#initialize(yesterday:, last_digested_date:, max_catchup_days:) ⇒ Schedule
Returns a new instance of Schedule.
9 10 11 12 13 |
# File 'lib/prdigest/schedule.rb', line 9 def initialize(yesterday:, last_digested_date:, max_catchup_days:) @yesterday = Date.iso8601(yesterday.to_s) @last_digested_date = last_digested_date && Date.iso8601(last_digested_date.to_s) @max_catchup_days = Integer(max_catchup_days) end |
Instance Method Details
#call ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/prdigest/schedule.rb', line 15 def call raise ArgumentError, "max_catchup_days must be from 1 to 30" unless (1..30).cover?(@max_catchup_days) raise ArgumentError, "last digested date is in the future" if @last_digested_date && @last_digested_date > @yesterday owed = if @last_digested_date.nil? [@yesterday] elsif @last_digested_date == @yesterday [] else ((@last_digested_date + 1)..@yesterday).to_a end split = [owed.length - @max_catchup_days, 0].max Result.new(owed.first(split).freeze, owed.drop(split).freeze) end |