Class: UHaul::Geocode
- Inherits:
-
Object
- Object
- UHaul::Geocode
- Defined in:
- lib/uhaul/geocode.rb
Overview
The geocode (latitude + longitude) of a facility.
Constant Summary collapse
- LATITUDE_REGEX =
/\\u0022lat\\u0022:(?<latitude>[\+\-\d\.]+)/
- LONGITUDE_REGEX =
/\\u0022long\\u0022:(?<longitude>[\+\-\d\.]+)/
Instance Attribute Summary collapse
Class Method Summary collapse
- .parse(document:, data:) ⇒ Address
- .parse_by_data(data:) ⇒ Address
- .parse_by_document(document:) ⇒ Address
Instance Method Summary collapse
-
#initialize(latitude:, longitude:) ⇒ Geocode
constructor
A new instance of Geocode.
- #inspect ⇒ String
- #text ⇒ String
Constructor Details
#initialize(latitude:, longitude:) ⇒ Geocode
Returns a new instance of Geocode.
19 20 21 22 |
# File 'lib/uhaul/geocode.rb', line 19 def initialize(latitude:, longitude:) @latitude = latitude @longitude = longitude end |
Instance Attribute Details
#latitude ⇒ Float
11 12 13 |
# File 'lib/uhaul/geocode.rb', line 11 def latitude @latitude end |
#longitude ⇒ Float
15 16 17 |
# File 'lib/uhaul/geocode.rb', line 15 def longitude @longitude end |
Class Method Details
.parse(document:, data:) ⇒ Address
42 43 44 |
# File 'lib/uhaul/geocode.rb', line 42 def self.parse(document:, data:) parse_by_data(data:) || parse_by_document(document:) end |
.parse_by_data(data:) ⇒ Address
49 50 51 52 53 54 55 56 57 |
# File 'lib/uhaul/geocode.rb', line 49 def self.parse_by_data(data:) coordinates = data&.dig('areaServed', 'geoMidpoint') return unless coordinates new( latitude: Float(coordinates['latitude']), longitude: Float(coordinates['longitude']) ) end |
.parse_by_document(document:) ⇒ Address
62 63 64 65 66 67 68 69 |
# File 'lib/uhaul/geocode.rb', line 62 def self.parse_by_document(document:) document.text.match(/latitude:\s*(?<latitude>[\+\-\d\.]+),\s*longitude:\s*(?<longitude>[\+\-\d\.]+)/) do |match| new( latitude: Float(match[:latitude]), longitude: Float(match[:longitude]) ) end end |
Instance Method Details
#inspect ⇒ String
25 26 27 28 29 30 31 |
# File 'lib/uhaul/geocode.rb', line 25 def inspect props = [ "latitude=#{@latitude.inspect}", "longitude=#{@longitude.inspect}" ] "#<#{self.class.name} #{props.join(' ')}>" end |
#text ⇒ String
34 35 36 |
# File 'lib/uhaul/geocode.rb', line 34 def text "#{@latitude},#{@longitude}" end |