Module: Shippinglogic::Attributes::ClassMethods

Defined in:
lib/shippinglogic/attributes.rb

Instance Method Summary collapse

Instance Method Details

#attribute(name, type, options = {}) ⇒ Object

Define an attribute for a class, makes adding options / attributes to the class much cleaner. See the Rates class for an example.



16
17
18
19
20
21
22
23
# File 'lib/shippinglogic/attributes.rb', line 16

def attribute(name, type, options = {})
  name = name.to_sym
  options[:type] = type.to_sym
  attributes[name] = options
  
  define_method(name) { read_attribute(name) }
  define_method("#{name}=") { |value| write_attribute(name, value) }
end

#attribute_namesObject

An array of the attribute names



31
32
33
# File 'lib/shippinglogic/attributes.rb', line 31

def attribute_names
  attributes.keys
end

#attribute_options(name) ⇒ Object

Returns the options specified when defining a specific attribute



36
37
38
# File 'lib/shippinglogic/attributes.rb', line 36

def attribute_options(name)
  attributes[name.to_sym]
end

#attributesObject

A hash of all the attributes and their options



26
27
28
# File 'lib/shippinglogic/attributes.rb', line 26

def attributes
  @attributes ||= {}
end