iso3166-country-codes 0.20130302.4 → 0.20140203.6
raw patch · 2 files changed
+818/−803 lines, 2 filesdep +http-conduitdep ~basePVP ok
version bump matches the API change (PVP)
Dependencies added: http-conduit
Dependency ranges changed: base
API changes (from Hackage documentation)
+ Data.ISO3166_CountryCodes: Code :: CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_0CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_100CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_101CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_102CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_103CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_104CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_105CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_106CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_107CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_108CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_109CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_10CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_110CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_111CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_112CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_113CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_114CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_115CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_116CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_117CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_118CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_119CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_11CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_120CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_121CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_122CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_123CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_124CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_125CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_126CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_127CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_128CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_129CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_12CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_130CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_131CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_132CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_133CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_134CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_135CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_136CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_137CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_138CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_139CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_13CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_140CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_141CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_142CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_143CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_144CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_145CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_146CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_147CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_148CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_149CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_14CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_150CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_151CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_152CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_153CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_154CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_155CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_156CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_157CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_158CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_159CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_15CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_160CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_161CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_162CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_163CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_164CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_165CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_166CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_167CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_168CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_169CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_16CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_170CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_171CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_172CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_173CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_174CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_175CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_176CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_177CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_178CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_179CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_17CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_180CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_181CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_182CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_183CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_184CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_185CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_186CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_187CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_188CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_189CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_18CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_190CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_191CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_192CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_193CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_194CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_195CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_196CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_197CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_198CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_199CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_19CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_1CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_200CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_201CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_202CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_203CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_204CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_205CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_206CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_207CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_208CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_209CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_20CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_210CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_211CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_212CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_213CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_214CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_215CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_216CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_217CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_218CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_219CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_21CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_220CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_221CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_222CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_223CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_224CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_225CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_226CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_227CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_228CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_229CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_22CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_230CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_231CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_232CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_233CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_234CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_235CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_236CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_237CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_238CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_239CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_23CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_240CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_241CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_242CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_243CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_244CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_245CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_246CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_247CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_248CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_249CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_24CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_25CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_26CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_27CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_28CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_29CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_2CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_30CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_31CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_32CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_33CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_34CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_35CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_36CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_37CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_38CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_39CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_3CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_40CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_41CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_42CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_43CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_44CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_45CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_46CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_47CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_48CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_49CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_4CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_50CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_51CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_52CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_53CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_54CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_55CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_56CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_57CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_58CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_59CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_5CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_60CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_61CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_62CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_63CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_64CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_65CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_66CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_67CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_68CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_69CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_6CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_70CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_71CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_72CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_73CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_74CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_75CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_76CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_77CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_78CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_79CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_7CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_80CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_81CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_82CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_83CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_84CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_85CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_86CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_87CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_88CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_89CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_8CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_90CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_91CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_92CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_93CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_94CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_95CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_96CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_97CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_98CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_99CountryCode
+ Data.ISO3166_CountryCodes: instance Constructor C1_9CountryCode
+ Data.ISO3166_CountryCodes: instance Datatype D1CountryCode
+ Data.ISO3166_CountryCodes: instance Generic CountryCode
Files
- Data/ISO3166_CountryCodes.hs +815/−800
- iso3166-country-codes.cabal +3/−3
Data/ISO3166_CountryCodes.hs view
@@ -18,803 +18,818 @@ are the same as some standard Haskell constructors. -}-module Data.ISO3166_CountryCodes- (CountryCode(..),- countryNameFromCode,- readableCountryName- ) where-import qualified Prelude as P-import Prelude ((.),not,(==),otherwise,(&&),(==),(/=))-import Control.Monad-import Data.Char-import Data.List--{- | A human readable version of the official name of a country- from its country code-- Uses some ad-hockery to rearrange the order of the words.---}-readableCountryName :: CountryCode -> P.String--readableCountryName- = concat . intersperse " " . rearrange . fmap up1 . words .- countryNameFromCode- where up1 [] = []- up1 (c:rest) | not (isAlpha c) = c:up1 rest- up1 "OF" = "of"- up1 "THE" = "the"- up1 "AND" = "and"- up1 "U.S." = "US" -- gawd- up1 ('M':'C':l) = "Mc"++up1 l -- Don't do MacEdonia!- -- but there are no Mac_ countries yet- up1 ('D':'\'':l) = "d'"++up1 l- up1 (c:cs) = toUpper c: downup cs- downup [] = [] -- needed for hyphenated names- downup (c:cs) | c=='-' = c:up1 cs- | otherwise = toLower c:downup cs- rearrange [] = []- rearrange [c] = [c]- rearrange ll@(n:l)- | last l `elem` ["of", "the"] && last n == ','- = onhead up1 l++[[c|c<-n,c/=',']]- | otherwise = ll- onhead f [] = []- onhead f (h:r) = f h:r-{- Copyright © 2010 Jón Fairbairn--}-data CountryCode = - AF -- ^ AFGHANISTAN- |- AX -- ^ ÅLAND ISLANDS- |- AL -- ^ ALBANIA- |- DZ -- ^ ALGERIA- |- AS -- ^ AMERICAN SAMOA- |- AD -- ^ ANDORRA- |- AO -- ^ ANGOLA- |- AI -- ^ ANGUILLA- |- AQ -- ^ ANTARCTICA- |- AG -- ^ ANTIGUA AND BARBUDA- |- AR -- ^ ARGENTINA- |- AM -- ^ ARMENIA- |- AW -- ^ ARUBA- |- AU -- ^ AUSTRALIA- |- AT -- ^ AUSTRIA- |- AZ -- ^ AZERBAIJAN- |- BS -- ^ BAHAMAS- |- BH -- ^ BAHRAIN- |- BD -- ^ BANGLADESH- |- BB -- ^ BARBADOS- |- BY -- ^ BELARUS- |- BE -- ^ BELGIUM- |- BZ -- ^ BELIZE- |- BJ -- ^ BENIN- |- BM -- ^ BERMUDA- |- BT -- ^ BHUTAN- |- BO -- ^ BOLIVIA, PLURINATIONAL STATE OF- |- BQ -- ^ BONAIRE, SINT EUSTATIUS AND SABA- |- BA -- ^ BOSNIA AND HERZEGOVINA- |- BW -- ^ BOTSWANA- |- BV -- ^ BOUVET ISLAND- |- BR -- ^ BRAZIL- |- IO -- ^ BRITISH INDIAN OCEAN TERRITORY- |- BN -- ^ BRUNEI DARUSSALAM- |- BG -- ^ BULGARIA- |- BF -- ^ BURKINA FASO- |- BI -- ^ BURUNDI- |- KH -- ^ CAMBODIA- |- CM -- ^ CAMEROON- |- CA -- ^ CANADA- |- CV -- ^ CAPE VERDE- |- KY -- ^ CAYMAN ISLANDS- |- CF -- ^ CENTRAL AFRICAN REPUBLIC- |- TD -- ^ CHAD- |- CL -- ^ CHILE- |- CN -- ^ CHINA- |- CX -- ^ CHRISTMAS ISLAND- |- CC -- ^ COCOS (KEELING) ISLANDS- |- CO -- ^ COLOMBIA- |- KM -- ^ COMOROS- |- CG -- ^ CONGO- |- CD -- ^ CONGO, THE DEMOCRATIC REPUBLIC OF THE- |- CK -- ^ COOK ISLANDS- |- CR -- ^ COSTA RICA- |- CI -- ^ CÔTE D'IVOIRE- |- HR -- ^ CROATIA- |- CU -- ^ CUBA- |- CW -- ^ CURAÇAO- |- CY -- ^ CYPRUS- |- CZ -- ^ CZECH REPUBLIC- |- DK -- ^ DENMARK- |- DJ -- ^ DJIBOUTI- |- DM -- ^ DOMINICA- |- DO -- ^ DOMINICAN REPUBLIC- |- EC -- ^ ECUADOR- |- EG -- ^ EGYPT- |- SV -- ^ EL SALVADOR- |- GQ -- ^ EQUATORIAL GUINEA- |- ER -- ^ ERITREA- |- EE -- ^ ESTONIA- |- ET -- ^ ETHIOPIA- |- FK -- ^ FALKLAND ISLANDS (MALVINAS)- |- FO -- ^ FAROE ISLANDS- |- FJ -- ^ FIJI- |- FI -- ^ FINLAND- |- FR -- ^ FRANCE- |- GF -- ^ FRENCH GUIANA- |- PF -- ^ FRENCH POLYNESIA- |- TF -- ^ FRENCH SOUTHERN TERRITORIES- |- GA -- ^ GABON- |- GM -- ^ GAMBIA- |- GE -- ^ GEORGIA- |- DE -- ^ GERMANY- |- GH -- ^ GHANA- |- GI -- ^ GIBRALTAR- |- GR -- ^ GREECE- |- GL -- ^ GREENLAND- |- GD -- ^ GRENADA- |- GP -- ^ GUADELOUPE- |- GU -- ^ GUAM- |- GT -- ^ GUATEMALA- |- GG -- ^ GUERNSEY- |- GN -- ^ GUINEA- |- GW -- ^ GUINEA-BISSAU- |- GY -- ^ GUYANA- |- HT -- ^ HAITI- |- HM -- ^ HEARD ISLAND AND MCDONALD ISLANDS- |- VA -- ^ HOLY SEE (VATICAN CITY STATE)- |- HN -- ^ HONDURAS- |- HK -- ^ HONG KONG- |- HU -- ^ HUNGARY- |- IS -- ^ ICELAND- |- IN -- ^ INDIA- |- ID -- ^ INDONESIA- |- IR -- ^ IRAN, ISLAMIC REPUBLIC OF- |- IQ -- ^ IRAQ- |- IE -- ^ IRELAND- |- IM -- ^ ISLE OF MAN- |- IL -- ^ ISRAEL- |- IT -- ^ ITALY- |- JM -- ^ JAMAICA- |- JP -- ^ JAPAN- |- JE -- ^ JERSEY- |- JO -- ^ JORDAN- |- KZ -- ^ KAZAKHSTAN- |- KE -- ^ KENYA- |- KI -- ^ KIRIBATI- |- KP -- ^ KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF- |- KR -- ^ KOREA, REPUBLIC OF- |- KW -- ^ KUWAIT- |- KG -- ^ KYRGYZSTAN- |- LA -- ^ LAO PEOPLE'S DEMOCRATIC REPUBLIC- |- LV -- ^ LATVIA- |- LB -- ^ LEBANON- |- LS -- ^ LESOTHO- |- LR -- ^ LIBERIA- |- LY -- ^ LIBYA- |- LI -- ^ LIECHTENSTEIN- |- LT -- ^ LITHUANIA- |- LU -- ^ LUXEMBOURG- |- MO -- ^ MACAO- |- MK -- ^ MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF- |- MG -- ^ MADAGASCAR- |- MW -- ^ MALAWI- |- MY -- ^ MALAYSIA- |- MV -- ^ MALDIVES- |- ML -- ^ MALI- |- MT -- ^ MALTA- |- MH -- ^ MARSHALL ISLANDS- |- MQ -- ^ MARTINIQUE- |- MR -- ^ MAURITANIA- |- MU -- ^ MAURITIUS- |- YT -- ^ MAYOTTE- |- MX -- ^ MEXICO- |- FM -- ^ MICRONESIA, FEDERATED STATES OF- |- MD -- ^ MOLDOVA, REPUBLIC OF- |- MC -- ^ MONACO- |- MN -- ^ MONGOLIA- |- ME -- ^ MONTENEGRO- |- MS -- ^ MONTSERRAT- |- MA -- ^ MOROCCO- |- MZ -- ^ MOZAMBIQUE- |- MM -- ^ MYANMAR- |- NA -- ^ NAMIBIA- |- NR -- ^ NAURU- |- NP -- ^ NEPAL- |- NL -- ^ NETHERLANDS- |- NC -- ^ NEW CALEDONIA- |- NZ -- ^ NEW ZEALAND- |- NI -- ^ NICARAGUA- |- NE -- ^ NIGER- |- NG -- ^ NIGERIA- |- NU -- ^ NIUE- |- NF -- ^ NORFOLK ISLAND- |- MP -- ^ NORTHERN MARIANA ISLANDS- |- NO -- ^ NORWAY- |- OM -- ^ OMAN- |- PK -- ^ PAKISTAN- |- PW -- ^ PALAU- |- PS -- ^ PALESTINE, STATE OF- |- PA -- ^ PANAMA- |- PG -- ^ PAPUA NEW GUINEA- |- PY -- ^ PARAGUAY- |- PE -- ^ PERU- |- PH -- ^ PHILIPPINES- |- PN -- ^ PITCAIRN- |- PL -- ^ POLAND- |- PT -- ^ PORTUGAL- |- PR -- ^ PUERTO RICO- |- QA -- ^ QATAR- |- RE -- ^ RÉUNION- |- RO -- ^ ROMANIA- |- RU -- ^ RUSSIAN FEDERATION- |- RW -- ^ RWANDA- |- BL -- ^ SAINT BARTHÉLEMY- |- SH -- ^ SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA- |- KN -- ^ SAINT KITTS AND NEVIS- |- LC -- ^ SAINT LUCIA- |- MF -- ^ SAINT MARTIN (FRENCH PART)- |- PM -- ^ SAINT PIERRE AND MIQUELON- |- VC -- ^ SAINT VINCENT AND THE GRENADINES- |- WS -- ^ SAMOA- |- SM -- ^ SAN MARINO- |- ST -- ^ SAO TOME AND PRINCIPE- |- SA -- ^ SAUDI ARABIA- |- SN -- ^ SENEGAL- |- RS -- ^ SERBIA- |- SC -- ^ SEYCHELLES- |- SL -- ^ SIERRA LEONE- |- SG -- ^ SINGAPORE- |- SX -- ^ SINT MAARTEN (DUTCH PART)- |- SK -- ^ SLOVAKIA- |- SI -- ^ SLOVENIA- |- SB -- ^ SOLOMON ISLANDS- |- SO -- ^ SOMALIA- |- ZA -- ^ SOUTH AFRICA- |- GS -- ^ SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS- |- SS -- ^ SOUTH SUDAN- |- ES -- ^ SPAIN- |- LK -- ^ SRI LANKA- |- SD -- ^ SUDAN- |- SR -- ^ SURINAME- |- SJ -- ^ SVALBARD AND JAN MAYEN- |- SZ -- ^ SWAZILAND- |- SE -- ^ SWEDEN- |- CH -- ^ SWITZERLAND- |- SY -- ^ SYRIAN ARAB REPUBLIC- |- TW -- ^ TAIWAN, PROVINCE OF CHINA- |- TJ -- ^ TAJIKISTAN- |- TZ -- ^ TANZANIA, UNITED REPUBLIC OF- |- TH -- ^ THAILAND- |- TL -- ^ TIMOR-LESTE- |- TG -- ^ TOGO- |- TK -- ^ TOKELAU- |- TO -- ^ TONGA- |- TT -- ^ TRINIDAD AND TOBAGO- |- TN -- ^ TUNISIA- |- TR -- ^ TURKEY- |- TM -- ^ TURKMENISTAN- |- TC -- ^ TURKS AND CAICOS ISLANDS- |- TV -- ^ TUVALU- |- UG -- ^ UGANDA- |- UA -- ^ UKRAINE- |- AE -- ^ UNITED ARAB EMIRATES- |- GB -- ^ UNITED KINGDOM- |- US -- ^ UNITED STATES- |- UM -- ^ UNITED STATES MINOR OUTLYING ISLANDS- |- UY -- ^ URUGUAY- |- UZ -- ^ UZBEKISTAN- |- VU -- ^ VANUATU- |- VE -- ^ VENEZUELA, BOLIVARIAN REPUBLIC OF- |- VN -- ^ VIET NAM- |- VG -- ^ VIRGIN ISLANDS, BRITISH- |- VI -- ^ VIRGIN ISLANDS, U.S.- |- WF -- ^ WALLIS AND FUTUNA- |- EH -- ^ WESTERN SAHARA- |- YE -- ^ YEMEN- |- ZM -- ^ ZAMBIA- |- ZW -- ^ ZIMBABWE- deriving (P.Eq,P.Read,P.Show,P.Enum,P.Bounded,P.Ord)--{-|- convert a country code to the official (English) name of the country-- see @'readableCountryName'@ for something with a more pleasing word order and capitalisation--}-countryNameFromCode:: CountryCode -> P.String-countryNameFromCode AF = "AFGHANISTAN"-countryNameFromCode AX = "ÅLAND ISLANDS"-countryNameFromCode AL = "ALBANIA"-countryNameFromCode DZ = "ALGERIA"-countryNameFromCode AS = "AMERICAN SAMOA"-countryNameFromCode AD = "ANDORRA"-countryNameFromCode AO = "ANGOLA"-countryNameFromCode AI = "ANGUILLA"-countryNameFromCode AQ = "ANTARCTICA"-countryNameFromCode AG = "ANTIGUA AND BARBUDA"-countryNameFromCode AR = "ARGENTINA"-countryNameFromCode AM = "ARMENIA"-countryNameFromCode AW = "ARUBA"-countryNameFromCode AU = "AUSTRALIA"-countryNameFromCode AT = "AUSTRIA"-countryNameFromCode AZ = "AZERBAIJAN"-countryNameFromCode BS = "BAHAMAS"-countryNameFromCode BH = "BAHRAIN"-countryNameFromCode BD = "BANGLADESH"-countryNameFromCode BB = "BARBADOS"-countryNameFromCode BY = "BELARUS"-countryNameFromCode BE = "BELGIUM"-countryNameFromCode BZ = "BELIZE"-countryNameFromCode BJ = "BENIN"-countryNameFromCode BM = "BERMUDA"-countryNameFromCode BT = "BHUTAN"-countryNameFromCode BO = "BOLIVIA, PLURINATIONAL STATE OF"-countryNameFromCode BQ = "BONAIRE, SINT EUSTATIUS AND SABA"-countryNameFromCode BA = "BOSNIA AND HERZEGOVINA"-countryNameFromCode BW = "BOTSWANA"-countryNameFromCode BV = "BOUVET ISLAND"-countryNameFromCode BR = "BRAZIL"-countryNameFromCode IO = "BRITISH INDIAN OCEAN TERRITORY"-countryNameFromCode BN = "BRUNEI DARUSSALAM"-countryNameFromCode BG = "BULGARIA"-countryNameFromCode BF = "BURKINA FASO"-countryNameFromCode BI = "BURUNDI"-countryNameFromCode KH = "CAMBODIA"-countryNameFromCode CM = "CAMEROON"-countryNameFromCode CA = "CANADA"-countryNameFromCode CV = "CAPE VERDE"-countryNameFromCode KY = "CAYMAN ISLANDS"-countryNameFromCode CF = "CENTRAL AFRICAN REPUBLIC"-countryNameFromCode TD = "CHAD"-countryNameFromCode CL = "CHILE"-countryNameFromCode CN = "CHINA"-countryNameFromCode CX = "CHRISTMAS ISLAND"-countryNameFromCode CC = "COCOS (KEELING) ISLANDS"-countryNameFromCode CO = "COLOMBIA"-countryNameFromCode KM = "COMOROS"-countryNameFromCode CG = "CONGO"-countryNameFromCode CD = "CONGO, THE DEMOCRATIC REPUBLIC OF THE"-countryNameFromCode CK = "COOK ISLANDS"-countryNameFromCode CR = "COSTA RICA"-countryNameFromCode CI = "CÔTE D'IVOIRE"-countryNameFromCode HR = "CROATIA"-countryNameFromCode CU = "CUBA"-countryNameFromCode CW = "CURAÇAO"-countryNameFromCode CY = "CYPRUS"-countryNameFromCode CZ = "CZECH REPUBLIC"-countryNameFromCode DK = "DENMARK"-countryNameFromCode DJ = "DJIBOUTI"-countryNameFromCode DM = "DOMINICA"-countryNameFromCode DO = "DOMINICAN REPUBLIC"-countryNameFromCode EC = "ECUADOR"-countryNameFromCode EG = "EGYPT"-countryNameFromCode SV = "EL SALVADOR"-countryNameFromCode GQ = "EQUATORIAL GUINEA"-countryNameFromCode ER = "ERITREA"-countryNameFromCode EE = "ESTONIA"-countryNameFromCode ET = "ETHIOPIA"-countryNameFromCode FK = "FALKLAND ISLANDS (MALVINAS)"-countryNameFromCode FO = "FAROE ISLANDS"-countryNameFromCode FJ = "FIJI"-countryNameFromCode FI = "FINLAND"-countryNameFromCode FR = "FRANCE"-countryNameFromCode GF = "FRENCH GUIANA"-countryNameFromCode PF = "FRENCH POLYNESIA"-countryNameFromCode TF = "FRENCH SOUTHERN TERRITORIES"-countryNameFromCode GA = "GABON"-countryNameFromCode GM = "GAMBIA"-countryNameFromCode GE = "GEORGIA"-countryNameFromCode DE = "GERMANY"-countryNameFromCode GH = "GHANA"-countryNameFromCode GI = "GIBRALTAR"-countryNameFromCode GR = "GREECE"-countryNameFromCode GL = "GREENLAND"-countryNameFromCode GD = "GRENADA"-countryNameFromCode GP = "GUADELOUPE"-countryNameFromCode GU = "GUAM"-countryNameFromCode GT = "GUATEMALA"-countryNameFromCode GG = "GUERNSEY"-countryNameFromCode GN = "GUINEA"-countryNameFromCode GW = "GUINEA-BISSAU"-countryNameFromCode GY = "GUYANA"-countryNameFromCode HT = "HAITI"-countryNameFromCode HM = "HEARD ISLAND AND MCDONALD ISLANDS"-countryNameFromCode VA = "HOLY SEE (VATICAN CITY STATE)"-countryNameFromCode HN = "HONDURAS"-countryNameFromCode HK = "HONG KONG"-countryNameFromCode HU = "HUNGARY"-countryNameFromCode IS = "ICELAND"-countryNameFromCode IN = "INDIA"-countryNameFromCode ID = "INDONESIA"-countryNameFromCode IR = "IRAN, ISLAMIC REPUBLIC OF"-countryNameFromCode IQ = "IRAQ"-countryNameFromCode IE = "IRELAND"-countryNameFromCode IM = "ISLE OF MAN"-countryNameFromCode IL = "ISRAEL"-countryNameFromCode IT = "ITALY"-countryNameFromCode JM = "JAMAICA"-countryNameFromCode JP = "JAPAN"-countryNameFromCode JE = "JERSEY"-countryNameFromCode JO = "JORDAN"-countryNameFromCode KZ = "KAZAKHSTAN"-countryNameFromCode KE = "KENYA"-countryNameFromCode KI = "KIRIBATI"-countryNameFromCode KP = "KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF"-countryNameFromCode KR = "KOREA, REPUBLIC OF"-countryNameFromCode KW = "KUWAIT"-countryNameFromCode KG = "KYRGYZSTAN"-countryNameFromCode LA = "LAO PEOPLE'S DEMOCRATIC REPUBLIC"-countryNameFromCode LV = "LATVIA"-countryNameFromCode LB = "LEBANON"-countryNameFromCode LS = "LESOTHO"-countryNameFromCode LR = "LIBERIA"-countryNameFromCode LY = "LIBYA"-countryNameFromCode LI = "LIECHTENSTEIN"-countryNameFromCode LT = "LITHUANIA"-countryNameFromCode LU = "LUXEMBOURG"-countryNameFromCode MO = "MACAO"-countryNameFromCode MK = "MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF"-countryNameFromCode MG = "MADAGASCAR"-countryNameFromCode MW = "MALAWI"-countryNameFromCode MY = "MALAYSIA"-countryNameFromCode MV = "MALDIVES"-countryNameFromCode ML = "MALI"-countryNameFromCode MT = "MALTA"-countryNameFromCode MH = "MARSHALL ISLANDS"-countryNameFromCode MQ = "MARTINIQUE"-countryNameFromCode MR = "MAURITANIA"-countryNameFromCode MU = "MAURITIUS"-countryNameFromCode YT = "MAYOTTE"-countryNameFromCode MX = "MEXICO"-countryNameFromCode FM = "MICRONESIA, FEDERATED STATES OF"-countryNameFromCode MD = "MOLDOVA, REPUBLIC OF"-countryNameFromCode MC = "MONACO"-countryNameFromCode MN = "MONGOLIA"-countryNameFromCode ME = "MONTENEGRO"-countryNameFromCode MS = "MONTSERRAT"-countryNameFromCode MA = "MOROCCO"-countryNameFromCode MZ = "MOZAMBIQUE"-countryNameFromCode MM = "MYANMAR"-countryNameFromCode NA = "NAMIBIA"-countryNameFromCode NR = "NAURU"-countryNameFromCode NP = "NEPAL"-countryNameFromCode NL = "NETHERLANDS"-countryNameFromCode NC = "NEW CALEDONIA"-countryNameFromCode NZ = "NEW ZEALAND"-countryNameFromCode NI = "NICARAGUA"-countryNameFromCode NE = "NIGER"-countryNameFromCode NG = "NIGERIA"-countryNameFromCode NU = "NIUE"-countryNameFromCode NF = "NORFOLK ISLAND"-countryNameFromCode MP = "NORTHERN MARIANA ISLANDS"-countryNameFromCode NO = "NORWAY"-countryNameFromCode OM = "OMAN"-countryNameFromCode PK = "PAKISTAN"-countryNameFromCode PW = "PALAU"-countryNameFromCode PS = "PALESTINE, STATE OF"-countryNameFromCode PA = "PANAMA"-countryNameFromCode PG = "PAPUA NEW GUINEA"-countryNameFromCode PY = "PARAGUAY"-countryNameFromCode PE = "PERU"-countryNameFromCode PH = "PHILIPPINES"-countryNameFromCode PN = "PITCAIRN"-countryNameFromCode PL = "POLAND"-countryNameFromCode PT = "PORTUGAL"-countryNameFromCode PR = "PUERTO RICO"-countryNameFromCode QA = "QATAR"-countryNameFromCode RE = "RÉUNION"-countryNameFromCode RO = "ROMANIA"-countryNameFromCode RU = "RUSSIAN FEDERATION"-countryNameFromCode RW = "RWANDA"-countryNameFromCode BL = "SAINT BARTHÉLEMY"-countryNameFromCode SH = "SAINT HELENA, ASCENSION AND TRISTAN DA CUNHA"-countryNameFromCode KN = "SAINT KITTS AND NEVIS"-countryNameFromCode LC = "SAINT LUCIA"-countryNameFromCode MF = "SAINT MARTIN (FRENCH PART)"-countryNameFromCode PM = "SAINT PIERRE AND MIQUELON"-countryNameFromCode VC = "SAINT VINCENT AND THE GRENADINES"-countryNameFromCode WS = "SAMOA"-countryNameFromCode SM = "SAN MARINO"-countryNameFromCode ST = "SAO TOME AND PRINCIPE"-countryNameFromCode SA = "SAUDI ARABIA"-countryNameFromCode SN = "SENEGAL"-countryNameFromCode RS = "SERBIA"-countryNameFromCode SC = "SEYCHELLES"-countryNameFromCode SL = "SIERRA LEONE"-countryNameFromCode SG = "SINGAPORE"-countryNameFromCode SX = "SINT MAARTEN (DUTCH PART)"-countryNameFromCode SK = "SLOVAKIA"-countryNameFromCode SI = "SLOVENIA"-countryNameFromCode SB = "SOLOMON ISLANDS"-countryNameFromCode SO = "SOMALIA"-countryNameFromCode ZA = "SOUTH AFRICA"-countryNameFromCode GS = "SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS"-countryNameFromCode SS = "SOUTH SUDAN"-countryNameFromCode ES = "SPAIN"-countryNameFromCode LK = "SRI LANKA"-countryNameFromCode SD = "SUDAN"-countryNameFromCode SR = "SURINAME"-countryNameFromCode SJ = "SVALBARD AND JAN MAYEN"-countryNameFromCode SZ = "SWAZILAND"-countryNameFromCode SE = "SWEDEN"-countryNameFromCode CH = "SWITZERLAND"-countryNameFromCode SY = "SYRIAN ARAB REPUBLIC"-countryNameFromCode TW = "TAIWAN, PROVINCE OF CHINA"-countryNameFromCode TJ = "TAJIKISTAN"-countryNameFromCode TZ = "TANZANIA, UNITED REPUBLIC OF"-countryNameFromCode TH = "THAILAND"-countryNameFromCode TL = "TIMOR-LESTE"-countryNameFromCode TG = "TOGO"-countryNameFromCode TK = "TOKELAU"-countryNameFromCode TO = "TONGA"-countryNameFromCode TT = "TRINIDAD AND TOBAGO"-countryNameFromCode TN = "TUNISIA"-countryNameFromCode TR = "TURKEY"-countryNameFromCode TM = "TURKMENISTAN"-countryNameFromCode TC = "TURKS AND CAICOS ISLANDS"-countryNameFromCode TV = "TUVALU"-countryNameFromCode UG = "UGANDA"-countryNameFromCode UA = "UKRAINE"-countryNameFromCode AE = "UNITED ARAB EMIRATES"-countryNameFromCode GB = "UNITED KINGDOM"-countryNameFromCode US = "UNITED STATES"-countryNameFromCode UM = "UNITED STATES MINOR OUTLYING ISLANDS"-countryNameFromCode UY = "URUGUAY"-countryNameFromCode UZ = "UZBEKISTAN"-countryNameFromCode VU = "VANUATU"-countryNameFromCode VE = "VENEZUELA, BOLIVARIAN REPUBLIC OF"-countryNameFromCode VN = "VIET NAM"-countryNameFromCode VG = "VIRGIN ISLANDS, BRITISH"-countryNameFromCode VI = "VIRGIN ISLANDS, U.S."-countryNameFromCode WF = "WALLIS AND FUTUNA"-countryNameFromCode EH = "WESTERN SAHARA"-countryNameFromCode YE = "YEMEN"-countryNameFromCode ZM = "ZAMBIA"-countryNameFromCode ZW = "ZIMBABWE"+{-# LANGUAGE CPP #-}+#if __GLASGOW_HASKELL__ >= 701+{-# LANGUAGE DeriveGeneric #-}+#endif+module Data.ISO3166_CountryCodes+ (CountryCode(..),+ countryNameFromCode,+ readableCountryName+ ) where+import qualified Prelude as P+import Prelude ((.),not,(==),otherwise,(&&),(==),(/=))+import Control.Monad+import Data.Char+import Data.List++#if __GLASGOW_HASKELL__ >= 701+import qualified GHC.Generics as G+#endif++{- | A human readable version of the official name of a country+ from its country code++ Uses some ad-hockery to rearrange the order of the words.++-}+readableCountryName :: CountryCode -> P.String++readableCountryName+ = concat . intersperse " " . rearrange . fmap up1 . words .+ fmap toUpper . countryNameFromCode+ where up1 [] = []+ up1 (c:rest) | not (isAlpha c) = c:up1 rest+ up1 "OF" = "of"+ up1 "THE" = "the"+ up1 "AND" = "and"+ up1 "U.S." = "US" -- gawd+ up1 ('M':'C':l) = "Mc"++up1 l -- Don't do MacEdonia!+ -- but there are no Mac_ countries yet+ up1 ('D':'\'':l) = "d'"++up1 l+ up1 (c:cs) = toUpper c: downup cs+ downup [] = [] -- needed for hyphenated names+ downup (c:cs) | c=='-' = c:up1 cs+ | otherwise = toLower c:downup cs+ rearrange [] = []+ rearrange [c] = [c]+ rearrange ll@(n:l)+ | last l `elem` ["of", "the"] && last n == ','+ = onhead up1 l++[[c|c<-n,c/=',']]+ | otherwise = ll+ onhead f [] = []+ onhead f (h:r) = f h:r+{- Copyright © 2010 Jón Fairbairn+-}+data CountryCode = + Code -- ^ Name+ |+ AF -- ^ Afghanistan+ |+ AX -- ^ Åland Islands+ |+ AL -- ^ Albania+ |+ DZ -- ^ Algeria+ |+ AS -- ^ American Samoa+ |+ AD -- ^ Andorra+ |+ AO -- ^ Angola+ |+ AI -- ^ Anguilla+ |+ AQ -- ^ Antarctica+ |+ AG -- ^ Antigua and Barbuda+ |+ AR -- ^ Argentina+ |+ AM -- ^ Armenia+ |+ AW -- ^ Aruba+ |+ AU -- ^ Australia+ |+ AT -- ^ Austria+ |+ AZ -- ^ Azerbaijan+ |+ BS -- ^ Bahamas+ |+ BH -- ^ Bahrain+ |+ BD -- ^ Bangladesh+ |+ BB -- ^ Barbados+ |+ BY -- ^ Belarus+ |+ BE -- ^ Belgium+ |+ BZ -- ^ Belize+ |+ BJ -- ^ Benin+ |+ BM -- ^ Bermuda+ |+ BT -- ^ Bhutan+ |+ BO -- ^ Bolivia, Plurinational State of+ |+ BQ -- ^ Bonaire, Sint Eustatius and Saba+ |+ BA -- ^ Bosnia and Herzegovina+ |+ BW -- ^ Botswana+ |+ BV -- ^ Bouvet Island+ |+ BR -- ^ Brazil+ |+ IO -- ^ British Indian Ocean Territory+ |+ BN -- ^ Brunei Darussalam+ |+ BG -- ^ Bulgaria+ |+ BF -- ^ Burkina Faso+ |+ BI -- ^ Burundi+ |+ KH -- ^ Cambodia+ |+ CM -- ^ Cameroon+ |+ CA -- ^ Canada+ |+ CV -- ^ Cape Verde+ |+ KY -- ^ Cayman Islands+ |+ CF -- ^ Central African Republic+ |+ TD -- ^ Chad+ |+ CL -- ^ Chile+ |+ CN -- ^ China+ |+ CX -- ^ Christmas Island+ |+ CC -- ^ Cocos (Keeling) Islands+ |+ CO -- ^ Colombia+ |+ KM -- ^ Comoros+ |+ CG -- ^ Congo+ |+ CD -- ^ Congo, the Democratic Republic of the+ |+ CK -- ^ Cook Islands+ |+ CR -- ^ Costa Rica+ |+ CI -- ^ Côte d'Ivoire+ |+ HR -- ^ Croatia+ |+ CU -- ^ Cuba+ |+ CW -- ^ Curaçao+ |+ CY -- ^ Cyprus+ |+ CZ -- ^ Czech Republic+ |+ DK -- ^ Denmark+ |+ DJ -- ^ Djibouti+ |+ DM -- ^ Dominica+ |+ DO -- ^ Dominican Republic+ |+ EC -- ^ Ecuador+ |+ EG -- ^ Egypt+ |+ SV -- ^ El Salvador+ |+ GQ -- ^ Equatorial Guinea+ |+ ER -- ^ Eritrea+ |+ EE -- ^ Estonia+ |+ ET -- ^ Ethiopia+ |+ FK -- ^ Falkland Islands (Malvinas)+ |+ FO -- ^ Faroe Islands+ |+ FJ -- ^ Fiji+ |+ FI -- ^ Finland+ |+ FR -- ^ France+ |+ GF -- ^ French Guiana+ |+ PF -- ^ French Polynesia+ |+ TF -- ^ French Southern Territories+ |+ GA -- ^ Gabon+ |+ GM -- ^ Gambia+ |+ GE -- ^ Georgia+ |+ DE -- ^ Germany+ |+ GH -- ^ Ghana+ |+ GI -- ^ Gibraltar+ |+ GR -- ^ Greece+ |+ GL -- ^ Greenland+ |+ GD -- ^ Grenada+ |+ GP -- ^ Guadeloupe+ |+ GU -- ^ Guam+ |+ GT -- ^ Guatemala+ |+ GG -- ^ Guernsey+ |+ GN -- ^ Guinea+ |+ GW -- ^ Guinea-Bissau+ |+ GY -- ^ Guyana+ |+ HT -- ^ Haiti+ |+ HM -- ^ Heard Island and McDonald Mcdonald Islands+ |+ VA -- ^ Holy See (Vatican City State)+ |+ HN -- ^ Honduras+ |+ HK -- ^ Hong Kong+ |+ HU -- ^ Hungary+ |+ IS -- ^ Iceland+ |+ IN -- ^ India+ |+ ID -- ^ Indonesia+ |+ IR -- ^ Iran, Islamic Republic of+ |+ IQ -- ^ Iraq+ |+ IE -- ^ Ireland+ |+ IM -- ^ Isle of Man+ |+ IL -- ^ Israel+ |+ IT -- ^ Italy+ |+ JM -- ^ Jamaica+ |+ JP -- ^ Japan+ |+ JE -- ^ Jersey+ |+ JO -- ^ Jordan+ |+ KZ -- ^ Kazakhstan+ |+ KE -- ^ Kenya+ |+ KI -- ^ Kiribati+ |+ KP -- ^ Korea, Democratic People's Republic of+ |+ KR -- ^ Korea, Republic of+ |+ KW -- ^ Kuwait+ |+ KG -- ^ Kyrgyzstan+ |+ LA -- ^ Lao People's Democratic Republic+ |+ LV -- ^ Latvia+ |+ LB -- ^ Lebanon+ |+ LS -- ^ Lesotho+ |+ LR -- ^ Liberia+ |+ LY -- ^ Libya+ |+ LI -- ^ Liechtenstein+ |+ LT -- ^ Lithuania+ |+ LU -- ^ Luxembourg+ |+ MO -- ^ Macao+ |+ MK -- ^ Macedonia, the Former Yugoslav Republic of+ |+ MG -- ^ Madagascar+ |+ MW -- ^ Malawi+ |+ MY -- ^ Malaysia+ |+ MV -- ^ Maldives+ |+ ML -- ^ Mali+ |+ MT -- ^ Malta+ |+ MH -- ^ Marshall Islands+ |+ MQ -- ^ Martinique+ |+ MR -- ^ Mauritania+ |+ MU -- ^ Mauritius+ |+ YT -- ^ Mayotte+ |+ MX -- ^ Mexico+ |+ FM -- ^ Micronesia, Federated States of+ |+ MD -- ^ Moldova, Republic of+ |+ MC -- ^ Monaco+ |+ MN -- ^ Mongolia+ |+ ME -- ^ Montenegro+ |+ MS -- ^ Montserrat+ |+ MA -- ^ Morocco+ |+ MZ -- ^ Mozambique+ |+ MM -- ^ Myanmar+ |+ NA -- ^ Namibia+ |+ NR -- ^ Nauru+ |+ NP -- ^ Nepal+ |+ NL -- ^ Netherlands+ |+ NC -- ^ New Caledonia+ |+ NZ -- ^ New Zealand+ |+ NI -- ^ Nicaragua+ |+ NE -- ^ Niger+ |+ NG -- ^ Nigeria+ |+ NU -- ^ Niue+ |+ NF -- ^ Norfolk Island+ |+ MP -- ^ Northern Mariana Islands+ |+ NO -- ^ Norway+ |+ OM -- ^ Oman+ |+ PK -- ^ Pakistan+ |+ PW -- ^ Palau+ |+ PS -- ^ Palestine, State of+ |+ PA -- ^ Panama+ |+ PG -- ^ Papua New Guinea+ |+ PY -- ^ Paraguay+ |+ PE -- ^ Peru+ |+ PH -- ^ Philippines+ |+ PN -- ^ Pitcairn+ |+ PL -- ^ Poland+ |+ PT -- ^ Portugal+ |+ PR -- ^ Puerto Rico+ |+ QA -- ^ Qatar+ |+ RE -- ^ Réunion+ |+ RO -- ^ Romania+ |+ RU -- ^ Russian Federation+ |+ RW -- ^ Rwanda+ |+ BL -- ^ Saint Barthélemy+ |+ SH -- ^ Saint Helena, Ascension and Tristan da Cunha+ |+ KN -- ^ Saint Kitts and Nevis+ |+ LC -- ^ Saint Lucia+ |+ MF -- ^ Saint Martin (French part)+ |+ PM -- ^ Saint Pierre and Miquelon+ |+ VC -- ^ Saint Vincent and the Grenadines+ |+ WS -- ^ Samoa+ |+ SM -- ^ San Marino+ |+ ST -- ^ Sao Tome and Principe+ |+ SA -- ^ Saudi Arabia+ |+ SN -- ^ Senegal+ |+ RS -- ^ Serbia+ |+ SC -- ^ Seychelles+ |+ SL -- ^ Sierra Leone+ |+ SG -- ^ Singapore+ |+ SX -- ^ Sint Maarten (Dutch part)+ |+ SK -- ^ Slovakia+ |+ SI -- ^ Slovenia+ |+ SB -- ^ Solomon Islands+ |+ SO -- ^ Somalia+ |+ ZA -- ^ South Africa+ |+ GS -- ^ South Georgia and the South Sandwich Islands+ |+ SS -- ^ South Sudan+ |+ ES -- ^ Spain+ |+ LK -- ^ Sri Lanka+ |+ SD -- ^ Sudan+ |+ SR -- ^ Suriname+ |+ SJ -- ^ Svalbard and Jan Mayen+ |+ SZ -- ^ Swaziland+ |+ SE -- ^ Sweden+ |+ CH -- ^ Switzerland+ |+ SY -- ^ Syrian Arab Republic+ |+ TW -- ^ Taiwan, Province of China+ |+ TJ -- ^ Tajikistan+ |+ TZ -- ^ Tanzania, United Republic of+ |+ TH -- ^ Thailand+ |+ TL -- ^ Timor-Leste+ |+ TG -- ^ Togo+ |+ TK -- ^ Tokelau+ |+ TO -- ^ Tonga+ |+ TT -- ^ Trinidad and Tobago+ |+ TN -- ^ Tunisia+ |+ TR -- ^ Turkey+ |+ TM -- ^ Turkmenistan+ |+ TC -- ^ Turks and Caicos Islands+ |+ TV -- ^ Tuvalu+ |+ UG -- ^ Uganda+ |+ UA -- ^ Ukraine+ |+ AE -- ^ United Arab Emirates+ |+ GB -- ^ United Kingdom+ |+ US -- ^ United States+ |+ UM -- ^ United States Minor Outlying Islands+ |+ UY -- ^ Uruguay+ |+ UZ -- ^ Uzbekistan+ |+ VU -- ^ Vanuatu+ |+ VE -- ^ Venezuela, Bolivarian Republic of+ |+ VN -- ^ Viet Nam+ |+ VG -- ^ Virgin Islands, British+ |+ VI -- ^ Virgin Islands, U.S.+ |+ WF -- ^ Wallis and Futuna+ |+ EH -- ^ Western Sahara+ |+ YE -- ^ Yemen+ |+ ZM -- ^ Zambia+ |+ ZW -- ^ Zimbabwe+#if __GLASGOW_HASKELL__ >= 701+ deriving (P.Eq,P.Read,P.Show,P.Enum,P.Bounded,P.Ord,G.Generic)+#else+ deriving (P.Eq,P.Read,P.Show,P.Enum,P.Bounded,P.Ord)+#endif++{-|+ convert a country code to the official (English) name of the country++ see @'readableCountryName'@ for something with a more pleasing word order and capitalisation+-}+countryNameFromCode:: CountryCode -> P.String+countryNameFromCode Code = "Name"+countryNameFromCode AF = "Afghanistan"+countryNameFromCode AX = "Åland Islands"+countryNameFromCode AL = "Albania"+countryNameFromCode DZ = "Algeria"+countryNameFromCode AS = "American Samoa"+countryNameFromCode AD = "Andorra"+countryNameFromCode AO = "Angola"+countryNameFromCode AI = "Anguilla"+countryNameFromCode AQ = "Antarctica"+countryNameFromCode AG = "Antigua and Barbuda"+countryNameFromCode AR = "Argentina"+countryNameFromCode AM = "Armenia"+countryNameFromCode AW = "Aruba"+countryNameFromCode AU = "Australia"+countryNameFromCode AT = "Austria"+countryNameFromCode AZ = "Azerbaijan"+countryNameFromCode BS = "Bahamas"+countryNameFromCode BH = "Bahrain"+countryNameFromCode BD = "Bangladesh"+countryNameFromCode BB = "Barbados"+countryNameFromCode BY = "Belarus"+countryNameFromCode BE = "Belgium"+countryNameFromCode BZ = "Belize"+countryNameFromCode BJ = "Benin"+countryNameFromCode BM = "Bermuda"+countryNameFromCode BT = "Bhutan"+countryNameFromCode BO = "Bolivia, Plurinational State of"+countryNameFromCode BQ = "Bonaire, Sint Eustatius and Saba"+countryNameFromCode BA = "Bosnia and Herzegovina"+countryNameFromCode BW = "Botswana"+countryNameFromCode BV = "Bouvet Island"+countryNameFromCode BR = "Brazil"+countryNameFromCode IO = "British Indian Ocean Territory"+countryNameFromCode BN = "Brunei Darussalam"+countryNameFromCode BG = "Bulgaria"+countryNameFromCode BF = "Burkina Faso"+countryNameFromCode BI = "Burundi"+countryNameFromCode KH = "Cambodia"+countryNameFromCode CM = "Cameroon"+countryNameFromCode CA = "Canada"+countryNameFromCode CV = "Cape Verde"+countryNameFromCode KY = "Cayman Islands"+countryNameFromCode CF = "Central African Republic"+countryNameFromCode TD = "Chad"+countryNameFromCode CL = "Chile"+countryNameFromCode CN = "China"+countryNameFromCode CX = "Christmas Island"+countryNameFromCode CC = "Cocos (Keeling) Islands"+countryNameFromCode CO = "Colombia"+countryNameFromCode KM = "Comoros"+countryNameFromCode CG = "Congo"+countryNameFromCode CD = "Congo, the Democratic Republic of the"+countryNameFromCode CK = "Cook Islands"+countryNameFromCode CR = "Costa Rica"+countryNameFromCode CI = "Côte d'Ivoire"+countryNameFromCode HR = "Croatia"+countryNameFromCode CU = "Cuba"+countryNameFromCode CW = "Curaçao"+countryNameFromCode CY = "Cyprus"+countryNameFromCode CZ = "Czech Republic"+countryNameFromCode DK = "Denmark"+countryNameFromCode DJ = "Djibouti"+countryNameFromCode DM = "Dominica"+countryNameFromCode DO = "Dominican Republic"+countryNameFromCode EC = "Ecuador"+countryNameFromCode EG = "Egypt"+countryNameFromCode SV = "El Salvador"+countryNameFromCode GQ = "Equatorial Guinea"+countryNameFromCode ER = "Eritrea"+countryNameFromCode EE = "Estonia"+countryNameFromCode ET = "Ethiopia"+countryNameFromCode FK = "Falkland Islands (Malvinas)"+countryNameFromCode FO = "Faroe Islands"+countryNameFromCode FJ = "Fiji"+countryNameFromCode FI = "Finland"+countryNameFromCode FR = "France"+countryNameFromCode GF = "French Guiana"+countryNameFromCode PF = "French Polynesia"+countryNameFromCode TF = "French Southern Territories"+countryNameFromCode GA = "Gabon"+countryNameFromCode GM = "Gambia"+countryNameFromCode GE = "Georgia"+countryNameFromCode DE = "Germany"+countryNameFromCode GH = "Ghana"+countryNameFromCode GI = "Gibraltar"+countryNameFromCode GR = "Greece"+countryNameFromCode GL = "Greenland"+countryNameFromCode GD = "Grenada"+countryNameFromCode GP = "Guadeloupe"+countryNameFromCode GU = "Guam"+countryNameFromCode GT = "Guatemala"+countryNameFromCode GG = "Guernsey"+countryNameFromCode GN = "Guinea"+countryNameFromCode GW = "Guinea-Bissau"+countryNameFromCode GY = "Guyana"+countryNameFromCode HT = "Haiti"+countryNameFromCode HM = "Heard Island and McDonald Mcdonald Islands"+countryNameFromCode VA = "Holy See (Vatican City State)"+countryNameFromCode HN = "Honduras"+countryNameFromCode HK = "Hong Kong"+countryNameFromCode HU = "Hungary"+countryNameFromCode IS = "Iceland"+countryNameFromCode IN = "India"+countryNameFromCode ID = "Indonesia"+countryNameFromCode IR = "Iran, Islamic Republic of"+countryNameFromCode IQ = "Iraq"+countryNameFromCode IE = "Ireland"+countryNameFromCode IM = "Isle of Man"+countryNameFromCode IL = "Israel"+countryNameFromCode IT = "Italy"+countryNameFromCode JM = "Jamaica"+countryNameFromCode JP = "Japan"+countryNameFromCode JE = "Jersey"+countryNameFromCode JO = "Jordan"+countryNameFromCode KZ = "Kazakhstan"+countryNameFromCode KE = "Kenya"+countryNameFromCode KI = "Kiribati"+countryNameFromCode KP = "Korea, Democratic People's Republic of"+countryNameFromCode KR = "Korea, Republic of"+countryNameFromCode KW = "Kuwait"+countryNameFromCode KG = "Kyrgyzstan"+countryNameFromCode LA = "Lao People's Democratic Republic"+countryNameFromCode LV = "Latvia"+countryNameFromCode LB = "Lebanon"+countryNameFromCode LS = "Lesotho"+countryNameFromCode LR = "Liberia"+countryNameFromCode LY = "Libya"+countryNameFromCode LI = "Liechtenstein"+countryNameFromCode LT = "Lithuania"+countryNameFromCode LU = "Luxembourg"+countryNameFromCode MO = "Macao"+countryNameFromCode MK = "Macedonia, the Former Yugoslav Republic of"+countryNameFromCode MG = "Madagascar"+countryNameFromCode MW = "Malawi"+countryNameFromCode MY = "Malaysia"+countryNameFromCode MV = "Maldives"+countryNameFromCode ML = "Mali"+countryNameFromCode MT = "Malta"+countryNameFromCode MH = "Marshall Islands"+countryNameFromCode MQ = "Martinique"+countryNameFromCode MR = "Mauritania"+countryNameFromCode MU = "Mauritius"+countryNameFromCode YT = "Mayotte"+countryNameFromCode MX = "Mexico"+countryNameFromCode FM = "Micronesia, Federated States of"+countryNameFromCode MD = "Moldova, Republic of"+countryNameFromCode MC = "Monaco"+countryNameFromCode MN = "Mongolia"+countryNameFromCode ME = "Montenegro"+countryNameFromCode MS = "Montserrat"+countryNameFromCode MA = "Morocco"+countryNameFromCode MZ = "Mozambique"+countryNameFromCode MM = "Myanmar"+countryNameFromCode NA = "Namibia"+countryNameFromCode NR = "Nauru"+countryNameFromCode NP = "Nepal"+countryNameFromCode NL = "Netherlands"+countryNameFromCode NC = "New Caledonia"+countryNameFromCode NZ = "New Zealand"+countryNameFromCode NI = "Nicaragua"+countryNameFromCode NE = "Niger"+countryNameFromCode NG = "Nigeria"+countryNameFromCode NU = "Niue"+countryNameFromCode NF = "Norfolk Island"+countryNameFromCode MP = "Northern Mariana Islands"+countryNameFromCode NO = "Norway"+countryNameFromCode OM = "Oman"+countryNameFromCode PK = "Pakistan"+countryNameFromCode PW = "Palau"+countryNameFromCode PS = "Palestine, State of"+countryNameFromCode PA = "Panama"+countryNameFromCode PG = "Papua New Guinea"+countryNameFromCode PY = "Paraguay"+countryNameFromCode PE = "Peru"+countryNameFromCode PH = "Philippines"+countryNameFromCode PN = "Pitcairn"+countryNameFromCode PL = "Poland"+countryNameFromCode PT = "Portugal"+countryNameFromCode PR = "Puerto Rico"+countryNameFromCode QA = "Qatar"+countryNameFromCode RE = "Réunion"+countryNameFromCode RO = "Romania"+countryNameFromCode RU = "Russian Federation"+countryNameFromCode RW = "Rwanda"+countryNameFromCode BL = "Saint Barthélemy"+countryNameFromCode SH = "Saint Helena, Ascension and Tristan da Cunha"+countryNameFromCode KN = "Saint Kitts and Nevis"+countryNameFromCode LC = "Saint Lucia"+countryNameFromCode MF = "Saint Martin (French part)"+countryNameFromCode PM = "Saint Pierre and Miquelon"+countryNameFromCode VC = "Saint Vincent and the Grenadines"+countryNameFromCode WS = "Samoa"+countryNameFromCode SM = "San Marino"+countryNameFromCode ST = "Sao Tome and Principe"+countryNameFromCode SA = "Saudi Arabia"+countryNameFromCode SN = "Senegal"+countryNameFromCode RS = "Serbia"+countryNameFromCode SC = "Seychelles"+countryNameFromCode SL = "Sierra Leone"+countryNameFromCode SG = "Singapore"+countryNameFromCode SX = "Sint Maarten (Dutch part)"+countryNameFromCode SK = "Slovakia"+countryNameFromCode SI = "Slovenia"+countryNameFromCode SB = "Solomon Islands"+countryNameFromCode SO = "Somalia"+countryNameFromCode ZA = "South Africa"+countryNameFromCode GS = "South Georgia and the South Sandwich Islands"+countryNameFromCode SS = "South Sudan"+countryNameFromCode ES = "Spain"+countryNameFromCode LK = "Sri Lanka"+countryNameFromCode SD = "Sudan"+countryNameFromCode SR = "Suriname"+countryNameFromCode SJ = "Svalbard and Jan Mayen"+countryNameFromCode SZ = "Swaziland"+countryNameFromCode SE = "Sweden"+countryNameFromCode CH = "Switzerland"+countryNameFromCode SY = "Syrian Arab Republic"+countryNameFromCode TW = "Taiwan, Province of China"+countryNameFromCode TJ = "Tajikistan"+countryNameFromCode TZ = "Tanzania, United Republic of"+countryNameFromCode TH = "Thailand"+countryNameFromCode TL = "Timor-Leste"+countryNameFromCode TG = "Togo"+countryNameFromCode TK = "Tokelau"+countryNameFromCode TO = "Tonga"+countryNameFromCode TT = "Trinidad and Tobago"+countryNameFromCode TN = "Tunisia"+countryNameFromCode TR = "Turkey"+countryNameFromCode TM = "Turkmenistan"+countryNameFromCode TC = "Turks and Caicos Islands"+countryNameFromCode TV = "Tuvalu"+countryNameFromCode UG = "Uganda"+countryNameFromCode UA = "Ukraine"+countryNameFromCode AE = "United Arab Emirates"+countryNameFromCode GB = "United Kingdom"+countryNameFromCode US = "United States"+countryNameFromCode UM = "United States Minor Outlying Islands"+countryNameFromCode UY = "Uruguay"+countryNameFromCode UZ = "Uzbekistan"+countryNameFromCode VU = "Vanuatu"+countryNameFromCode VE = "Venezuela, Bolivarian Republic of"+countryNameFromCode VN = "Viet Nam"+countryNameFromCode VG = "Virgin Islands, British"+countryNameFromCode VI = "Virgin Islands, U.S."+countryNameFromCode WF = "Wallis and Futuna"+countryNameFromCode EH = "Western Sahara"+countryNameFromCode YE = "Yemen"+countryNameFromCode ZM = "Zambia"+countryNameFromCode ZW = "Zimbabwe"
iso3166-country-codes.cabal view
@@ -1,4 +1,4 @@-Version: 0.20130302.4+Version: 0.20140203.6 Name: iso3166-country-codes Cabal-Version: >= 1.6 Build-type: Simple@@ -15,11 +15,11 @@ official name of the country. Library- Build-Depends: base ==4.*+ Build-Depends: base ==4.*, http-conduit >= 2.1.5 Exposed-modules: Data.ISO3166_CountryCodes -- a full build depends on HTTP == 4000.*, utf8-string ==0.* source-repository head type: darcs- location: http://www.cl.cam.ac.uk/~jf15/ISO3166_CountryCodes/+ location: http://darcs.bookofsand.co.uk/ISO3166_CountryCodes/