X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/424b6ef1cf760c4a3e27ac1e6f612ae42a9cd493..33f9b7c55fdeaebddf375fe94e657e9ab81ba0b5:/lib/diff_reader.rb diff --git a/lib/diff_reader.rb b/lib/diff_reader.rb index cb553bfbc..501a918d0 100644 --- a/lib/diff_reader.rb +++ b/lib/diff_reader.rb @@ -8,8 +8,8 @@ class DiffReader # maps each element type to the model class which handles it MODELS = { - "node" => Node, - "way" => Way, + "node" => Node, + "way" => Way, "relation" => Relation }.freeze @@ -33,8 +33,8 @@ class DiffReader # NOTE: XML::Reader#read returns false for EOF and raises an # exception if an error occurs. @reader.read - rescue LibXML::XML::Error => ex - raise OSM::APIBadXMLError.new("changeset", xml, ex.message) + rescue LibXML::XML::Error => e + raise OSM::APIBadXMLError.new("changeset", xml, e.message) end ## @@ -133,11 +133,12 @@ class DiffReader # loop at the top level, within the element with_element do |action_name, action_attributes| - if action_name == "create" + case action_name + when "create" # create a new element. this code is agnostic of the element type # because all the elements support the methods that we're using. with_model do |model, xml| - new = model.from_xml_node(xml, true) + new = model.from_xml_node(xml, :create => true) check(model, xml, new) # when this element is saved it will get a new ID, so we save it @@ -168,12 +169,12 @@ class DiffReader result.root << xml_result end - elsif action_name == "modify" + when "modify" # modify an existing element. again, this code doesn't directly deal # with types, but uses duck typing to handle them transparently. with_model do |model, xml| # get the new element from the XML payload - new = model.from_xml_node(xml, false) + new = model.from_xml_node(xml, :create => false) check(model, xml, new) # if the ID is a placeholder then map it to the real ID @@ -200,7 +201,7 @@ class DiffReader result.root << xml_result end - elsif action_name == "delete" + when "delete" # delete action. this takes a payload in API 0.6, so we need to do # most of the same checks that are done for the modify. with_model do |model, xml|