Sha256: 85e94cf61d26e3c5677329b757a09361201df709292a15b0c309998c51223470
Contents?: true
Size: 1.37 KB
Versions: 14
Compression:
Stored size: 1.37 KB
Contents
module Rosemary # OpenStreetMap Relation. # # To create a new Rosemary::Relation object: # relation = Rosemary::Relation.new() # # To get a relation from the API: # relation = Rosemary::Relation.find(17) # class Relation < Element # Array of Member objects attr_reader :members # Create new Relation object. # # If +id+ is +nil+ a new unique negative ID will be allocated. def initialize(attrs) attrs.stringify_keys! @members = extract_member(attrs['member']) super(attrs) end def type 'relation' end # Return XML for this relation. This method uses the Builder library. # The only parameter ist the builder object. def to_xml(option = {}) xml = options[:builder] ||= Builder::XmlMarkup.new xml.instruct! unless options[:skip_instruct] xml.relation(attributes) do members.each do |member| member.to_xml(:builder => xml, :skip_instruct => true) end tags.to_xml(:builder => xml, :skip_instruct => true) end end protected def extract_member(member_array) return [] unless member_array && member_array.size > 0 member_array.inject([]) do |memo, member| class_to_instantize = "Rosemary::#{member['type'].classify}".constantize memo << class_to_instantize.new(:id => member['ref']) end end end end
Version data entries
14 entries across 14 versions & 1 rubygems