class Repeatable::Expression::Biweekly

Attributes

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 4
def initialize(weekday:, start_after: ::Date.today)
  @weekday = weekday
  @start_after = Conversions::Date(start_after)
end

Public Instance Methods

include?(date) click to toggle source
# File lib/repeatable/expression/biweekly.rb, line 9
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 21
def find_first_occurrence
  days_away = weekday - start_after.wday
  days_away += 7 if days_away <= 0
  start_after + days_away
end
first_occurrence() click to toggle source
# File lib/repeatable/expression/biweekly.rb, line 17
def first_occurrence
  @first_occurrence ||= find_first_occurrence
end