module PostalCodesSearch

Class module that handles all searching methods for postal codes

Constants

SUPPORTED_COUNTRIES
VERSION

Public Class Methods

attribute_present(attr) click to toggle source
# File lib/postal-codes-search.rb, line 12
def attribute_present(attr)
  !(attr.nil? || attr.empty?)
end
data() click to toggle source
# File lib/postal-codes-search.rb, line 35
def data
  data = []
  current_path = File.dirname(__FILE__)
  SUPPORTED_COUNTRIES.each do |country_code|
    data_path = File.join(current_path, 'source', "#{country_code}_postal_codes.yml")
    country_data = YAML.safe_load(File.open(data_path))

    data += country_data
  end
  data
end
data_source() click to toggle source
# File lib/postal-codes-search.rb, line 47
def data_source
  @data_source ||= begin
    data
  end
end
find(term) click to toggle source
# File lib/postal-codes-search.rb, line 30
def find(term)
  term = term.to_s
  find_by(code: term, country: term, county: term, city: term, state: term)
end
find_by(code: nil, country: nil, county: nil, city: nil, state: nil) click to toggle source
# File lib/postal-codes-search.rb, line 20
def find_by(code: nil, country: nil, county: nil, city: nil, state: nil)
  data_source.select do |postal_code|
    selectable?(code, postal_code['postal_code']) ||
      selectable?(country, postal_code['country']) ||
      selectable?(county, postal_code['county']) ||
      selectable?(city, postal_code['city']) ||
      selectable?(state, postal_code['state'])
  end
end
load() click to toggle source
# File lib/postal-codes-search.rb, line 53
def load
  data_source
end
selectable?(term, value) click to toggle source
# File lib/postal-codes-search.rb, line 16
def selectable?(term, value)
  attribute_present(term) && value && value.to_s.downcase.include?(term.to_s.downcase)
end