module SimplifyApi::ClassMethods

ClassMethods

Public Instance Methods

attribute(attr, type = Object, **args) click to toggle source
# File lib/simplify_api/simplify_api.rb, line 13
def attribute(attr, type = Object, **args)
  raise ArgumentError, "Duplicate attribute #{attr}." if attributes[attr]

  if type.class == Array
    args[:default] = [] unless args[:default]
    args[:array_type] = type[0]
  end

  args[:mandatory] ||= false
  args[:default] ||= nil unless args[:default].class == FalseClass

  attributes[attr] = {
    name: attr.to_s,
    type: { Class => type, Array => Array }[type.class] || Object,
    params: args
  }
  attr
end