lib/uncharted/country.rb in uncharted-0.0.10 vs lib/uncharted/country.rb in uncharted-0.0.11
- old
+ new
@@ -19,10 +19,14 @@
def name(options = {})
I18n.t("countries.#{@alpha2}", {locale: options[:locale] || I18n.locale, default: @name})
end
+ def names
+ @names ||= Country.split_name(@name)
+ end
+
def to_s
@alpha2
end
def self.count
@@ -33,20 +37,40 @@
case objects
when Array
objects.collect {|c| data[c]}
when Country
objects
- else
- data[objects]
+ else # code
+ code = objects.to_s
+ code.upcase!
+ data[code]
end
end
+
+ def self.find_by_name(name)
+ closest = [nil, 0]
+ @data.each do |code, country|
+ return country if country.name == name
+ intersection = country.names & Country.split_name(name)
+ size = intersection.size
+ return country if size == country.names.size
+ closest = [country, size] if closest.last < size
+ end
+ return closest.first
+ end
def self.countries
@data.values
end
def self.data
@data ||= {}
+ end
+
+ def self.split_name(name)
+ name = I18n.transliterate(name)
+ name.downcase!
+ name.split
end
end
end
\ No newline at end of file