Module: DynamicSchema::Converter

Extended by:
Converter
Included in:
Builder, Converter
Defined in:
lib/dynamic_schema/converter.rb

Instance Method Summary collapse

Instance Method Details

#convert(value, to:, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/dynamic_schema/converter.rb', line 14

def convert( value, to:, &block )
  return value if value.nil? || to.nil?

  to = Array( to )
  result = nil 

  if value.respond_to?( :is_a? )
    to.each do | type |
      result = value.is_a?( type ) ? value : nil  
      break unless result.nil?
    end
  end

  if result.nil?
    to.each do | type |
      converter = converters[ type ]
      if converter
        result = converter.call( value ) rescue nil 
        break unless result.nil?
      end
    end
  end

  result.nil? && block ? block.call( value ) : result
end

#register_converter(klass, &block) ⇒ Object



10
11
12
# File 'lib/dynamic_schema/converter.rb', line 10

def register_converter( klass, &block )
  self.converters[ klass ] = block 
end