module Fake.Provider.Locale
  ( fakeLocale
  , localeMap
  ) where

------------------------------------------------------------------------------
import qualified Data.Map as M
import           Data.Monoid
------------------------------------------------------------------------------
import           Fake.Combinators
import           Fake.Types
------------------------------------------------------------------------------

------------------------------------------------------------------------------
-- | Generates fake locales.  "en_US", "de_CH", etc...
fakeLocale :: FGen String
fakeLocale :: FGen String
fakeLocale = [String] -> FGen String
forall a. [a] -> FGen a
elements ([String] -> FGen String) -> [String] -> FGen String
forall a b. (a -> b) -> a -> b
$ [[String]] -> [String]
forall (t :: * -> *) a. Foldable t => t [a] -> [a]
concat ([[String]] -> [String]) -> [[String]] -> [String]
forall a b. (a -> b) -> a -> b
$ (String, [String]) -> [String]
makeList ((String, [String]) -> [String])
-> [(String, [String])] -> [[String]]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Map String [String] -> [(String, [String])]
forall k a. Map k a -> [(k, a)]
M.toList Map String [String]
localeMap

makeList :: (String, [String]) -> [String]
makeList :: (String, [String]) -> [String]
makeList (String
k,[String]
vs) = (String -> String) -> [String] -> [String]
forall a b. (a -> b) -> [a] -> [b]
map (\String
v -> String
k String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
"_" String -> String -> String
forall a. Semigroup a => a -> a -> a
<> String
v) [String]
vs

------------------------------------------------------------------------------
-- | A map of all the locales
localeMap :: M.Map String [String]
localeMap :: Map String [String]
localeMap = [(String, [String])] -> Map String [String]
forall k a. Ord k => [(k, a)] -> Map k a
M.fromList
    [ (String
"aa", [String
"DJ", String
"ER", String
"ET"])
    , (String
"af", [String
"ZA"])
    , (String
"ak", [String
"GH"])
    , (String
"am", [String
"ET"])
    , (String
"an", [String
"ES"])
    , (String
"apn", [String
"IN"])
    , (String
"ar", [String
"AE", String
"BH", String
"DJ", String
"DZ", String
"EG", String
"EH", String
"ER", String
"IL", String
"IN"
             ,String
"IQ", String
"JO", String
"KM", String
"KW", String
"LB", String
"LY", String
"MA", String
"MR", String
"OM"
             ,String
"PS", String
"QA", String
"SA", String
"SD", String
"SO", String
"SS", String
"SY", String
"TD", String
"TN", String
"YE"])
    , (String
"as", [String
"IN"])
    , (String
"ast", [String
"ES"])
    , (String
"ayc", [String
"PE"])
    , (String
"az", [String
"AZ", String
"IN"])
    , (String
"be", [String
"BY"])
    , (String
"bem", [String
"ZM"])
    , (String
"ber", [String
"DZ", String
"MA"])
    , (String
"bg", [String
"BG"])
    , (String
"bhb", [String
"IN"])
    , (String
"bho", [String
"IN"])
    , (String
"bn", [String
"BD", String
"IN"])
    , (String
"bo", [String
"CN", String
"IN"])
    , (String
"br", [String
"FR"])
    , (String
"brx", [String
"IN"])
    , (String
"bs", [String
"BA"])
    , (String
"byn", [String
"ER"])
    , (String
"ca", [String
"AD", String
"ES", String
"FR", String
"IT"])
    , (String
"ce", [String
"RU"])
    , (String
"ckb", [String
"IQ"])
    , (String
"cmn", [String
"TW"])
    , (String
"crh", [String
"UA"])
    , (String
"cs", [String
"CZ"])
    , (String
"csb", [String
"PL"])
    , (String
"cv", [String
"RU"])
    , (String
"cy", [String
"GB"])
    , (String
"da", [String
"DK"])
    , (String
"de", [String
"AT", String
"BE", String
"CH", String
"DE", String
"LI", String
"LU"])
    , (String
"doi", [String
"IN"])
    , (String
"dv", [String
"MV"])
    , (String
"dz", [String
"BT"])
    , (String
"el", [String
"GR", String
"CY"])
    , (String
"en", [String
"AG", String
"AU", String
"BW", String
"CA", String
"DK", String
"GB", String
"HK", String
"IE", String
"IN", String
"NG"
             ,String
"NZ", String
"PH", String
"SG", String
"US", String
"ZA", String
"ZM", String
"ZW"])
    , (String
"eo", [String
"US"])
    , (String
"es", [String
"AR", String
"BO", String
"CL", String
"CO", String
"CR", String
"CU", String
"DO", String
"EC", String
"ES", String
"GT"
             ,String
"HN", String
"MX", String
"NI", String
"PA", String
"PE", String
"PR", String
"PY", String
"SV", String
"US", String
"UY", String
"VE"])
    , (String
"et", [String
"EE"])
    , (String
"eu", [String
"ES", String
"FR"])
    , (String
"fa", [String
"IR"])
    , (String
"ff", [String
"SN"])
    , (String
"fi", [String
"FI"])
    , (String
"fil", [String
"PH"])
    , (String
"fo", [String
"FO"])
    , (String
"fr", [String
"CA", String
"CH", String
"FR", String
"LU"])
    , (String
"fur", [String
"IT"])
    , (String
"fy", [String
"NL", String
"DE"])
    , (String
"ga", [String
"IE"])
    , (String
"gd", [String
"GB"])
    , (String
"gez", [String
"ER", String
"ET"])
    , (String
"gl", [String
"ES"])
    , (String
"gu", [String
"IN"])
    , (String
"gv", [String
"GB"])
    , (String
"ha", [String
"NG"])
    , (String
"hak", [String
"TW"])
    , (String
"he", [String
"IL"])
    , (String
"hi", [String
"IN"])
    , (String
"hne", [String
"IN"])
    , (String
"hr", [String
"HR"])
    , (String
"hsb", [String
"DE"])
    , (String
"ht", [String
"HT"])
    , (String
"hu", [String
"HU"])
    , (String
"hy", [String
"AM"])
    , (String
"ia", [String
"FR"])
    , (String
"id", [String
"ID"])
    , (String
"ig", [String
"NG"])
    , (String
"ik", [String
"CA"])
    , (String
"is", [String
"IS"])
    , (String
"it", [String
"CH", String
"IT"])
    , (String
"iu", [String
"CA"])
    , (String
"iw", [String
"IL"])
    , (String
"ja", [String
"JP"])
    , (String
"ka", [String
"GE"])
    , (String
"kk", [String
"KZ"])
    , (String
"kl", [String
"GL"])
    , (String
"km", [String
"KH"])
    , (String
"kn", [String
"IN"])
    , (String
"ko", [String
"KR"])
    , (String
"kok", [String
"IN"])
    , (String
"ks", [String
"IN"])
    , (String
"ku", [String
"TR"])
    , (String
"kw", [String
"GB"])
    , (String
"ky", [String
"KG"])
    , (String
"lb", [String
"LU"])
    , (String
"lg", [String
"UG"])
    , (String
"li", [String
"BE", String
"NL"])
    , (String
"lij", [String
"IT"])
    , (String
"ln", [String
"CD"])
    , (String
"lo", [String
"LA"])
    , (String
"lt", [String
"LT"])
    , (String
"lv", [String
"LV"])
    , (String
"lzh", [String
"TW"])
    , (String
"mag", [String
"IN"])
    , (String
"mai", [String
"IN"])
    , (String
"mg", [String
"MG"])
    , (String
"mhr", [String
"RU"])
    , (String
"mi", [String
"NZ"])
    , (String
"mk", [String
"MK"])
    , (String
"ml", [String
"IN"])
    , (String
"mn", [String
"MN"])
    , (String
"mni", [String
"IN"])
    , (String
"mr", [String
"IN"])
    , (String
"ms", [String
"MY"])
    , (String
"mt", [String
"MT"])
    , (String
"my", [String
"MM"])
    , (String
"nan", [String
"TW"])
    , (String
"nb", [String
"NO"])
    , (String
"nds", [String
"DE", String
"NL"])
    , (String
"ne", [String
"NP"])
    , (String
"nhn", [String
"MX"])
    , (String
"niu", [String
"NU", String
"NZ"])
    , (String
"nl", [String
"AW", String
"BE", String
"NL"])
    , (String
"nn", [String
"NO"])
    , (String
"nr", [String
"ZA"])
    , (String
"nso", [String
"ZA"])
    , (String
"oc", [String
"FR"])
    , (String
"om", [String
"ET", String
"KE"])
    , (String
"or", [String
"IN"])
    , (String
"os", [String
"RU"])
    , (String
"pa", [String
"IN", String
"PK"])
    , (String
"pap", [String
"AN", String
"AW", String
"CW"])
    , (String
"pl", [String
"PL"])
    , (String
"ps", [String
"AF"])
    , (String
"pt", [String
"BR", String
"PT"])
    , (String
"quz", [String
"PE"])
    , (String
"raj", [String
"IN"])
    , (String
"ro", [String
"RO"])
    , (String
"ru", [String
"RU", String
"UA"])
    , (String
"rw", [String
"RW"])
    , (String
"sa", [String
"IN"])
    , (String
"sat", [String
"IN"])
    , (String
"sc", [String
"IT"])
    , (String
"sd", [String
"IN", String
"PK"])
    , (String
"se", [String
"NO"])
    , (String
"shs", [String
"CA"])
    , (String
"si", [String
"LK"])
    , (String
"sid", [String
"ET"])
    , (String
"sk", [String
"SK"])
    , (String
"sl", [String
"SI"])
    , (String
"so", [String
"DJ", String
"ET", String
"KE", String
"SO"])
    , (String
"sq", [String
"AL", String
"ML"])
    , (String
"sr", [String
"ME", String
"RS"])
    , (String
"ss", [String
"ZA"])
    , (String
"st", [String
"ZA"])
    , (String
"sv", [String
"FI", String
"SE"])
    , (String
"sw", [String
"KE", String
"TZ"])
    , (String
"szl", [String
"PL"])
    , (String
"ta", [String
"IN", String
"LK"])
    , (String
"tcy", [String
"IN"])
    , (String
"te", [String
"IN"])
    , (String
"tg", [String
"TJ"])
    , (String
"th", [String
"TH"])
    , (String
"the", [String
"NP"])
    , (String
"ti", [String
"ER", String
"ET"])
    , (String
"tig", [String
"ER"])
    , (String
"tk", [String
"TM"])
    , (String
"tl", [String
"PH"])
    , (String
"tn", [String
"ZA"])
    , (String
"tr", [String
"CY", String
"TR"])
    , (String
"ts", [String
"ZA"])
    , (String
"tt", [String
"RU"])
    , (String
"ug", [String
"CN"])
    , (String
"uk", [String
"UA"])
    , (String
"unm", [String
"US"])
    , (String
"ur", [String
"IN", String
"PK"])
    , (String
"uz", [String
"UZ"])
    , (String
"ve", [String
"ZA"])
    , (String
"vi", [String
"VN"])
    , (String
"wa", [String
"BE"])
    , (String
"wae", [String
"CH"])
    , (String
"wal", [String
"ET"])
    , (String
"wo", [String
"SN"])
    , (String
"xh", [String
"ZA"])
    , (String
"yi", [String
"US"])
    , (String
"yo", [String
"NG"])
    , (String
"yue", [String
"HK"])
    , (String
"zh", [String
"CN", String
"HK", String
"SG", String
"TW"])
    , (String
"zu", [String
"ZA"])
    ]