Class: Dicey::SumFrequencyCalculators::Runner
- Inherits:
-
Object
- Object
- Dicey::SumFrequencyCalculators::Runner
- Defined in:
- lib/dicey/sum_frequency_calculators/runner.rb
Overview
The defaultest runner which calculates roll frequencies from command-line dice.
Instance Method Summary collapse
-
#call(arguments, roll_calculators:, format:, result:) ⇒ nil
Transform die definitions to roll frequencies.
Instance Method Details
#call(arguments, roll_calculators:, format:, result:) ⇒ nil
Transform die definitions to roll frequencies.
21 22 23 24 25 26 27 28 29 |
# File 'lib/dicey/sum_frequency_calculators/runner.rb', line 21 def call(arguments, roll_calculators:, format:, result:, **) raise DiceyError, "no dice!" if arguments.empty? dice = arguments.flat_map { |definition| die_foundry.cast(definition) } frequencies = roll_calculators.find { _1.valid_for?(dice) }&.call(dice, result_type: result) raise DiceyError, "no calculator could handle these dice!" unless frequencies format.call(frequencies, AbstractDie.describe(dice)) end |