module Arke::Resource::Fields::ClassMethods

Public Instance Methods

field(name, options={}) click to toggle source
# File lib/arke/resource/fields.rb, line 9
def field(name, options={})
  raise Errors::MissingType.new('The field type is required when defining a field.') unless options[:type]
  define_getter(name.to_s, options[:type])
  define_setter(name.to_s, options[:type])
end

Private Instance Methods

define_getter(name, klass) click to toggle source
# File lib/arke/resource/fields.rb, line 17
def define_getter(name, klass)
  instance_eval do
    define_method(name) do
      value = @_attributes[name]
      return value if klass == Boolean
      value ? klass.new(@_attributes[name]) : klass.new
    end
  end
end
define_setter(name, klass) click to toggle source
# File lib/arke/resource/fields.rb, line 27
def define_setter(name, klass)
  instance_eval do
    define_method("#{name}=") do |value|
      @_attributes[name] = value
    end
  end
end