{-# 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.Modifier ( Modifier(..) , makeColon ) where import qualified Language.Haskell.TH.Syntax as TH -- | Represents a modifier on a variable. data Modifier = Asterisk | Colon Int -- ^ This assumes that the number passes the @isValidMaxLength@ predicate. -- You should prefer using @makeColon@ to create these values. | None deriving (Eq, TH.Lift, Show) -- | If the number passes @isValidMaxLength@, returns a @Colon@ modifier. -- Otherwise returns nothing. makeColon :: Int -> Maybe Modifier makeColon maxLength = if isValidMaxLength maxLength then Just $ Colon maxLength else Nothing -- | Returns true if the given number is a valid @max-length@ as defined by -- section 2.4.1 of the RFC. isValidMaxLength :: Int -> Bool isValidMaxLength maxLength = 1 <= maxLength && maxLength <= 9999