module ISO3166::CountrySubdivisionMethods

def find_subdivision_by_name(subdivision_str)

Returns:
  • (Subdivision) - The first subdivision matching the provided string

Parameters:
  • subdivision_str (String) -- A subdivision name or code to search for. Search includes translated subdivision names.
def find_subdivision_by_name(subdivision_str)
  subdivisions.select do |k, v|
    subdivision_str == k || v.name == subdivision_str || v.translations.values.include?(subdivision_str)
  end.values.first
end

def humanize_string(str)

def humanize_string(str)
  str[0].upcase + str.tr('_', ' ')[1..]
end

def humanized_subdivision_types

Returns:
  • (Array) - the list of humanized subdivision types for this country. Uses ActiveSupport's `#humanize` if available
def humanized_subdivision_types
  if String.instance_methods.include?(:humanize)
    subdivisions.map { |_k, v| v['type'].humanize }.uniq
  else
    subdivisions.map { |_k, v| humanize_string(v['type']) }.uniq
  end
end

def states

def states
  if RUBY_VERSION =~ /^3\.\d\.\d/
    warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
         uplevel: 1, category: :deprecated
  else
    warn 'DEPRECATION WARNING: The Country#states method has been deprecated and will be removed in 6.0. Please use Country#subdivisions instead.',
         uplevel: 1
  end
  subdivisions
end

def subdivision_for_string?(subdivision_str)

def subdivision_for_string?(subdivision_str)
  !subdivisions.transform_values(&:translations)
               .select { |k, v| subdivision_str == k || v.values.include?(subdivision_str) }.empty?
end

def subdivision_names(locale = 'en')

Returns:
  • (Array) - A list of subdivision names for this country.

Parameters:
  • locale (String) -- The locale to use for translations.
def subdivision_names(locale = 'en')
  subdivisions.map { |_k, v| v.translations[locale] || v.name }
end

def subdivision_names_with_codes(locale = 'en')

Returns:
  • (Array) - This Country's subdivision pairs of names and codes.

Parameters:
  • locale (String) -- The locale to use for translations.
def subdivision_names_with_codes(locale = 'en')
  subdivisions.map { |k, v| [v.translations[locale] || v.name, k] }
end

def subdivision_types

Returns:
  • (Array) - the list of subdivision types for this country
def subdivision_types
  subdivisions.map { |_k, v| v['type'] }.uniq
end

def subdivisions

Returns:
  • (Array) - the list of subdivisions for this Country.
def subdivisions
  @subdivisions ||= if data['subdivisions']
                      ISO3166::Data.create_subdivisions(data['subdivisions'])
                    else
                      ISO3166::Data.subdivisions(alpha2)
                    end
end

def subdivisions?

+true+ if this Country has any Subdivisions.
def subdivisions?
  !subdivisions.empty?
end

def subdivisions_of_types(types)

Returns:
  • (Array) - the list of subdivisions of the given type(s) for this Country.

Parameters:
  • types (Array) -- The locale to use for translations.
def subdivisions_of_types(types)
  subdivisions.select { |_k, v| types.include?(v.type) }
end