digit-0.15: src/Data/Digit/Class/MixedCase.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE TypeFamilies #-}
module Data.Digit.Class.MixedCase
(
-- * Types
DAa
, DBb
, DCc
, DDd
, DEe
, DFf
-- * Parsers
, parseAa
, parseBb
, parseCc
, parseDd
, parseEe
, parseFf
-- * Re-exports
, module Data.Digit.Class.UpperCase
, module Data.Digit.Class.LowerCase
) where
import Text.Parser.Char (CharParsing)
import Text.Parser.Combinators (choice, (<?>))
import Data.Digit.Class.LowerCase
import Data.Digit.Class.UpperCase
-- $setup
-- >>> import Text.Parsec(parse, ParseError, eof)
-- >>> import Data.Void(Void)
-- >>> import Data.Digit
-- >>> import Papa
type DAa a =
(DA a, Da a)
type DBb a =
(DB a, Db a)
type DCc a =
(DC a, Dc a)
type DDd a =
(DD a, Dd a)
type DEe a =
(DE a, De a)
type DFf a =
(DF a, Df a)
-- |
--
-- >>> parse (parseAa <* eof) "test" "A" :: Either ParseError HeXDigit
-- Right HeXDigitA
--
-- >>> parse parseAa "test" "Axyz" :: Either ParseError HeXDigit
-- Right HeXDigitA
--
-- >>> parse (parseAa <* eof) "test" "a" :: Either ParseError HeXDigit
-- Right HeXDigita
--
-- >>> parse parseAa "test" "axyz" :: Either ParseError HeXDigit
-- Right HeXDigita
--
-- >>> isn't _Right (parse parseAa "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseAa ::
(DAa d, CharParsing p) =>
p d
parseAa =
choice [parseA, parsea] <?> "Aa"
-- |
--
-- >>> parse (parseBb <* eof) "test" "B" :: Either ParseError HeXDigit
-- Right HeXDigitB
--
-- >>> parse parseBb "test" "Bxyz" :: Either ParseError HeXDigit
-- Right HeXDigitB
--
-- >>> parse (parseBb <* eof) "test" "b" :: Either ParseError HeXDigit
-- Right HeXDigitb
--
-- >>> parse parseBb "test" "bxyz" :: Either ParseError HeXDigit
-- Right HeXDigitb
--
-- >>> isn't _Right (parse parseBb "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseBb ::
(DBb d, CharParsing p) =>
p d
parseBb =
choice [parseB, parseb] <?> "Bb"
-- |
--
-- >>> parse (parseCc <* eof) "test" "C" :: Either ParseError HeXDigit
-- Right HeXDigitC
--
-- >>> parse parseCc "test" "Cxyz" :: Either ParseError HeXDigit
-- Right HeXDigitC
--
-- >>> parse (parseCc <* eof) "test" "c" :: Either ParseError HeXDigit
-- Right HeXDigitc
--
-- >>> parse parseCc "test" "cxyz" :: Either ParseError HeXDigit
-- Right HeXDigitc
--
-- >>> isn't _Right (parse parseCc "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseCc ::
(DCc d, CharParsing p) =>
p d
parseCc =
choice [parseC, parsec] <?> "Cc"
-- |
--
-- >>> parse (parseDd <* eof) "test" "D" :: Either ParseError HeXDigit
-- Right HeXDigitD
--
-- >>> parse parseDd "test" "Dxyz" :: Either ParseError HeXDigit
-- Right HeXDigitD
--
-- >>> parse (parseDd <* eof) "test" "d" :: Either ParseError HeXDigit
-- Right HeXDigitd
--
-- >>> parse parseDd "test" "dxyz" :: Either ParseError HeXDigit
-- Right HeXDigitd
--
-- >>> isn't _Right (parse parseDd "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseDd ::
(DDd d, CharParsing p) =>
p d
parseDd =
choice [parseD, parsed] <?> "Dd"
-- |
--
-- >>> parse (parseEe <* eof) "test" "E" :: Either ParseError HeXDigit
-- Right HeXDigitE
--
-- >>> parse parseEe "test" "Exyz" :: Either ParseError HeXDigit
-- Right HeXDigitE
--
-- >>> parse (parseEe <* eof) "test" "e" :: Either ParseError HeXDigit
-- Right HeXDigite
--
-- >>> parse parseEe "test" "exyz" :: Either ParseError HeXDigit
-- Right HeXDigite
--
-- >>> isn't _Right (parse parseEe "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseEe ::
(DEe d, CharParsing p) =>
p d
parseEe =
choice [parseE, parsee] <?> "Ee"
-- |
--
-- >>> parse (parseFf <* eof) "test" "F" :: Either ParseError HeXDigit
-- Right HeXDigitF
--
-- >>> parse parseFf "test" "Fxyz" :: Either ParseError HeXDigit
-- Right HeXDigitF
--
-- >>> parse (parseFf <* eof) "test" "f" :: Either ParseError HeXDigit
-- Right HeXDigitf
--
-- >>> parse parseFf "test" "fxyz" :: Either ParseError HeXDigit
-- Right HeXDigitf
--
-- >>> isn't _Right (parse parseFf "test" "xyz" :: Either ParseError HeXDigit)
-- True
parseFf ::
(DFf d, CharParsing p) =>
p d
parseFf =
choice [parseF, parsef] <?> "Ff"