Module: JSONDecoder::Node::ClassMethods
- Defined in:
- lib/motion_json_decoder/node.rb
Instance Method Summary collapse
Instance Method Details
#collection(name, opts = {}) ⇒ Object
39 40 41 42 43 44 45 46 47 |
# File 'lib/motion_json_decoder/node.rb', line 39 def collection(name, opts = {}) klass = opts.fetch(:class_name) define_method name do # Using a block to avoid dependency reolutions problems. lambda do json.fetch(name.to_s).map { |element| klass.call.new(element) } end.call end end |
#field(field_name, opts = {}) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/motion_json_decoder/node.rb', line 22 def field(field_name, opts = {}) type = opts[:type] klass = opts[:using] raise "Cannot use :type and :using together" if type && klass method_name = opts[:as] || field_name define_method method_name do result = json.fetch field_name.to_s if type == :date JSONDecoder::DateParser.new.parse(result) # TODO move this into lib if gemifying elsif klass klass.new result else result end end end |