{-# LANGUAGE DeriveLift #-} -- | Warning: This module is not considered part of Burrito's public API. As -- such, it may change at any time. Use it with caution!. module Burrito.Type.Name ( Name(..) ) where import qualified Burrito.Type.VarChar as VarChar import qualified Language.Haskell.TH.Syntax as TH -- | Represents a variable name, which is required to be non-empty. Variable -- names allow ASCII letters and numbers, underscores, percent encoded triples, -- and periods. However the periods cannot appear at the beginning or end, and -- there can't be more than one of them in a row. data Name = Name { first :: VarChar.VarChar -- ^ The first character is any valid @varchar@, including underscores and -- percent encoded triples. , rest :: [(Bool, VarChar.VarChar)] -- ^ Every other character has the same constraints, but they may also be -- preceeded by a full stop (period). That's what the @Bool@ represents: -- @True@ means there is a period. } deriving (Eq, TH.Lift, Show)