class Urbans::City
Attributes
__id__[RW]
country_id[RW]
id[RW]
names[RW]
province_id[RW]
Public Class Methods
all!(_country_id, _province_id, _locale=Urbans.locale)
click to toggle source
# File lib/urbans/foundations/city.rb, line 11 def self.all! _country_id, _province_id, _locale=Urbans.locale cities = [] country_id = _country_id.to_s.downcase.to_sym province_id = _province_id.to_s.downcase.to_sym locale = _locale.to_s.downcase.to_sym Urbans::CITIES[country_id] ||= {} from_file(country_id, locale).each do |_current_province_id, province_cities| current_province_id = _current_province_id.to_s.downcase.to_sym Urbans::CITIES[country_id][current_province_id] ||= {} province_cities.each do |_city_id, city_name| city_id = _city_id.to_s.downcase.to_sym city = Urbans::CITIES[country_id][current_province_id][city_id] unless city city = Urbans::City.new city.__id__ = _city_id city.id = "#{country_id}.#{current_province_id}.#{city_id}" city.country_id = country_id city.province_id = current_province_id Urbans::CITIES[country_id][current_province_id][city_id] = city end city.names[locale] = city_name cities << city if current_province_id == province_id end end cities end
from_file(_country_id, _locale)
click to toggle source
# File lib/urbans/foundations/city.rb, line 95 def self.from_file _country_id, _locale locale = _locale.to_s.downcase country_id = _country_id.to_s.downcase from_file = YAML.load_file(Urbans::URBAN_PATH + "urbans/data/#{locale}.#{country_id}.cities.yml") from_file[locale]["cities"][country_id] end
get(arg)
click to toggle source
# File lib/urbans/foundations/city.rb, line 44 def self.get arg _country_id = _province_id = _city_id = nil if arg.is_a?(Hash) _country_id, _province_id, _city_id = arg.fetch(:country), arg.fetch(:province), arg[:city] elsif arg.is_a?(String) _arg = arg.split(".") _country_id, _province_id, _city_id = _arg[0], _arg[1], _arg[2] end if _city_id.nil? return all! _country_id, _province_id end country_id = _country_id.to_s.downcase.to_sym province_id = _province_id.to_s.downcase.to_sym city_id = _city_id.to_s.downcase.to_sym if Urbans::CITIES[country_id].nil? || Urbans::CITIES[country_id][province_id].nil? || Urbans::CITIES[country_id][province_id][city_id].nil? all! country_id, province_id, Urbans.locale end city = Urbans::CITIES[country_id][province_id][city_id] city end
new()
click to toggle source
# File lib/urbans/foundations/city.rb, line 7 def initialize self.names = {} end
Public Instance Methods
<=>(another)
click to toggle source
# File lib/urbans/foundations/city.rb, line 91 def <=> another self.name <=> another.name end
country()
click to toggle source
# File lib/urbans/foundations/city.rb, line 83 def country Urbans.country.get country_id end
name(_locale=Urbans.locale)
click to toggle source
# File lib/urbans/foundations/city.rb, line 71 def name _locale=Urbans.locale locale = _locale.to_s.downcase.to_sym if names[locale].nil? cities_by_province = self.class.from_file(country_id, locale)[province_id.to_s.downcase] city_local_name = cities_by_province[__id__] names[locale] = city_local_name end names[locale] end
province()
click to toggle source
# File lib/urbans/foundations/city.rb, line 87 def province Urbans.province.get country: country_id, province: province_id end