devforms-0.2.0.1: src/ParsedInteger.hs
module ParsedInteger (ParsedInteger, parseWithBounds, parsedToInteger, IntegerBoundError (..))
where
newtype ParsedInteger = ParsedInteger Integer
data IntegerBoundError = IntegerOutOfBounds deriving (Show)
parseWithBounds :: Maybe Integer -> Maybe Integer -> Integer -> Either IntegerBoundError ParsedInteger
parseWithBounds (Just lowerBoundInclusive) (Just upperBoundInclusive) n =
if lowerBoundInclusive <= n && upperBoundInclusive >= n
then pure $ ParsedInteger n
else Left IntegerOutOfBounds
parseWithBounds (Just lowerBoundInclusive) Nothing n =
if lowerBoundInclusive <= n
then pure $ ParsedInteger n
else Left IntegerOutOfBounds
parseWithBounds Nothing (Just upperBoundInclusive) n =
if upperBoundInclusive >= n
then pure $ ParsedInteger n
else Left IntegerOutOfBounds
parseWithBounds Nothing Nothing n = Right $ ParsedInteger n
parsedToInteger :: ParsedInteger -> Integer
parsedToInteger (ParsedInteger n) = n