X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/87918595da1e1fad2ddd7aa62f9fc537dff657ff..2d136a979b66910a10dbea9838a33d83e79e1edb:/lib/diff_reader.rb diff --git a/lib/diff_reader.rb b/lib/diff_reader.rb index 94c41a6d5..5d98ef874 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 ## @@ -60,9 +60,7 @@ class DiffReader attributes = {} if @reader.has_attributes? - while @reader.move_to_next_attribute == 1 - attributes[@reader.name] = @reader.value - end + attributes[@reader.name] = @reader.value while @reader.move_to_next_attribute == 1 @reader.move_to_element end @@ -112,9 +110,7 @@ class DiffReader # such as save_ and delete_with_history. def check(model, xml, new) raise OSM::APIBadXMLError.new(model, xml) if new.nil? - unless new.changeset_id == @changeset.id - raise OSM::APIChangesetMismatchError.new(new.changeset_id, @changeset.id) - end + raise OSM::APIChangesetMismatchError.new(new.changeset_id, @changeset.id) unless new.changeset_id == @changeset.id end ## @@ -137,7 +133,8 @@ 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| @@ -172,7 +169,7 @@ 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| @@ -204,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|