GaBuZoMeu/Types.hs

22 lines
658 B
Haskell

-- Haskell types to support the language tags
module Types where
type Language = String
type Extlang = Maybe String -- Only one extlang authorized
type Script = Maybe String
type Region = Maybe String
type Singleton = Char
type Variants = [Variant]
type Variant = String
type Extension = (Singleton, [String])
type Extensions = [Extension]
type Grandfathered = String
type Privateuse = [String]
data Tag = Tag Language Extlang Script Region Variants Extensions | GF Grandfathered | Priv Privateuse deriving (Show, Eq)
-- TODO: warning, Eq must
-- be redefined because it needs to take into account case-insensitivity and
-- (maybe) canonicalization