Country Data
There are lots of little bits of data that you often need relating to countries,
and I couldn't find any easy to use source of it. So I compiled it all here.
Work in Progress
This code base may change a bit until it hits 0.1.x
- feel free to use it, but be sure to check between upgrades.
I suspect that many of the currencies
entries on the countries may be wrong. Help checking them would be appreciated.
Countries
The data currently provided for each country is:
Status notes
The status
can be one of 'assigned', 'reserved', 'user assigned' or 'deleted'.
Assigned means that the code is properly in the ISO 3166 standard. Reserved means that the code is being prevented from being used. Deleted means that it has been deleted. User Assigned means that for some use cases it is required. Deleted means that it used to be in the standard but is now not.
See https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 for full details, especially the "User-assigned code elements" and "Reserved code elements" sections.
Regions
Countries are ofter grouped into regions. The list of regions is by no means exhaustive, pull requests very welcome for additions.
countries
An array of alpha2
codes for the countries in this region.
Currencies
It is not that useful to just have the currency code(s) for a country, so included is currency data too:
name
The english name for the currencycode
The ISO 4217 codenumber
The ISO 4217 numberdecimals
The number of decimal digits conventionally shownsymbol
The currency symbol for the currency (e.g. ¥, $ etc.). Some symbols are not available, in which case
symbol
contains the ISO 4217 code. Credit to bengourley/currency-symbol-map
for the symbol database.
Languages
A list of languages provided by ISO 639-2;
name
The english name for the languagealpha2
The two letter ISO 639-1 code for the language (may be blank).alpha3
The three letter terminological ISO 639-2 code for the language (may be blank).bibliograpic
The three letter bibliographic ISO 639-2 code for the language (may be blank).
Lookup
To make finding easier there are utility methods that can search the countries and currencies. See examples below.
Installing
npm install country-data
Example usage
var countries = require('country-data').countries,
currencies = require('country-data').currencies,
regions = require('country-data').regions,
languages = require('country-data').languages,
callingCountries = require('country-data').callingCountries;
console.log( countries.all );
console.log( currencies.all );
console.log( countries.BE.name );
console.log( countries.FRA.currencies );
console.log( currencies.USD.name );
console.log( regions.europe.countries )
var lookup = require('country-data').lookup;
var france = lookup.countries({name: 'France'})[0];
var eurozone_countries = lookup.countries({currencies: 'EUR'});
It is very simple for now - feel free to contribute more helpful accessors.
Possible future additions
More data for each country is most welcome. Obvious things that it might be nice
to add are:
Countries
- Wikipedia links
- Coordinates (centroid, bounding box, etc)
Currencies
- other currency that it is pegged to
Using with webpack
As this code loads the data from JSON files you need to add the JSON loader to webpack:
npm install json-loader --save-dev
and then include in your webpack.config.js
:
loaders: [
{ test: /\.json$/, loader: 'json' },
],
Other similar bits of code
- libphonenumber "Google's common Java, C++ and Javascript library for parsing, formatting, storing and validating international phone numbers."
How to contribute
The final format is JSON, but it is easier to work with CSV. Hence in the data
folder there are CSV files and scripts that convert them to JSON. Please don't
edit the JSON directly, but do it via the CSV.
These are the steps required:
git clone https://github.com/OpenBookPrices/country-data.git
cd country-data
npm install .
open data/countries.csv
make
mocha
git add .
git commit
git push
Sources
The currency data was copied from the Wikipedia ISO 4217 page.
The country calling codes came from the Wikipedia country calling codes page.