Sha256: 6fb590437f49dd4c6f2fe392684d687ea1e1e35cd0485bf11865da7d4da6d17a
Contents?: true
Size: 1.42 KB
Versions: 1
Compression:
Stored size: 1.42 KB
Contents
module Rlottery class Lottery attr_accessor :rule_set def initialize(args) [:participants, :slots].each do |attr| raise(ArgumentError, "Must supply #{attr}") unless args.has_key?(attr) end self.participants = args[:participants] self.slots = args[:slots] rule_set_klass = args[:rule_set] rule_set_klass ||= Rlottery::RuleSet::BaseRuleSet @rule_set = rule_set_klass.new( :participants => self.participants, :slots => self.slots ) end def run! @rule_set.run! end def participants @participants_list ||= {} end def slots @slots_list ||= {} end def rule_set @rule_set end protected def participants=(participants_list) @participants_list ||= {} list_init(Participant, participants_list, @participants_list) end def slots=(slots_list) @slots_list ||= {} list_init(Slot, slots_list, @slots_list) end def list_init(item_class, list, store_in) unless list.respond_to?(:each) raise ArgumentError, "Must supply a list for #{item_class} init." end list.each do |i| if i.kind_of?(String) || i.kind_of?(Symbol) item = item_class.new(:identifier => i) else raise ArgumentError, "Unknown kind of #{item_class}: #{i}." end store_in[item.identifier] = item end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jlindley-rlottery-0.1.2 | lib/rlottery/lottery.rb |