nerd_dice 0.1.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|