class Geocoder::Result::Mapbox
def address
def address data['place_name'] end
def city
def city data_part('place') || context_part('place') end
def context
def context Array(data['context']) end
def context_part(name, key = 'text')
def context_part(name, key = 'text') (context.detect { |c| id_matches_name?(c['id'], name) } || {})[key] end
def coordinates
def coordinates data['geometry']['coordinates'].reverse.map(&:to_f) end
def country
def country data_part('country') || context_part('country') end
def country_code
def country_code if id_matches_name?(data['id'], 'country') value = data['properties']['short_code'] else value = context_part('country', 'short_code') end value.upcase unless value.nil? end
def data_part(name)
def data_part(name) data['text'] if id_matches_name?(data['id'], name) end
def id_matches_name?(id, name)
def id_matches_name?(id, name) id =~ Regexp.new(name) end
def neighborhood
def neighborhood data_part('neighborhood') || context_part('neighborhood') end
def place_name
def place_name data['text'] end
def postal_code
def postal_code data_part('postcode') || context_part('postcode') end
def state
def state data_part('region') || context_part('region') end
def state_code
def state_code if id_matches_name?(data['id'], 'region') value = data['properties']['short_code'] else value = context_part('region', 'short_code') end value.split('-').last unless value.nil? end
def street
def street data['properties']['address'] end