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)
  matched_subdivisions = subdivisions.select do |key, value|
    subdivision_str == key || value.match?(subdivision_str)
  end.values
  matched_subdivisions.min_by { |subdivision| subdivision_types.index(subdivision.type) }
end

def humanize_string(str)

:reek:UtilityFunction
def humanize_string(str)
  (str[0].upcase + str.tr('_', ' ')[1..]).freeze
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, value| value['type'].humanize.freeze }.uniq
  else
    subdivisions.map { |_k, value| humanize_string(value['type']) }.uniq
  end
end

def subdivision_for_string?(subdivision_str)

def subdivision_for_string?(subdivision_str)
  subdivisions.transform_values(&:translations)
              .any? { |key, value| subdivision_str == key || value.values.include?(subdivision_str) }
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, value| value.translations[locale] || value.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 { |key, value| [value.translations[locale] || value.name, key] }
end

def subdivision_types

Returns:
  • (Array) - the list of subdivision types for this country
def subdivision_types
  subdivisions.map { |_k, value| value['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, value| types.include?(value.type) }
end