Class: Prdigest::Schedule

Inherits:
Object
  • Object
show all
Defined in:
lib/prdigest/schedule.rb

Defined Under Namespace

Classes: Result

Instance Method Summary collapse

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

#callObject

Raises:

  • (ArgumentError)


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