def self.parse_alternatives(alternatives)
if alternatives.kind_of? Array
return alternatives
elsif alternatives.kind_of? Integer
return (1..alternatives).to_a
elsif alternatives.kind_of? Range
return alternatives.to_a
elsif alternatives.kind_of? Hash
alternatives_array = []
alternatives.each do |key, value|
if value.kind_of? Integer
alternatives_array += [key] * value
else
raise "You gave a hash with #{key} => #{value} as an element. The value must be an integral weight."
end
end
return alternatives_array
else
raise "I don't know how to turn [#{alternatives}] into an array of alternatives."
end
end