summaryrefslogtreecommitdiff
path: root/app/lib/dice.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/dice.rb')
-rw-r--r--app/lib/dice.rb29
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