Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/farski/iso-country


https://github.com/farski/iso-country

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# Iso::Country

The iso-country gem helps you manage country data, without needing rely on a database.

It uses values from the ISO 3166-1 standard. The data can be localized, making it easy to present country names correctly for a given local (eg Spain vs España)

## Usage

Once the gem is loaded it provides pure Ruby instances of the countries listed in the source data .json file. Countries are primarily referenced using a symbol of their ISO 3166-1 Alpha-2 two-character country code:

sample_codes = [:us, :gb, :ru]

The easiest way to access a country's object instance is with the ::find method:

Iso::Country::Country.find(:us)
# => #

You can return an array of multiple countries:

Country.find(:us, :gb, :ru)

To return an array of all countries (there is no guarantee as to the order):

Country.all # or Country.find(:all)

Basic full-name searching can be done with

Country.find_with_name("Brazil")

This will search all localizations, but the input must be an exact match. If you want to search a specific localization only:

Country.find_with_name("España", :es)

There is also a ::where method that will do it's best to find what you're looking for

Country.where(:us)
Country.where('RU')
Country.where('GBR')
Country.where(100)
Country.where('Sweeden')
Country.where(alpha2: :ru)
Country.where(alpha3: :gbr)
Country.where(numeric: 100)

## Mongoid

Support for country as a Mongoid field type is included

field :country, type: Iso::Country::Country

You could then

country = Country.find(params[:country])
Place.new(name: params[:name], country: country)

And later

place.country.name

Without needing to create a new table in your database with seeded country data

## Rails

A future version of the gem will include a form helper

## TODO

- Support for actual localization (en-us, etc) rather than just language (en, etc)
- When there's a default locale (eg in a rails app) use that
- Support for long and short names in localizations
- Better searching for partial name matches

## License

MIT license