diff options
Diffstat (limited to 'app/lib/dice.rb')
-rw-r--r-- | app/lib/dice.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/app/lib/dice.rb b/app/lib/dice.rb new file mode 100644 index 0000000..3b6df48 --- /dev/null +++ b/app/lib/dice.rb @@ -0,0 +1,29 @@ +module Dice + # @param sides [Integer] + # @return [Dice::Result] + def self.roll(sides) + result = Dice::Result.new + result.add_roll Dice::Roll.new(sides) + result + end + + # @param formula [String] + def self.roll_formula(formula) + # Will add other delimiters later. + parts = formula.split("d") + + if parts.length < 2 + raise "Invalid formula: #{formula}" + end + + num_dice = parts[0].empty? ? 1 : parts[0].to_i + sides = parts[1].to_i + + result = Dice::Result.new + num_dice.times do + result.add_roll Dice::Roll.new(sides) + end + + result + end +end |