lib/githu3/relations.rb in githu3-0.0.3 vs lib/githu3/relations.rb in githu3-0.0.4

- old
+ new

@@ -1,17 +1,37 @@ module Githu3 module Relations + + def embeds_one m, opts={} + opts[:class_name] ||= m.to_s + define_method(m) do + klass = Githu3.const_get(opts[:class_name].to_s.camelize) + data = self._attributes.send(m) + klass.new(data, @client) unless data.nil? + end + end + + def embeds_many m, opts={} + opts[:class_name] ||= m.to_s.singularize + define_method(m) do + klass = Githu3.const_get(opts[:class_name].to_s.camelize) + data = self._attributes.send(m) + data.map { |o| klass.new(o, @client) } unless data.nil? + end + end + + def has_many m, opts={} opts[:class_name] ||= m.to_s.singularize define_method(m) do |*args| params = args.extract_options! klass = Githu3.const_get(opts[:class_name].to_s.camelize) _resource_path = [opts[:nested_in], m].compact.join("/") if args.length == 1 - klass.new([path, _resource_path, args.first].join("/"), @client) + klass.new([_path, _resource_path, args.first].join("/"), @client) else - Githu3::ResourceCollection.new(@client, klass, [path, _resource_path].join("/"), params) + Githu3::ResourceCollection.new(@client, klass, [_path, _resource_path].join("/"), params) end end end end end \ No newline at end of file