class AddressGroup

Attributes

store[R]

Public Class Methods

new() click to toggle source
# File lib/address_matcher/address_group.rb, line 2
def initialize
  @store = {}
end

Public Instance Methods

[](lat_long) click to toggle source
# File lib/address_matcher/address_group.rb, line 10
def [](lat_long)
  store[lat_long]
end
[]=(lat_long, address) click to toggle source
# File lib/address_matcher/address_group.rb, line 6
def []=(lat_long, address)
  store[lat_long] = address
end
match(lat_long) click to toggle source
# File lib/address_matcher/address_group.rb, line 14
def match(lat_long)
  if exact = store[lat_long]
    exact
  else
    closest_match(lat_long)
  end
end

Private Instance Methods

closest_match(lat_long) click to toggle source
# File lib/address_matcher/address_group.rb, line 25
def closest_match(lat_long)
  closest = store.keys.min do |a, b|
    distance_between(lat_long, a) <=> distance_between(lat_long, b)
  end

  store[closest]
end
distance_between(p1, p2) click to toggle source
# File lib/address_matcher/address_group.rb, line 33
def distance_between(p1, p2)
  Geocoder::Calculations.distance_between(p1, p2)
end