Sha256: 3ecf000abac58bba657b60d9c2977409d09761336230729bbd1077f38283b3ec

Contents?: true

Size: 623 Bytes

Versions: 4

Compression:

Stored size: 623 Bytes

Contents

module NxtSchema
  module Node
    class TypeResolver
      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
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
nxt_schema-1.0.0 lib/nxt_schema/node/type_resolver.rb
nxt_schema-0.1.2 lib/nxt_schema/node/type_resolver.rb
nxt_schema-0.1.1 lib/nxt_schema/node/type_resolver.rb
nxt_schema-0.1.0 lib/nxt_schema/node/type_resolver.rb