class Fortune::EventList

Attributes

intervals[RW]
n[RW]
sum_m[RW]

Public Class Methods

new(h = {}) click to toggle source
# File lib/fortune/event_list.rb, line 5
def initialize(h = {})
  h.each{|name, m| self.push(Event.new({:name => name, :m => m}))}
  @sum_m = 0
  @intervals = {}
end

Public Instance Methods

active() click to toggle source
# File lib/fortune/event_list.rb, line 40
def active
  self.select{|event| event.has_come?}.first
end
calc() click to toggle source
# File lib/fortune/event_list.rb, line 10
def calc
  self.calc_sum_m
  self.calc_intervals
  self.get_n
  self.set_active
  self
end
calc_intervals() click to toggle source
# File lib/fortune/event_list.rb, line 32
def calc_intervals
  x = 0
  self.map{|event|
    next if event.m <= 0
    self.intervals[event.name] = [x + 1, x + event.m]
    x = x + event.m
  }
end
calc_sum_m() click to toggle source
# File lib/fortune/event_list.rb, line 26
def calc_sum_m
  self.map{|event|
    next if event.m <= 0
    self.sum_m += event.m
  }
end
get_n() click to toggle source
# File lib/fortune/event_list.rb, line 23
def get_n
  @n = P.n(self.sum_m)
end
set_active() click to toggle source
# File lib/fortune/event_list.rb, line 17
def set_active
  self.map{|event|
    next if event.m <= 0
    event.set_come if self.n >= intervals[event.name][0] && self.n <= intervals[event.name][1]
  }
end