class PostcodeInfo::Postcode

Attributes

as_given[R]

these attributes are set on construction

client[RW]
normalised[R]

these attributes are set on construction

Public Class Methods

new(given_postcode, client) click to toggle source

these attributes require lookups attr_reader :latitude, :longitude, :addresses, :local_authority

# File lib/postcodeinfo/postcode.rb, line 9
def initialize(given_postcode, client)
  @as_given = given_postcode
  @normalised = self.class.normalise(@as_given)
  @client = client
  @info = nil
end
normalise(postcode) click to toggle source
# File lib/postcodeinfo/postcode.rb, line 16
def self.normalise(postcode)
  postcode.downcase.gsub(/[^a-z0-9]/, '')
end

Public Instance Methods

addresses() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 40
def addresses
  @addresses ||= @client.addresses(@normalised)
end
Also aliased as: lookup_addresses!
country() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 35
def country
  lookup_info! if @info.nil?
  @country
end
latitude() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 20
def latitude
  lookup_info! if @info.nil?
  @latitude
end
local_authority() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 30
def local_authority
  lookup_info! if @info.nil?
  @local_authority
end
longitude() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 25
def longitude
  lookup_info! if @info.nil?
  @longitude
end
lookup_addresses!()
Alias for: addresses
lookup_info!() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 49
def lookup_info!
  @info = @client.info(@normalised)
  parse_info!
end
valid?() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 45
def valid?
  @valid ||= @client.valid?(@normalised)
end

Protected Instance Methods

parse_info!() click to toggle source
# File lib/postcodeinfo/postcode.rb, line 64
def parse_info!
  set_coordinates!(@info)
  @local_authority = @info[:local_authority]
  @country = @info[:country]
  @valid = true
end
set_coordinates!(info) click to toggle source
# File lib/postcodeinfo/postcode.rb, line 57
def set_coordinates!(info)
  if info[:centre]
    @latitude = info[:centre][:coordinates][0]
    @longitude = info[:centre][:coordinates][1]
  end
end