module MiniStrava::Model::ClassMethods

Public Instance Methods

build(attributes) click to toggle source
# File lib/mini_strava/model.rb, line 17
def build attributes
  object = self.new
  model_attributes.each do |attr|
    object.send "#{attr[:name]}=", attributes[attr[:name]]
  end
  object
end
define_model_att_reader(name) click to toggle source
# File lib/mini_strava/model.rb, line 39
def define_model_att_reader name
  define_method name do
    attributes[name]
  end
end
define_model_att_writer(name, type, default) click to toggle source
# File lib/mini_strava/model.rb, line 45
def define_model_att_writer name, type, default
  define_method "#{name}=" do |value|
    value = default if value.nil?
    if type != DefaultAttrType
      klass = Models.const_get type.to_s
      value = if value.is_a? Array
        value.collect do |v|
          klass.build v || {}
        end
      else
        klass.build value || {}
      end
    end

    attributes[name] = value
  end
end
model_attr(name, type: DefaultAttrType, default: nil) click to toggle source
# File lib/mini_strava/model.rb, line 29
def model_attr name, type: DefaultAttrType, default: nil
  model_attributes << {
    name:     name.to_s,
    type:     type,
    default:  default
  }
  define_model_att_reader name
  define_model_att_writer name, type, default
end
model_attributes() click to toggle source
# File lib/mini_strava/model.rb, line 25
def model_attributes
  @model_attributes ||= []
end