class Repeatable::Expression::Biweekly

Attributes

_first_occurrence[R]
start_after[R]
weekday[R]

Public Class Methods

new(weekday:, start_after: ::Date.today) click to toggle source
# File lib/repeatable/expression/biweekly.rb, line 7
def initialize(weekday:, start_after: ::Date.today)
  @weekday = weekday
  @start_after = T.let(Conversions::Date(start_after), ::Date)
  @_first_occurrence = T.let(find_first_occurrence, ::Date)
end

Public Instance Methods

include?(date) click to toggle source
# File lib/repeatable/expression/biweekly.rb, line 14
def include?(date)
  date >= start_after && (date - _first_occurrence) % 14 == 0
end

Private Instance Methods

find_first_occurrence() click to toggle source
# File lib/repeatable/expression/biweekly.rb, line 30
def find_first_occurrence
  days_away = weekday - start_after.wday
  days_away += 7 if days_away <= 0
  start_after + days_away
end