Module: Exegesis::Model::ClassMethods
- Defined in:
- lib/exegesis/model.rb
Instance Method Summary collapse
-
#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.
- #expose(*attrs) ⇒ Object
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
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 |