UNPKG

1.02 kBtext/coffeescriptView Raw
1# Class definition
2class DiceRoll
3
4 defaults: {
5 dice: null,
6 sides: null,
7 sum: true,
8 onesSubtract: false,
9 target: null,
10 }
11 opts: {}
12 rolls: []
13 conclusion: 0
14
15 constructor: (opts) ->
16 @rolls = []
17 conclusion: 0
18 @opts = extend (extend {}, @defaults), opts
19 if @opts.dice is null or @opts.sides is null
20 throw new Error "You have to provide dice and sides parameters"
21 if not @opts.sum and @opts.target is null
22 throw new Error "If you set sum: false you must set target: <number> as well."
23
24 for i in [1..@opts.dice] by 1
25 result = Math.ceil Math.random() * @opts.sides
26 @rolls.push result
27 if not @opts.sum and result >= @opts.target
28 @conclusion++
29 else if @opts.sum
30 @conclusion += result
31
32 result: ->
33 { 'rolls': @rolls, 'conclusion': @conclusion }
34
35# Helper method grabbed from http://coffeescript.org/documentation/docs/helpers.html
36extend = (object, properties) ->
37 for key, val of properties
38 object[key] = val
39 object
40
41# Export the module
42exports = module.exports = DiceRoll