class RpgTools::Dice::Utils::ModifierCalculator
Attributes
modifiers[RW]
total[RW]
Public Class Methods
new(total, modifiers)
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 7 def initialize(total, modifiers) @total = total @modifiers = modifiers unprocessable_modifiers if malformed_modifiers? end
Public Instance Methods
recalculate()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 14 def recalculate modifier_operations.each do |operator, value| @total = @total.send(operator, value.to_i) end @total end
Private Instance Methods
malformed_modifiers?()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 33 def malformed_modifiers? no_operator_at_modifier_beginning? || no_number_at_modifier_end? || multiple_successive_operators? end
modifier_operations()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 24 def modifier_operations @modifiers.scan(/(\D)(\d+)/) end
multiple_successive_operators?()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 47 def multiple_successive_operators? !@modifiers.match(/\d?([^0-9]{2,})\d?$/).nil? end
no_number_at_modifier_end?()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 43 def no_number_at_modifier_end? @modifiers.match(/\d+$/).nil? end
no_operator_at_modifier_beginning?()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 39 def no_operator_at_modifier_beginning? @modifiers.match(/^\D/).nil? end
unprocessable_modifiers()
click to toggle source
# File lib/rpg_tools/dice/utils/modifier_calculator.rb, line 28 def unprocessable_modifiers raise ArgumentError, 'Modifiers require both an operator and a numerical value.' end