module JDX::Geocoder
Constants
- STATE_ABB
- STATE_ABB_REGEXP
- VERSION
Attributes
configuration[RW]
Public Class Methods
configure() { |configuration| ... }
click to toggle source
# File lib/jdx/geocoder.rb, line 76 def configure self.configuration ||= Configuration.new yield(configuration) end
countrywide?(down)
click to toggle source
# File lib/jdx/geocoder.rb, line 107 def countrywide?(down) down.match?(/\b(nation?.|country?.)wide\b/) end
extract_zipcode(down)
click to toggle source
# File lib/jdx/geocoder.rb, line 111 def extract_zipcode(down) down.match(/\b[0-9]{5}(?:-[0-9]{4})?\b/)&.[](0) end
ip_search(ip, validate: false)
click to toggle source
# File lib/jdx/geocoder.rb, line 90 def ip_search(ip, validate: false) return nil if ip.nil? || ip.empty? || validate && !valid_ip?(ip) ::JDX::Geocoder::IpApi.new(ip).search end
location_search(term, sanitize: true)
click to toggle source
# File lib/jdx/geocoder.rb, line 81 def location_search(term, sanitize: true) return if term.nil? term = sanitize(term) if sanitize return if term.empty? ::JDX::Geocoder::Google.new(term).search end
remove_duplicates(down)
click to toggle source
# File lib/jdx/geocoder.rb, line 120 def remove_duplicates(down) down.split(/\W+/).tap(&:uniq!).join(' ').tap(&:strip!) end
remove_stuff(down)
click to toggle source
# File lib/jdx/geocoder.rb, line 115 def remove_stuff(down) down.gsub!(%r{\b(?:united\W*st?ates(?:\W*of\W*america)?|u\W*s\W*a?|n/a)\b}, '') down.gsub!(STATE_ABB_REGEXP, STATE_ABB) end
sanitize(term)
click to toggle source
# File lib/jdx/geocoder.rb, line 96 def sanitize(term) down = term.downcase return 'us' if countrywide?(down) zip = extract_zipcode(down) return zip unless zip.nil? remove_stuff(down) remove_duplicates(down) end
valid_ip?(ip)
click to toggle source
# File lib/jdx/geocoder.rb, line 124 def valid_ip?(ip) case ip when Resolv::IPv4::Regex, Resolv::IPv6::Regex true else false end end