Class: Strict::Unions::Coercer

Inherits:
Object
  • Object
show all
Defined in:
lib/strict/unions/coercer.rb

Instance Method Summary collapse

Constructor Details

#initialize(union_class, discriminator:, variants:) ⇒ Coercer

Returns a new instance of Coercer.



9
10
11
12
13
# File 'lib/strict/unions/coercer.rb', line 9

def initialize(union_class, discriminator:, variants:)
  @union_class = union_class
  @discriminator = discriminator
  @variants = variants
end

Instance Method Details

#call(value) ⇒ Object



15
16
17
18
19
20
# File 'lib/strict/unions/coercer.rb', line 15

def call(value)
  return value if value.nil? || union_class === value
  return value unless value.respond_to?(:to_h)

  coerce(value.to_h)
end