36 lines
874 B
Ruby
36 lines
874 B
Ruby
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(code)
|
|
countries[code]
|
|
end
|
|
|
|
def self.countries
|
|
@countries ||= load_countries
|
|
end
|
|
|
|
def self.load_countries
|
|
countries = {}
|
|
xml = REXML::Document.new(Rails.root.join("config/countries.xml").read)
|
|
|
|
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
|