summaryrefslogtreecommitdiff
path: root/app/lib/dice.rb
blob: 3b6df484eb38ca5904fd4224913ef71f56427d44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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