diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/norwegian-postcodes.rb | 19 |
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) |