nerd_dice 0.1.0 → 0.4.0
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/main.yml +67 -0
- data/.rubocop.yml +114 -0
- data/CHANGELOG.md +76 -2
- data/Gemfile +2 -2
- data/Gemfile.lock +54 -32
- data/README.md +372 -5
- data/bin/generate_checksums +13 -0
- data/bin/nerd_dice_benchmark +322 -0
- data/certs/msducheminjr.pem +26 -0
- data/checksum/nerd_dice-0.1.0.gem.sha256 +1 -0
- data/checksum/nerd_dice-0.1.0.gem.sha512 +1 -0
- data/checksum/nerd_dice-0.1.1.gem.sha256 +1 -0
- data/checksum/nerd_dice-0.1.1.gem.sha512 +1 -0
- data/checksum/nerd_dice-0.2.0.gem.sha256 +1 -0
- data/checksum/nerd_dice-0.2.0.gem.sha512 +1 -0
- data/checksum/nerd_dice-0.3.0.gem.sha256 +1 -0
- data/checksum/nerd_dice-0.3.0.gem.sha512 +1 -0
- data/lib/nerd_dice/class_methods/configure.rb +50 -0
- data/lib/nerd_dice/class_methods/execute_die_roll.rb +47 -0
- data/lib/nerd_dice/class_methods/harvest_totals.rb +40 -0
- data/lib/nerd_dice/class_methods/refresh_seed.rb +83 -0
- data/lib/nerd_dice/class_methods/roll_ability_scores.rb +73 -0
- data/lib/nerd_dice/class_methods/roll_dice.rb +45 -0
- data/lib/nerd_dice/class_methods/total_ability_scores.rb +52 -0
- data/lib/nerd_dice/class_methods/total_dice.rb +44 -0
- data/lib/nerd_dice/class_methods.rb +30 -0
- data/lib/nerd_dice/configuration.rb +91 -0
- data/lib/nerd_dice/convenience_methods.rb +279 -0
- data/lib/nerd_dice/dice_set.rb +166 -0
- data/lib/nerd_dice/die.rb +51 -0
- data/lib/nerd_dice/sets_randomization_technique.rb +19 -0
- data/lib/nerd_dice/version.rb +1 -1
- data/lib/nerd_dice.rb +15 -33
- data/nerd_dice.gemspec +12 -7
- data.tar.gz.sig +0 -0
- metadata +97 -21
- metadata.gz.sig +0 -0
- data/.travis.yml +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8f64389429514a7d0c2a8410b2e27575e5c11b316b50cee41b37c58d8f8af953
|
4
|
+
data.tar.gz: 4d2365e3ce8139d4675695dfe47edf9ef5d52b9cc873beb5c7c314b8955aaa33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8bf0ea2c85e3aedf952d82d0f511463accedcad5122b14a7d6769a94100902887ca0e52cf85a6d8b69a75a6cd750858852ad71e34980e61624d39666bedff5b
|
7
|
+
data.tar.gz: ee2e8117b3071872a3d07353dabd4685c4a20e188591e80cbcb93609ba9f134ab22082ae01bee152c34c9cdd1a81a6a40aec2b1521d3e2a106d10f0c8fa313ae
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# This is a basic workflow to help you get started with Actions
|
2
|
+
|
3
|
+
name: Nerd Dice CI
|
4
|
+
|
5
|
+
# Controls when the action will run.
|
6
|
+
on: [push, pull_request]
|
7
|
+
|
8
|
+
# Allows you to run this workflow manually from the Actions tab
|
9
|
+
# workflow_dispatch:
|
10
|
+
|
11
|
+
jobs:
|
12
|
+
test_rspec:
|
13
|
+
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
strategy:
|
16
|
+
matrix:
|
17
|
+
ruby-version: ['2.7', '3.0']
|
18
|
+
|
19
|
+
steps:
|
20
|
+
- uses: actions/checkout@v2
|
21
|
+
- name: Set up Ruby
|
22
|
+
uses: ruby/setup-ruby@v1
|
23
|
+
with:
|
24
|
+
ruby-version: ${{ matrix.ruby-version }}
|
25
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
26
|
+
- name: Run tests
|
27
|
+
run: bundle exec rake
|
28
|
+
- name: Coveralls Parallel
|
29
|
+
uses: coverallsapp/github-action@master
|
30
|
+
with:
|
31
|
+
github-token: ${{ secrets.github_token }}
|
32
|
+
flag-name: run-${{ matrix.test_number }}
|
33
|
+
parallel: true
|
34
|
+
|
35
|
+
rubocop:
|
36
|
+
runs-on: ubuntu-latest
|
37
|
+
steps:
|
38
|
+
- uses: actions/checkout@v2
|
39
|
+
- name: Set up Ruby
|
40
|
+
uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: '3.0'
|
43
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
44
|
+
- name: Run rubocop
|
45
|
+
run: bundle exec rubocop --parallel
|
46
|
+
|
47
|
+
benchmark:
|
48
|
+
runs-on: ubuntu-latest
|
49
|
+
steps:
|
50
|
+
- uses: actions/checkout@v2
|
51
|
+
- name: Set up Ruby
|
52
|
+
uses: ruby/setup-ruby@v1
|
53
|
+
with:
|
54
|
+
ruby-version: '3.0'
|
55
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
56
|
+
- name: Run benchmark script
|
57
|
+
run: bin/nerd_dice_benchmark
|
58
|
+
|
59
|
+
finish:
|
60
|
+
needs: test_rspec
|
61
|
+
runs-on: ubuntu-latest
|
62
|
+
steps:
|
63
|
+
- name: Coveralls Finished
|
64
|
+
uses: coverallsapp/github-action@master
|
65
|
+
with:
|
66
|
+
github-token: ${{ secrets.github_token }}
|
67
|
+
parallel-finished: true
|
data/.rubocop.yml
CHANGED
@@ -161,6 +161,14 @@ Layout/TrailingWhitespace:
|
|
161
161
|
Style/RedundantPercentQ:
|
162
162
|
Enabled: true
|
163
163
|
|
164
|
+
# exclude spec from block length
|
165
|
+
Metrics/BlockLength:
|
166
|
+
Exclude:
|
167
|
+
- 'Rakefile'
|
168
|
+
- '**/*.rake'
|
169
|
+
- 'spec/**/*.rb'
|
170
|
+
- 'nerd_dice.gemspec'
|
171
|
+
|
164
172
|
Lint/ErbNewArguments:
|
165
173
|
Enabled: true
|
166
174
|
|
@@ -305,3 +313,109 @@ Performance/StringInclude: # (new in 1.7)
|
|
305
313
|
|
306
314
|
Performance/Sum: # (new in 1.8)
|
307
315
|
Enabled: true
|
316
|
+
|
317
|
+
Layout/SpaceBeforeBrackets: # (new in 1.7)
|
318
|
+
Enabled: true
|
319
|
+
|
320
|
+
Lint/AmbiguousAssignment: # (new in 1.7)
|
321
|
+
Enabled: true
|
322
|
+
|
323
|
+
Lint/DeprecatedConstants: # (new in 1.8)
|
324
|
+
Enabled: true
|
325
|
+
|
326
|
+
Lint/LambdaWithoutLiteralBlock: # (new in 1.8)
|
327
|
+
Enabled: true
|
328
|
+
|
329
|
+
Lint/RedundantDirGlobSort: # (new in 1.8)
|
330
|
+
Enabled: true
|
331
|
+
|
332
|
+
Style/EndlessMethod: # (new in 1.8)
|
333
|
+
Enabled: true
|
334
|
+
|
335
|
+
Style/HashExcept: # (new in 1.7)
|
336
|
+
Enabled: true
|
337
|
+
|
338
|
+
# Added 2021-08-14
|
339
|
+
Gemspec/DateAssignment: # (new in 1.10)
|
340
|
+
Enabled: true
|
341
|
+
|
342
|
+
Layout/LineEndStringConcatenationIndentation: # (new in 1.18)
|
343
|
+
Enabled: true
|
344
|
+
|
345
|
+
Lint/EmptyInPattern: # (new in 1.16)
|
346
|
+
Enabled: true
|
347
|
+
|
348
|
+
Lint/NumberedParameterAssignment: # (new in 1.9)
|
349
|
+
Enabled: true
|
350
|
+
|
351
|
+
Lint/OrAssignmentToConstant: # (new in 1.9)
|
352
|
+
Enabled: true
|
353
|
+
|
354
|
+
Lint/SymbolConversion: # (new in 1.9)
|
355
|
+
Enabled: true
|
356
|
+
|
357
|
+
Lint/TripleQuotes: # (new in 1.9)
|
358
|
+
Enabled: true
|
359
|
+
|
360
|
+
Naming/InclusiveLanguage: # (new in 1.18)
|
361
|
+
Enabled: false
|
362
|
+
|
363
|
+
Style/HashConversion: # (new in 1.10)
|
364
|
+
Enabled: true
|
365
|
+
|
366
|
+
Style/IfWithBooleanLiteralBranches: # (new in 1.9)
|
367
|
+
Enabled: true
|
368
|
+
|
369
|
+
Style/InPatternThen: # (new in 1.16)
|
370
|
+
Enabled: true
|
371
|
+
|
372
|
+
Style/MultilineInPatternThen: # (new in 1.16)
|
373
|
+
Enabled: true
|
374
|
+
|
375
|
+
Style/QuotedSymbols: # (new in 1.16)
|
376
|
+
Enabled: true
|
377
|
+
|
378
|
+
Style/StringChars: # (new in 1.12)
|
379
|
+
Enabled: true
|
380
|
+
|
381
|
+
Performance/MapCompact: # (new in 1.11)
|
382
|
+
Enabled: true
|
383
|
+
|
384
|
+
Performance/RedundantEqualityComparisonBlock: # (new in 1.10)
|
385
|
+
Enabled: true
|
386
|
+
|
387
|
+
Performance/RedundantSplitRegexpArgument: # (new in 1.10)
|
388
|
+
Enabled: true
|
389
|
+
|
390
|
+
RSpec/IdenticalEqualityAssertion: # (new in 2.4)
|
391
|
+
Enabled: true
|
392
|
+
|
393
|
+
RSpec/Rails/AvoidSetupHook: # (new in 2.4)
|
394
|
+
Enabled: true
|
395
|
+
|
396
|
+
RSpec/MessageSpies:
|
397
|
+
EnforcedStyle: receive
|
398
|
+
|
399
|
+
Lint/AmbiguousRange: # new in 1.19
|
400
|
+
Enabled: true
|
401
|
+
Style/RedundantSelfAssignmentBranch: # new in 1.19
|
402
|
+
Enabled: true
|
403
|
+
|
404
|
+
Lint/AmbiguousOperatorPrecedence: # new in 1.21
|
405
|
+
Enabled: true
|
406
|
+
Lint/IncompatibleIoSelectWithFiberScheduler: # new in 1.21
|
407
|
+
Enabled: true
|
408
|
+
Lint/RequireRelativeSelfPath: # new in 1.22
|
409
|
+
Enabled: true
|
410
|
+
Security/IoMethods: # new in 1.22
|
411
|
+
Enabled: true
|
412
|
+
Style/NumberedParameters: # new in 1.22
|
413
|
+
Enabled: true
|
414
|
+
Style/NumberedParametersLimit: # new in 1.22
|
415
|
+
Enabled: true
|
416
|
+
Style/SelectByRegexp: # new in 1.22
|
417
|
+
Enabled: true
|
418
|
+
RSpec/ExcessiveDocstringSpacing: # new in 2.5
|
419
|
+
Enabled: true
|
420
|
+
RSpec/SubjectDeclaration: # new in 2.5
|
421
|
+
Enabled: true
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,82 @@
|
|
1
1
|
# Nerd Dice Changelog
|
2
2
|
|
3
3
|
## master \(unreleased\)
|
4
|
+
### Added
|
5
|
+
### Changed
|
6
|
+
### Fixed
|
4
7
|
|
5
|
-
## 0.
|
8
|
+
## 0.4.0 \(2021-10-23\)
|
9
|
+
### Added
|
10
|
+
* Add `NerdDice::ConvenienceMethods` method_missing mixin module that allows for dynamic invocation of patterns in the method name that get converted into calls to `NerdDice.roll_dice` or `NerdDice.total_dice` along with allowing the advantage/disadvantage mechanic or bonuses to be parsed from the method name. Full documentation of the module can be found in the [Convenience Methods Mixin](README.md#convenience-methods-mixin) section of the README.
|
11
|
+
* Add exensive specs to support the ConvenienceMethods module
|
12
|
+
### Changed
|
13
|
+
* Replace `Benchmark.bmbm` with `Benchmark.bm` in the nerd_dice_benchmark
|
14
|
+
* Add convenience_methods to nerd_dice_benchmark
|
15
|
+
* Extend `NerdDice::ConvenienceMethods` into top-level module as class methods
|
16
|
+
### Fixed
|
17
|
+
* Fix typos and horizontal scrolling in README
|
18
|
+
* Fix CodeClimate Code Smell on harvest_totals
|
6
19
|
|
7
|
-
|
20
|
+
## 0.3.0 \(2021-09-11\)
|
21
|
+
### Added
|
22
|
+
* Add new options to `NerdDice::Configuration`
|
23
|
+
- `ability_score_number_of_sides`
|
24
|
+
- `ability_score_dice_rolled`
|
25
|
+
- `ability_score_dice_kept`
|
26
|
+
* Add `NerdDice.harvest_totals` method that takes in a collection and returns the results of calling `total` on each element
|
27
|
+
* Add `NerdDice.roll_ability_scores` convenience method that returns an array of `DiceSet` objects based on options and/or configuration
|
28
|
+
* Add `NerdDice.total_ability_scores` convenience method that returns an array of integers based on options and/or configuration
|
29
|
+
* Add `NerdDice::Die` class that represents a single die object and mixes in the `Comparable` module
|
30
|
+
* Add `NerdDice::DiceSet` class that represents a collection of `Die` objects and mixes in the `Enumerable` module
|
31
|
+
* Add `NerdDice::SetsRandomizationTechnique` mixin module and include in the `DiceSet` and `Die` classes
|
32
|
+
* Add `die_background_color` and `die_foreground_color` to `Configuration` class with defaults defined as constants
|
33
|
+
* Add `NerdDice.roll_dice` method that behaves in a similar fashion to `total_dice` but returns a `DiceSet` object instead of an `Integer` and has additional optional arguments relating to the non-numeric attributes of the dice
|
34
|
+
* Add `coveralls_reborn` to RSpec and GitHub actions
|
35
|
+
* Add build badge to README
|
36
|
+
* Add Code Climate maintainability integration and badge to README
|
37
|
+
* Add `nerd_dice_benchmark` script to bin directory
|
38
|
+
* Add GitHub Action CI build
|
39
|
+
- Run RSpec test suite, fail if specs fail, report coverage via Coveralls
|
40
|
+
- Run RuboCop and fail if violations
|
41
|
+
- Run benchmark suite and fail if outside of allowed ratios
|
42
|
+
### Changed
|
43
|
+
* Update RuboCop version and configuration
|
44
|
+
* Break up the NerdDice source code file into several smaller files that are included by the module
|
45
|
+
* Enforce that `NerdDice.configuration.ability_score_array_size` must be a positive duck-type integer
|
46
|
+
### Fixed
|
47
|
+
|
48
|
+
## 0.2.0 \(2021-01-28\)
|
49
|
+
### Added
|
50
|
+
* Add ability to configure with `NerdDice.configure` block or `NerdDice.configuration`
|
51
|
+
- Configure `randomization_technique` as `:random_rand`, `:securerandom`, `:random_object`, or `randomized`
|
52
|
+
- Configure `refresh_seed_interval` to allow a periodic refresh of the seed
|
53
|
+
* Add `randomization_technique` option to `NerdDice.total_dice` method keyword arguments
|
54
|
+
* Add a lower-level `execute_die_roll` method that allows you to roll a single die with a generator specified
|
55
|
+
* Add ability to manually refresh or specify seed with `:refresh_seed!` method
|
56
|
+
### Changed
|
57
|
+
* Change `opts = {}` final argument to use keyword args `**opts` in the `NerdDice.total_dice` method. Now the method can be called as follows:
|
58
|
+
```ruby
|
59
|
+
# old
|
60
|
+
NerdDice.total_dice(20, 1, {bonus: 5})
|
61
|
+
NerdDice.total_dice(6, 3, {bonus: 1})
|
62
|
+
|
63
|
+
# new
|
64
|
+
NerdDice.total_dice(20, bonus: 5)
|
65
|
+
NerdDice.total_dice(6, 3, bonus: 1)
|
66
|
+
```
|
67
|
+
* Call `:to_i` on bonus instead of using `:is_a?` and raise ArgumentError in the `NerdDice.total_dice` method if it doesn't respond to `:to_i`
|
68
|
+
* Added `securerandom` as an explicit dependency due to Ruby 3.x change to bundled gem
|
69
|
+
* `total_dice` no longer calls unqualified `.rand` which improves performance on all generators except for `:securerandom`
|
70
|
+
### Fixed
|
71
|
+
|
72
|
+
## 0.1.1 \(2020-12-12\)
|
73
|
+
### Added
|
74
|
+
### Changed
|
75
|
+
### Fixed
|
76
|
+
* Fix broken link to CHANGELOG in gemspec
|
77
|
+
* Fix rubocop offenses from 0.1.0 and refactor specs
|
78
|
+
|
79
|
+
## 0.1.0 \(2020-12-07\)
|
80
|
+
|
81
|
+
### Added
|
8
82
|
* Add NerdDice.total_dice class method with the ability to roll multiple polyhedral dice and add a bonus
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,66 +1,88 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nerd_dice (0.
|
4
|
+
nerd_dice (0.4.0)
|
5
|
+
securerandom (~> 0.1, >= 0.1.1)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
9
|
-
ast (2.4.
|
10
|
+
ast (2.4.2)
|
11
|
+
coveralls_reborn (0.23.0)
|
12
|
+
simplecov (>= 0.18.1, < 0.22.0)
|
13
|
+
term-ansicolor (~> 1.6)
|
14
|
+
thor (>= 0.20.3, < 2.0)
|
15
|
+
tins (~> 1.16)
|
10
16
|
diff-lcs (1.4.4)
|
11
|
-
|
12
|
-
|
17
|
+
docile (1.4.0)
|
18
|
+
parallel (1.21.0)
|
19
|
+
parser (3.0.2.0)
|
13
20
|
ast (~> 2.4.1)
|
14
21
|
rainbow (3.0.0)
|
15
|
-
rake (
|
16
|
-
regexp_parser (1.
|
17
|
-
rexml (3.2.
|
22
|
+
rake (13.0.6)
|
23
|
+
regexp_parser (2.1.1)
|
24
|
+
rexml (3.2.5)
|
18
25
|
rspec (3.10.0)
|
19
26
|
rspec-core (~> 3.10.0)
|
20
27
|
rspec-expectations (~> 3.10.0)
|
21
28
|
rspec-mocks (~> 3.10.0)
|
22
|
-
rspec-core (3.10.
|
29
|
+
rspec-core (3.10.1)
|
23
30
|
rspec-support (~> 3.10.0)
|
24
|
-
rspec-expectations (3.10.
|
31
|
+
rspec-expectations (3.10.1)
|
25
32
|
diff-lcs (>= 1.2.0, < 2.0)
|
26
33
|
rspec-support (~> 3.10.0)
|
27
|
-
rspec-mocks (3.10.
|
34
|
+
rspec-mocks (3.10.2)
|
28
35
|
diff-lcs (>= 1.2.0, < 2.0)
|
29
36
|
rspec-support (~> 3.10.0)
|
30
|
-
rspec-support (3.10.
|
31
|
-
rubocop (1.
|
37
|
+
rspec-support (3.10.2)
|
38
|
+
rubocop (1.22.2)
|
32
39
|
parallel (~> 1.10)
|
33
|
-
parser (>=
|
40
|
+
parser (>= 3.0.0.0)
|
34
41
|
rainbow (>= 2.2.2, < 4.0)
|
35
42
|
regexp_parser (>= 1.8, < 3.0)
|
36
43
|
rexml
|
37
|
-
rubocop-ast (>= 1.
|
44
|
+
rubocop-ast (>= 1.12.0, < 2.0)
|
38
45
|
ruby-progressbar (~> 1.7)
|
39
|
-
unicode-display_width (>= 1.4.0, <
|
40
|
-
rubocop-ast (1.
|
41
|
-
parser (>=
|
42
|
-
rubocop-performance (1.
|
43
|
-
rubocop (>=
|
46
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
47
|
+
rubocop-ast (1.12.0)
|
48
|
+
parser (>= 3.0.1.1)
|
49
|
+
rubocop-performance (1.11.5)
|
50
|
+
rubocop (>= 1.7.0, < 2.0)
|
44
51
|
rubocop-ast (>= 0.4.0)
|
45
|
-
rubocop-rake (0.
|
46
|
-
rubocop
|
47
|
-
rubocop-rspec (2.0.1)
|
52
|
+
rubocop-rake (0.6.0)
|
48
53
|
rubocop (~> 1.0)
|
49
|
-
|
50
|
-
|
51
|
-
|
54
|
+
rubocop-rspec (2.5.0)
|
55
|
+
rubocop (~> 1.19)
|
56
|
+
ruby-progressbar (1.11.0)
|
57
|
+
securerandom (0.1.1)
|
58
|
+
simplecov (0.21.2)
|
59
|
+
docile (~> 1.1)
|
60
|
+
simplecov-html (~> 0.11)
|
61
|
+
simplecov_json_formatter (~> 0.1)
|
62
|
+
simplecov-html (0.12.3)
|
63
|
+
simplecov-lcov (0.8.0)
|
64
|
+
simplecov_json_formatter (0.1.3)
|
65
|
+
sync (0.5.0)
|
66
|
+
term-ansicolor (1.7.1)
|
67
|
+
tins (~> 1.0)
|
68
|
+
thor (1.1.0)
|
69
|
+
tins (1.29.1)
|
70
|
+
sync
|
71
|
+
unicode-display_width (2.1.0)
|
52
72
|
|
53
73
|
PLATFORMS
|
54
74
|
ruby
|
55
75
|
|
56
76
|
DEPENDENCIES
|
77
|
+
coveralls_reborn (~> 0.23.0)
|
57
78
|
nerd_dice!
|
58
|
-
rake (~>
|
59
|
-
rspec (~> 3.
|
60
|
-
rubocop (~> 1.
|
61
|
-
rubocop-performance (~> 1.
|
62
|
-
rubocop-rake (~> 0.
|
63
|
-
rubocop-rspec (~> 2.
|
79
|
+
rake (~> 13.0)
|
80
|
+
rspec (~> 3.10)
|
81
|
+
rubocop (~> 1.22, >= 1.22.2)
|
82
|
+
rubocop-performance (~> 1.11, >= 1.11.5)
|
83
|
+
rubocop-rake (~> 0.6, >= 0.6.0)
|
84
|
+
rubocop-rspec (~> 2.5, >= 2.5.0)
|
85
|
+
simplecov-lcov (~> 0.8.0)
|
64
86
|
|
65
87
|
BUNDLED WITH
|
66
|
-
2.
|
88
|
+
2.2.22
|