require './lib/marver.rb' # TODO: Refactor, I guess? module Marver module CommonEntitiesBuilder COMMON_ENTITIES = %w(prices images urls textObjects thumbnail dates) extend Marver::StringHelper def self.build!(object) COMMON_ENTITIES.each do |entity| # If the object's JSON has this entity.. if object.json.has_key?(entity) # get the entity lists entities = entity_items(object, entity) # find the class for this type of entity klass = common_class(entity) # parameterize the entity string # i.e. textObjects => TextObject parameterized_entity = parameterize(entity) if entities.kind_of?(Array) object.class.send(:define_method, parameterized_entity) do entities.collect do |ent| klass.new(ent) end end else object.class.send(:define_method, parameterized_entity) do klass.new(entities) end end end end end def self.entity_items(object, entity) if object.json[entity].kind_of?(Hash) && object.json[entity].has_key?('items') [object.json[entity]['items']].compact.flatten(1) else object.json[entity] end end end end