Class: Dicey::SumFrequencyCalculators::Runner

Inherits:
Object
  • Object
show all
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

Instance Method Details

#call(arguments, format:, result:) ⇒ nil

Transform die definitions to roll frequencies.

Parameters:

  • arguments (Array<String>)

    die definitions

  • format (#call)

    formatter for output

  • result (Symbol)

    result type selector

Returns:

  • (nil)

Raises:



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/dicey/sum_frequency_calculators/runner.rb', line 20

def call(arguments, format:, result:, **)
  raise DiceyError, "no dice!" if arguments.empty?

  dice = arguments.flat_map { |definition| die_foundry.cast(definition) }
  calculator = calculator_selector.call(dice)
  raise DiceyError, "no calculator could handle these dice!" unless calculator

  frequencies = calculator.call(dice, result_type: result)

  format.call(frequencies, AbstractDie.describe(dice))
end