Class: Rasti::Types::MultiCaster
- Inherits:
-
Object
- Object
- Rasti::Types::MultiCaster
- Defined in:
- lib/rasti/types/multi_caster.rb
Class Method Summary collapse
Instance Method Summary collapse
- #cast(type:, value:, error_key:) ⇒ Object
-
#initialize(type, value) ⇒ MultiCaster
constructor
A new instance of MultiCaster.
- #raise_if_error! ⇒ Object
Constructor Details
#initialize(type, value) ⇒ MultiCaster
Returns a new instance of MultiCaster.
12 13 14 15 16 |
# 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 |
Class Method Details
.cast!(type, value) ⇒ Object
5 6 7 8 9 10 |
# 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 |
Instance Method Details
#cast(type:, value:, error_key:) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# 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, | errors["#{error_key}.#{inner_error_key}"] += end rescue => ex errors[error_key] << ex. end |
#raise_if_error! ⇒ Object
30 31 32 |
# File 'lib/rasti/types/multi_caster.rb', line 30 def raise_if_error! raise MultiCastError.new(type, value, errors) unless errors.empty? end |