Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/farski/iso-country
https://github.com/farski/iso-country
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/farski/iso-country
- Owner: farski
- License: mit
- Created: 2012-07-31T00:39:53.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-11-23T20:28:24.000Z (about 10 years ago)
- Last Synced: 2024-08-09T14:33:25.677Z (5 months ago)
- Language: Ruby
- Homepage: https://rubygems.org/gems/iso-country
- Size: 120 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
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