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