{-| Copyright : (c) Nathan Bloomfield, 2017 License : GPL-3 Maintainer : nbloomf@gmail.com Stability : experimental -} module Hakyll.Shortcode.Types.Iso_639_1_Language_Code ( Iso_639_1_Language_Code() ) where import Hakyll.Shortcode.Validate -- | ISO 639.1 two-letter language codes. -- See . -- Must be constructed with 'validate'. newtype Iso_639_1_Language_Code = Make { unMake :: String } deriving Eq instance Validate Iso_639_1_Language_Code where validate text = if elem text codes then Right $ Make text else Left "Must be an ISO 639.1 two-letter language code." where codes = [ "ab", "aa", "af", "ak", "sq", "am", "ar", "an", "hy", "as" , "av", "ae", "ay", "az", "bm", "ba", "eu", "be", "bn", "bh" , "bi", "bs", "br", "bg", "my", "ca", "ch", "ce", "ny", "zh" , "cv", "kw", "co", "cr", "hr", "cs", "da", "dv", "nl", "dz" , "en", "eo", "et", "ee", "fo", "fj", "fi", "fr", "ff", "gl" , "ka", "de", "el", "gn", "gu", "ht", "ha", "he", "hz", "hi" , "ho", "hu", "ia", "id", "ie", "ga", "ig", "ik", "io", "is" , "it", "iu", "ja", "jv", "kl", "kn", "kr", "ks", "kk", "km" , "ki", "rw", "ky", "kv", "kg", "ko", "ku", "kj", "la", "lb" , "lg", "li", "ln", "lo", "lt", "lu", "lv", "gv", "mk", "mg" , "ms", "ml", "mt", "mi", "mr", "mh", "mn", "na", "nv", "nd" , "ne", "ng", "nb", "nn", "no", "ii", "nr", "oc", "oj", "cu" , "om", "or", "os", "pa", "pi", "fa", "pl", "ps", "pt", "qu" , "rm", "rn", "ro", "ru", "sa", "sc", "sd", "se", "sm", "sg" , "sr", "gd", "sn", "si", "sk", "sl", "so", "st", "es", "su" , "sw", "ss", "sv", "ta", "te", "tg", "th", "ti", "bo", "tk" , "tl", "tn", "to", "tr", "ts", "tt", "tw", "ty", "ug", "uk" , "ur", "uz", "ve", "vi", "vo", "wa", "cy", "wo", "fy", "xh" , "yi", "yo", "za", "zu" ] instance Show Iso_639_1_Language_Code where show = unMake