Class: NxtSchema::Node::TypeResolver

Inherits:
Object
  • Object
show all
Defined in:
lib/nxt_schema/node/type_resolver.rb

Instance Method Summary collapse

Instance Method Details

#resolve(type_system, type) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/nxt_schema/node/type_resolver.rb', line 4

def resolve(type_system, type)
  @resolve ||= {}
  @resolve[type] ||= begin
    if type.is_a?(Dry::Types::Type)
      type
    else
      # Try to resolve in type system
      type = type_system.const_get(type.to_s.classify)

      if type.is_a?(Dry::Types::Type)
        type
      else
        # in case it does not exist fallback to Types::Nominal
        "NxtSchema::Types::Nominal::#{type.to_s.classify}".constantize
      end
    end
  end
end