Module: Virtus

Defined in:
lib/virtus.rb,
lib/virtus/class_methods.rb,
lib/virtus/attributes/date.rb,
lib/virtus/attributes/hash.rb,
lib/virtus/attributes/time.rb,
lib/virtus/attributes/array.rb,
lib/virtus/attributes/float.rb,
lib/virtus/instance_methods.rb,
lib/virtus/attributes/object.rb,
lib/virtus/attributes/string.rb,
lib/virtus/support/chainable.rb,
lib/virtus/attributes/boolean.rb,
lib/virtus/attributes/decimal.rb,
lib/virtus/attributes/integer.rb,
lib/virtus/attributes/numeric.rb,
lib/virtus/attributes/attribute.rb,
lib/virtus/attributes/date_time.rb,
lib/virtus/attributes/typecast/time.rb,
lib/virtus/attributes/typecast/numeric.rb

Defined Under Namespace

Modules: Attributes, ClassMethods, InstanceMethods, Support, Undefined

Class Method Summary collapse

Class Method Details

.determine_type(class_or_name) ⇒ Class

Returns a Virtus::Attributes::Object sub-class based on a name or class.

Parameters:

  • class_or_name (Class, String)

    name of a class or a class itself

Returns:

  • (Class)

    one of the Virtus::Attributes::Object sub-class



32
33
34
35
36
37
38
# File 'lib/virtus.rb', line 32

def determine_type(class_or_name)
  if class_or_name.is_a?(Class) && class_or_name < Attributes::Object
    class_or_name
  elsif Attributes.const_defined?(name = class_or_name.to_s)
    Attributes.const_get(name)
  end
end

.included(base) ⇒ Object

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.

Extends base class with Attributes and Chainable modules

Parameters:

  • base (Object)


17
18
19
20
21
# File 'lib/virtus.rb', line 17

def included(base)
  base.extend(ClassMethods)
  base.send(:include, InstanceMethods)
  base.extend(Support::Chainable)
end