Module: Exegesis::Model::ClassMethods

Defined in:
lib/exegesis/model.rb

Instance Method Summary collapse

Instance Method Details

#default(hash = nil) ⇒ Object

sets a default hash object for the attributes of the instances of the class if an argument given, else retrieves the default



37
38
39
40
41
42
43
44
# File 'lib/exegesis/model.rb', line 37

def default hash=nil
  if hash
    @default || default
    hash.each {|key, value| @default[key.to_s] = value }
  else
    @default ||= superclass.respond_to?(:default) ? superclass.default.dup : {}
  end
end

#expose(*attrs) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/exegesis/model.rb', line 13

def expose *attrs
  opts = attrs.last.is_a?(Hash) ? attrs.pop : {}
  raise ArgumentError, "casted keys cannot have defined writers" if opts[:as] && opts[:writer]
  [attrs].flatten.each do |attrib|
    attrib = attrib.to_s
    if opts[:writer]
      define_writer(attrib) {|val| @attributes[attrib] = opts[:writer].call(val) }
    elsif !opts.has_key?(:writer)
      define_writer(attrib) {|val| @attributes[attrib] = val }
    end
    if opts[:as] == :reference
      define_reference attrib
      define_reference_writer attrib unless opts[:writer] == false
    elsif opts[:as]
      define_caster attrib, opts[:as]
      define_caster_writer attrib, opts[:as] unless opts[:writer] == false
    else
      define_method(attrib) { @attributes[attrib] }
    end
  end
end