class CoopAl::SessionDateGenerator

SessionDateGenerator

Public Class Methods

new(options) click to toggle source
# File lib/coop_al/session_date_generator.rb, line 6
def initialize(options)
  @next_date = options[:end_date]
  @session_frequency = options[:session_frequency]
  @skip_frequency = options[:skip_frequency]
  @sessions = []
  @blackout_dates = options[:blackout_dates]
end

Public Instance Methods

add_session() click to toggle source
# File lib/coop_al/session_date_generator.rb, line 14
def add_session
  @sessions.push(@next_date)
  advance_next_date
end
session(number) click to toggle source
# File lib/coop_al/session_date_generator.rb, line 19
def session(number)
  @sessions[-number]
end

Private Instance Methods

advance_next_date() click to toggle source
# File lib/coop_al/session_date_generator.rb, line 25
def advance_next_date
  loop do
    @next_date -= @session_frequency
    break if ok?(@next_date)
  end
end
blackout?(date) click to toggle source
# File lib/coop_al/session_date_generator.rb, line 39
def blackout?(date)
  @blackout_dates.include?(date)
end
ok?(date) click to toggle source
# File lib/coop_al/session_date_generator.rb, line 32
def ok?(date)
  return false if @blackout_dates.include?(date)
  return true if @skip_frequency.nil?
  return false if roll_dice("d#{@skip_frequency}") == 1
  true
end