Module: Virtus::TypeLookup

Included in:
Attribute, Coercion
Defined in:
lib/virtus/support/type_lookup.rb

Overview

A module that adds type lookup to a class

Constant Summary collapse

TYPE_FORMAT =
/\A[A-Z]\w*\z/.freeze
EXTRA_CONST_ARGS =
RUBY_VERSION < '1.9' || RUBY_ENGINE == 'rbx' ? [] : [ false ]

Instance Method Summary collapse

Instance Method Details

#determine_type(class_or_name) ⇒ Class?

Returns a descendant based on a name or class

Examples:

MyClass.determine_type('String')  # => MyClass::String

Parameters:

  • class_or_name (Class, #to_s)

    name of a class or a class itself

Returns:

  • (Class)

    a descendant

  • (nil)

    nil if the type cannot be determined by the class_or_name



24
25
26
27
28
29
30
31
32
33
# File 'lib/virtus/support/type_lookup.rb', line 24

def determine_type(class_or_name)
  case class_or_name
  when singleton_class
    determine_type_from_descendant(class_or_name)
  when Class
    determine_type_from_primitive(class_or_name)
  else
    determine_type_from_string(class_or_name.to_s)
  end
end

#primitiveClass

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Return the default primitive supported

Returns:

  • (Class)

Raises:

  • (NotImplementedError)


40
41
42
# File 'lib/virtus/support/type_lookup.rb', line 40

def primitive
  raise NotImplementedError, "#{self}.primitive must be implemented"
end