From 465715604187be90cb12b88ccbbfbb1bdd7cd662 Mon Sep 17 00:00:00 2001
From: Alex Reisner <alex@alexreisner.com>
Date: Sat, 16 Apr 2016 23:11:52 -0500
Subject: [PATCH] Don't define latitude and longitude in results.

The #latitude and #longitude methods are defined in the Base lookup. The
intention is that subclasses implement #coordinates only, as it results
in less code duplication.
---
 lib/geocoder/results/geoip2.rb    | 12 +++---------
 lib/geocoder/results/ipapi_com.rb |  8 --------
 lib/geocoder/results/ipinfo_io.rb | 10 +---------
 lib/geocoder/results/mapbox.rb    | 10 +---------
 lib/geocoder/results/mapquest.rb  |  9 +--------
 5 files changed, 6 insertions(+), 43 deletions(-)

diff --git a/lib/geocoder/results/geoip2.rb b/lib/geocoder/results/geoip2.rb
index cda8cd50..96721ad5 100644
--- a/lib/geocoder/results/geoip2.rb
+++ b/lib/geocoder/results/geoip2.rb
@@ -9,15 +9,9 @@ module Geocoder
       end
 
       def coordinates
-        [latitude, longitude]
-      end
-
-      def latitude
-        data.fetch('location', {}).fetch('latitude', 0.0)
-      end
-
-      def longitude
-        data.fetch('location', {}).fetch('longitude', 0.0)
+        %w[latitude longitude].map do |l|
+          data.fetch('location', {}).fetch(l, 0.0)
+        end
       end
 
       def city
diff --git a/lib/geocoder/results/ipapi_com.rb b/lib/geocoder/results/ipapi_com.rb
index 0ac32648..4e58f8e7 100644
--- a/lib/geocoder/results/ipapi_com.rb
+++ b/lib/geocoder/results/ipapi_com.rb
@@ -3,14 +3,6 @@ require 'geocoder/results/base'
 module Geocoder::Result
   class IpapiCom < Base
 
-    def latitude
-      lat
-    end
-
-    def longitude
-      lon
-    end
-
     def coordinates
       [lat, lon]
     end
diff --git a/lib/geocoder/results/ipinfo_io.rb b/lib/geocoder/results/ipinfo_io.rb
index da99d8dc..e588fa8e 100644
--- a/lib/geocoder/results/ipinfo_io.rb
+++ b/lib/geocoder/results/ipinfo_io.rb
@@ -7,16 +7,8 @@ module Geocoder::Result
       "#{city} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
     end
 
-    def latitude
-      @data['loc'].split(',')[0].to_f
-    end
-
-    def longitude
-      @data['loc'].split(',')[1].to_f
-    end
-
     def coordinates
-        [latitude, longitude]
+      @data['loc'].split(",").map(&:to_f)
     end
 
     def city
diff --git a/lib/geocoder/results/mapbox.rb b/lib/geocoder/results/mapbox.rb
index 9142e190..f789d325 100644
--- a/lib/geocoder/results/mapbox.rb
+++ b/lib/geocoder/results/mapbox.rb
@@ -3,16 +3,8 @@ require 'geocoder/results/base'
 module Geocoder::Result
   class Mapbox < Base
 
-    def latitude
-      @latitude ||= @data["geometry"]["coordinates"].last.to_f
-    end
-
-    def longitude
-      @longitude ||= @data["geometry"]["coordinates"].first.to_f
-    end
-
     def coordinates
-      [latitude, longitude]
+      @data["geometry"]["coordinates"].reverse.map(&:to_f)
     end
 
     def place_name
diff --git a/lib/geocoder/results/mapquest.rb b/lib/geocoder/results/mapquest.rb
index 4f405e6e..2a92d4f3 100644
--- a/lib/geocoder/results/mapquest.rb
+++ b/lib/geocoder/results/mapquest.rb
@@ -2,16 +2,9 @@ require 'geocoder/results/base'
 
 module Geocoder::Result
   class Mapquest < Base
-    def latitude
-      @data["latLng"]["lat"]
-    end
-
-    def longitude
-      @data["latLng"]["lng"]
-    end
 
     def coordinates
-      [latitude, longitude]
+      %w[lat lng].map{ |l| @data["latLng"][l] }
     end
 
     def city
-- 
GitLab