module Dry::Types

def self.[](name)

Returns:
  • (Type, Class) -

Parameters:
  • name (String, Class) --
def self.[](name)
  type_map.fetch_or_store(name) do
    case name
    when String
      result = name.match(TYPE_SPEC_REGEX)
      if result
        type_id, member_id = result[1..2]
        container[type_id].of(self[member_id])
      else
        container[name]
      end
    when Class
      type_name = identifier(name)
      if container.key?(type_name)
        self[type_name]
      else
        name
      end
    end
  end
end