games_dice 0.3.12 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ci.yml +38 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +53 -0
  5. data/.yardopts +1 -1
  6. data/CHANGELOG.md +18 -0
  7. data/Gemfile +12 -0
  8. data/README.md +11 -33
  9. data/Rakefile +10 -23
  10. data/ext/games_dice/extconf.rb +4 -22
  11. data/ext/games_dice/games_dice.c +1 -1
  12. data/ext/games_dice/probabilities.c +128 -9
  13. data/ext/games_dice/probabilities.h +1 -1
  14. data/games_dice.gemspec +22 -36
  15. data/lib/games_dice/bunch.rb +203 -247
  16. data/lib/games_dice/bunch_helpers.rb +68 -0
  17. data/lib/games_dice/complex_die.rb +151 -270
  18. data/lib/games_dice/complex_die_helpers.rb +260 -60
  19. data/lib/games_dice/constants.rb +10 -10
  20. data/lib/games_dice/dice.rb +153 -143
  21. data/lib/games_dice/die.rb +101 -97
  22. data/lib/games_dice/die_result.rb +206 -189
  23. data/lib/games_dice/map_rule.rb +72 -70
  24. data/lib/games_dice/marshal.rb +41 -13
  25. data/lib/games_dice/parser.rb +245 -218
  26. data/lib/games_dice/reroll_rule.rb +76 -77
  27. data/lib/games_dice/version.rb +4 -1
  28. data/lib/games_dice.rb +23 -25
  29. data/spec/bunch_spec.rb +399 -420
  30. data/spec/complex_die_spec.rb +314 -305
  31. data/spec/dice_spec.rb +33 -34
  32. data/spec/die_result_spec.rb +174 -181
  33. data/spec/die_spec.rb +81 -81
  34. data/spec/helpers.rb +25 -25
  35. data/spec/map_rule_spec.rb +40 -44
  36. data/spec/parser_spec.rb +106 -82
  37. data/spec/probability_spec.rb +522 -526
  38. data/spec/readme_spec.rb +410 -390
  39. data/spec/reroll_rule_spec.rb +40 -44
  40. metadata +17 -129
  41. data/.travis.yml +0 -14
  42. data/lib/games_dice/prob_helpers.rb +0 -259
  43. data/lib/games_dice/probabilities.rb +0 -244
@@ -1,3 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module GamesDice
2
- VERSION = "0.3.12"
4
+ # Current version of the gem.
5
+ VERSION = '0.4.2'
3
6
  end
data/lib/games_dice.rb CHANGED
@@ -1,34 +1,32 @@
1
- require "games_dice/version"
2
- begin
3
- require "games_dice/games_dice"
4
- rescue LoadError
5
- require "games_dice/probabilities"
6
- end
7
- require "games_dice/constants"
8
- require "games_dice/die"
9
- require "games_dice/die_result"
10
- require "games_dice/reroll_rule"
11
- require "games_dice/map_rule"
12
- require "games_dice/complex_die"
13
- require "games_dice/bunch"
14
- require "games_dice/dice"
15
- require "games_dice/parser"
16
- require "games_dice/marshal"
1
+ # frozen_string_literal: true
17
2
 
18
- module GamesDice
19
- # @!visibility private
20
- @@parser = GamesDice::Parser.new
3
+ require 'games_dice/version'
4
+ require 'games_dice/constants'
5
+ require 'games_dice/die'
6
+ require 'games_dice/die_result'
7
+ require 'games_dice/reroll_rule'
8
+ require 'games_dice/map_rule'
9
+ require 'games_dice/complex_die'
10
+ require 'games_dice/bunch'
11
+ require 'games_dice/dice'
12
+ require 'games_dice/parser'
13
+ require 'games_dice/games_dice'
14
+ require 'games_dice/marshal'
21
15
 
16
+ # GamesDice is a library for simulating dice combinations used in dice and board games.
17
+ module GamesDice
22
18
  # Creates an instance of GamesDice::Dice from a string description.
23
19
  # @param [String] dice_description Uses a variation of common game notation, examples: '1d6', '3d8+1d4+7', '5d10k2'
24
20
  # @param [#rand] prng Optional random number generator, default is to use Ruby's built-in #rand()
25
21
  # @return [GamesDice::Dice] A new dice object.
26
22
  #
27
- def self.create dice_description, prng = nil
28
- parsed = @@parser.parse( dice_description )
29
- if prng
30
- parsed[:bunches].each { |bunch| bunch.merge!( :prng => prng ) }
31
- end
32
- GamesDice::Dice.new( parsed[:bunches], parsed[:offset] )
23
+ def self.create(dice_description, prng = nil)
24
+ parsed = parser.parse(dice_description)
25
+ parsed[:bunches].each { |bunch| bunch.merge!(prng: prng) } if prng
26
+ GamesDice::Dice.new(parsed[:bunches], parsed[:offset])
27
+ end
28
+
29
+ def self.parser
30
+ @parser ||= GamesDice::Parser.new
33
31
  end
34
32
  end