--- /dev/null
+class Country
+ attr_reader :code, :min_lat, :max_lat, :min_lon, :max_lon
+
+ def initialize(code, min_lat, max_lat, min_lon, max_lon)
+ @code = code
+ @min_lat = min_lat
+ @max_lat = max_lat
+ @min_lon = min_lon
+ @max_lon = max_lon
+ end
+
+ def self.find_by_code(code)
+ countries[code]
+ end
+
+private
+
+ def self.countries
+ @@countries ||= load_countries
+ end
+
+ def self.load_countries
+ countries = Hash.new
+ xml = REXML::Document.new(File.read("config/countries.xml"))
+
+ xml.elements.each("geonames/country") do |ele|
+ code = ele.get_text("countryCode").to_s
+ minlon = ele.get_text("west").to_s
+ minlat = ele.get_text("south").to_s
+ maxlon = ele.get_text("east").to_s
+ maxlat = ele.get_text("north").to_s
+
+ countries[code] = Country.new(code, minlat.to_f, maxlat.to_f, minlon.to_f, maxlon.to_f)
+ end
+
+ countries
+ end
+end