Class: ActiveRemote::AttributeDefinition

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/active_remote/attribute_definition.rb

Overview

Represents an attribute for reflection

Examples:

Usage

AttributeDefinition.new(:amount)

Since:

  • 0.2.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, type = :unknown, **options) ⇒ ActiveAttr::AttributeDefinition

Creates a new AttributeDefinition

Examples:

Create an attribute defintion

AttributeDefinition.new(:amount)

Raises:

  • (TypeError)

Since:

  • 0.2.0



58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/active_remote/attribute_definition.rb', line 58

def initialize(name, type = :unknown, **options)
  raise TypeError, "can't convert #{name.class} into Symbol" unless name.respond_to? :to_sym
  @name = name.to_sym
  @options = options
  @options[:typecaster] = ::ActiveRemote::Type.lookup(type) unless type == :unknown

  if @options[:type]
    typecaster = ::ActiveRemote::Typecasting::TYPECASTER_MAP[@options[:type]]
    fail ::ActiveRemote::UnknownType unless typecaster
    @options[:typecaster] = typecaster
  end
end

Instance Attribute Details

#nameObject (readonly)

The attribute name

Since:

  • 0.2.0



15
16
17
# File 'lib/active_remote/attribute_definition.rb', line 15

def name
  @name
end

Instance Method Details

#<=>(other) ⇒ -1, ...

Compare attribute definitions

Examples:

attribute_definition <=> other

Since:

  • 0.2.1



28
29
30
31
32
# File 'lib/active_remote/attribute_definition.rb', line 28

def <=>(other)
  return nil unless other.instance_of? self.class
  return nil if name == other.name && options != other.options
  self.name.to_s <=> other.name.to_s
end

#[](key) ⇒ Object

Read an attribute option

Examples:

attribute_definition[:type]

Since:

  • 0.5.0



42
43
44
# File 'lib/active_remote/attribute_definition.rb', line 42

def [](key)
  @options[key]
end

#inspectString

Returns the code that would generate the attribute definition

Examples:

Inspect the attribute definition

attribute.inspect

Since:

  • 0.6.0



80
81
82
83
84
# File 'lib/active_remote/attribute_definition.rb', line 80

def inspect
  options_description = options.map { |key, value| "#{key.inspect} => #{value.inspect}" }.sort.join(", ")
  inspected_options = ", #{options_description}" unless options_description.empty?
  "attribute :#{name}#{inspected_options}"
end

#to_sString

The attribute name

Since:

  • 0.2.0



91
92
93
# File 'lib/active_remote/attribute_definition.rb', line 91

def to_s
  name.to_s
end

#to_symSymbol

The attribute name

Since:

  • 0.2.1



100
101
102
# File 'lib/active_remote/attribute_definition.rb', line 100

def to_sym
  name
end