Sha256: fcb479e654a7154e3f5c2816d14525a547fd149367f35b537f9eaa1fb512c9d5

Contents?: true

Size: 1.34 KB

Versions: 8

Compression:

Stored size: 1.34 KB

Contents

# frozen_string_literal: true

require 'country_codes/country'
require 'country_codes/lookup_table'
require 'country_codes/version'

module CountryCodes
  # A list of allowed search fields (see {.instance}).
  SEARCHABLE_FIELDS = %i[officialName otherNames nationality sovereignty alpha2 alpha3].freeze

  # Creates an instance of {CountryCodes::LookupTable} to be used for querying.
  #
  # @param [String] locale A locale of expected search terms.
  # @param [Array<Symbol>] search_fields Fields available for searching (see {SEARCHABLE_FIELDS}).
  # @return [LookupTable]
  def self.instance(locale: 'en', search_fields: %i[officialName otherNames nationality])
    unless (search_fields - SEARCHABLE_FIELDS).empty?
      raise ArgumentError, "Unknown search fields: #{search_fields - SEARCHABLE_FIELDS}"
    end

    CountryCodes::LookupTable.new(locale, search_fields.map(&:to_s))
  end

  # Searches for a country that matches a given term.
  # If nothing was found, returns `nil`.
  # Check {.instance} for the description of named parameters.
  #
  # @param [String] term Search term
  # @param [String] locale
  # @param [Array<Symbol>] search_fields
  # @return [Country, nil] Search result
  def self.find(term, locale: 'en', search_fields: %i[officialName otherNames nationality])
    instance(locale: locale, search_fields: search_fields).find(term)
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
country-codes-rb-0.1.8-java lib/country_codes.rb
country-codes-rb-0.1.7-java lib/country_codes.rb
country-codes-rb-0.1.6-java lib/country_codes.rb
country-codes-rb-0.1.5-java lib/country_codes.rb
country-codes-rb-0.1.3-java lib/country_codes.rb
country-codes-rb-0.1.2-java lib/country_codes.rb
country-codes-rb-0.1.1-java lib/country_codes.rb
country-codes-rb-0.1.0-java lib/country_codes.rb