class Rasti::Types::MultiCaster
Attributes
errors[R]
type[R]
value[R]
Public Class Methods
cast!(type, value) { |multi_caster| ... }
click to toggle source
# File lib/rasti/types/multi_caster.rb, line 5 def self.cast!(type, value) multi_caster = new type, value result = yield multi_caster multi_caster.raise_if_error! result end
new(type, value)
click to toggle source
# File lib/rasti/types/multi_caster.rb, line 12 def initialize(type, value) @type = type @value = value @errors = ::Hash.new { |h,k| h[k] = [] } end
Public Instance Methods
cast(type:, value:, error_key:)
click to toggle source
# File lib/rasti/types/multi_caster.rb, line 18 def cast(type:, value:, error_key:) type.cast value rescue CompoundError => ex ex.errors.each do |inner_error_key, messages| errors["#{error_key}.#{inner_error_key}"] += messages end rescue => ex errors[error_key] << ex.message end
raise_if_error!()
click to toggle source
# File lib/rasti/types/multi_caster.rb, line 30 def raise_if_error! raise MultiCastError.new(type, value, errors) unless errors.empty? end