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
|