diff --git a/lib/ext/person.rb b/lib/ext/person.rb index 8a7539e..e966594 100644 --- a/lib/ext/person.rb +++ b/lib/ext/person.rb @@ -5,51 +5,56 @@ class Person def attr_to_hash attrs = super + attrs = friends_attrs(attrs) + + attrs = commuinities_attrs(attrs) + + attrs = softwares_attrs(attrs) + + attrs + end + + def friends_attrs(attrs) attrs['friends-count'] = self.friends.count attrs['friends'] = [] self.friends.each do |friend| - attrs_friends = { - "id" => friend.id, - "identifier" => friend.identifier, - "name" => friend.name - } - attrs['friends'] << attrs_friends + attrs['friends'] << profile_attrs(friend) end + attrs + end - attrs['communities-count'] = self.respond_to?("softwares") ? self.communities.count - self.softwares.count : self.communities.count + def commuinities_attrs(attrs) + attrs['communities-count'] = self.respond_to?("softwares") ? + self.communities.count - self.softwares.count : + self.communities.count attrs['communities'] = [] self.communities.each do |community| if community.respond_to?("software?") - if !community.software? - attrs_community = { - "id" => community.id, - "identifier" => community.identifier, - "name" => community.name - } - attrs['communities'] << attrs_community - end - else - attrs_community = { - "id" => community.id, - "identifier" => community.identifier, - "name" => community.name - } - attrs['communities'] << attrs_community + attrs['communities'] << profile_attrs(community) end end + attrs + end + def softwares_attrs(attrs) attrs['softwares-count'] = self.respond_to?("softwares") ? self.softwares.count : 0 attrs['softwares'] = [] if self.respond_to?("softwares") self.softwares.each do |software| - attrs_software = { - "id" => software.id, - "identifier" => software.identifier, - "name" => software.name - } - attrs['softwares'] << attrs_software + attrs['softwares'] << profile_attrs(software) end end attrs end + + private + + def profile_attrs(profile) + profile = { + "id" => profile.id, + "identifier" => profile.identifier, + "name" => profile.name + } + end + end -- libgit2 0.21.2