class CoopAl::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