aboutsummaryrefslogtreecommitdiffstats
path: root/lib/norwegian-postcodes.rb
diff options
context:
space:
mode:
authorHarald Eilertsen <haraldei@anduin.net>2015-02-01 17:41:13 +0100
committerHarald Eilertsen <haraldei@anduin.net>2015-02-01 22:24:34 +0100
commit754ee1b4c4ca5027233b4ae3b2aefd486e458e62 (patch)
treeba2e2acbe782857064f4bcaf338ebf706ee6b513 /lib/norwegian-postcodes.rb
parentfb763dc9c7616566f3ef4b1c94d79619bd382902 (diff)
downloadpostcodes-norway-754ee1b4c4ca5027233b4ae3b2aefd486e458e62.tar.gz
postcodes-norway-754ee1b4c4ca5027233b4ae3b2aefd486e458e62.tar.bz2
postcodes-norway-754ee1b4c4ca5027233b4ae3b2aefd486e458e62.zip
Return `nil` if postcodes don't match exactly.
Diffstat (limited to 'lib/norwegian-postcodes.rb')
-rw-r--r--lib/norwegian-postcodes.rb19
1 files changed, 12 insertions, 7 deletions
diff --git a/lib/norwegian-postcodes.rb b/lib/norwegian-postcodes.rb
index cc3cd31..be77c8e 100644
--- a/lib/norwegian-postcodes.rb
+++ b/lib/norwegian-postcodes.rb
@@ -40,26 +40,31 @@ module PostCodes
[code, PostCodes.county(code)]
end
- def >=(postcode)
- @postcode.to_i >= postcode.to_i
- end
-
def to_s
[@postcode, @city, @municipality, @municipality_name, @cat].join("\t")
end
end
class << self
- def load(f)
+ def load(file)
@postcodes = []
- IO.foreach(f, :encoding => Encoding::ISO_8859_15) do |l|
+ if file.is_a?(String)
+ f = File.open(file, :encoding => Encoding::ISO_8859_15)
+ else
+ f = file
+ end
+
+ f.each_line do |l|
a = l.chomp().split("\t").map{|s| s.encode(Encoding::UTF_8)}
@postcodes << PostCode.new(*a)
end
end
def search(pc)
- @postcodes.bsearch {|x| x >= pc}
+ res = @postcodes.bsearch {|x| x.postcode.to_i >= pc.to_i}
+ unless res.nil?
+ res.postcode.to_i == pc.to_i ? res : nil
+ end
end
def county(c)