Merge branch 'master' into patch/view_migration
[rails.git] / lib / country.rb
1 class Country
2   attr_reader :code, :min_lat, :max_lat, :min_lon, :max_lon
3
4   def initialize(code, min_lat, max_lat, min_lon, max_lon)
5     @code = code
6     @min_lat = min_lat
7     @max_lat = max_lat
8     @min_lon = min_lon
9     @max_lon = max_lon
10   end
11
12   def self.find(code)
13     countries[code]
14   end
15
16   def self.countries
17     @countries ||= load_countries
18   end
19
20   def self.load_countries
21     countries = {}
22     xml = REXML::Document.new(File.read(Rails.root.join("config", "countries.xml")))
23
24     xml.elements.each("geonames/country") do |ele|
25       code = ele.get_text("countryCode").to_s
26       minlon = ele.get_text("west").to_s
27       minlat = ele.get_text("south").to_s
28       maxlon = ele.get_text("east").to_s
29       maxlat = ele.get_text("north").to_s
30
31       countries[code] = Country.new(code, minlat.to_f, maxlat.to_f, minlon.to_f, maxlon.to_f)
32     end
33
34     countries
35   end
36 end