Class: StrongCSV::Types::Union

Inherits:
Base
  • Object
show all
Defined in:
lib/strong_csv/types/union.rb

Overview

Union type is a type that combine multiple types.

Instance Method Summary collapse

Constructor Details

#initialize(type, *types) ⇒ Union

Returns a new instance of Union.

Parameters:



11
12
13
14
# File 'lib/strong_csv/types/union.rb', line 11

def initialize(type, *types)
  super()
  @types = [type, *types]
end

Instance Method Details

#cast(value) ⇒ ValueResult

Parameters:

  • value (Object)

    Value to be casted to Integer

Returns:



18
19
20
21
22
23
24
# File 'lib/strong_csv/types/union.rb', line 18

def cast(value)
  results = @types.map { |type| type.cast(value) }
  results.find(&:success?) || results.reduce do |memo, result|
    memo.error_messages.concat(result.error_messages).uniq!
    memo
  end
end