module ASCII
(
Char,
Group (..), charGroup, inGroup,
Case (..), letterCase, isCase, toCaseChar, toCaseString,
isLetter,
isAlphaNum,
isDigit, Digit,
isHexDigit, HexChar,
isOctDigit,
isSpace, isPunctuation, isSymbol,
charToInt, intToCharMaybe, intToCharUnsafe,
charToWord8, word8ToCharMaybe, word8ToCharUnsafe,
charToUnicode, unicodeToCharMaybe, unicodeToCharUnsafe,
charListToUnicodeString, unicodeStringToCharListMaybe, unicodeStringToCharListUnsafe,
charListToText, textToCharListMaybe, textToCharListUnsafe,
charListToByteString, byteStringToCharListMaybe, byteStringToCharListUnsafe,
byteStringToUnicodeStringMaybe, unicodeStringToByteStringMaybe,
byteListToUnicodeStringMaybe, unicodeStringToByteListMaybe,
showNaturalDigits, readNaturalDigits,
showNaturalHexChars, readNaturalHexChars,
ASCII,
validateChar, validateString,
lift,
convertCharMaybe, convertCharOrFail, convertStringMaybe, convertStringOrFail,
showIntegralDecimal, showIntegralHexadecimal,
readIntegralDecimal, readIntegralHexadecimal,
showNaturalDecimal, showNaturalHexadecimal,
readNaturalDecimal, readNaturalHexadecimal,
digitString, hexCharString,
CharSuperset, StringSuperset, Lift,
CharIso, StringIso,
DigitSuperset, DigitStringSuperset, HexCharSuperset, HexStringSuperset,
char, string
)
where
import ASCII.Case (Case (..))
import ASCII.Char (Char)
import ASCII.Decimal (Digit, DigitStringSuperset, DigitSuperset)
import ASCII.Group (Group (..))
import ASCII.Hexadecimal (HexChar, HexCharSuperset, HexStringSuperset)
import ASCII.Isomorphism (CharIso, StringIso)
import ASCII.Lift (Lift)
import ASCII.QuasiQuoters (char, string)
import ASCII.Refinement (ASCII, validateChar, validateString)
import ASCII.Superset (CharSuperset, StringSuperset)
import Control.Monad ((>=>))
import Control.Monad.Fail (MonadFail)
import Data.Bits (Bits)
import Data.Bool (Bool (..))
import Data.Foldable (any)
import Data.Function ((.))
import Data.Int (Int)
import Data.Maybe (Maybe, maybe)
import Data.Word (Word8)
import Numeric.Natural (Natural)
import Prelude (Integral)
import qualified ASCII.Case
import qualified ASCII.Decimal
import qualified ASCII.Group
import qualified ASCII.Hexadecimal
import qualified ASCII.Isomorphism
import qualified ASCII.Lift
import qualified ASCII.Predicates
import qualified ASCII.Superset
import qualified Data.ByteString as BS
import qualified Data.Char as Unicode
import qualified Data.String as Unicode
import qualified Data.Text as Text
charGroup :: CharIso char => char -> Group
charGroup :: char -> Group
charGroup = Char -> Group
ASCII.Group.charGroup (Char -> Group) -> (char -> Char) -> char -> Group
forall b c a. (b -> c) -> (a -> b) -> a -> c
. char -> Char
forall char. CharIso char => char -> Char
ASCII.Isomorphism.toChar
inGroup :: CharSuperset char => Group -> char -> Bool
inGroup :: Group -> char -> Bool
inGroup Group
g = Bool -> (Char -> Bool) -> Maybe Char -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (Group -> Char -> Bool
ASCII.Group.inGroup Group
g) (Maybe Char -> Bool) -> (char -> Maybe Char) -> char -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. char -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe
letterCase :: CharSuperset char => char -> Maybe Case
letterCase :: char -> Maybe Case
letterCase = char -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe (char -> Maybe Char) -> (Char -> Maybe Case) -> char -> Maybe Case
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> Char -> Maybe Case
ASCII.Case.letterCase
isCase :: CharSuperset char => Case -> char -> Bool
isCase :: Case -> char -> Bool
isCase Case
c = Bool -> (Char -> Bool) -> Maybe Char -> Bool
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Bool
False (Case -> Char -> Bool
ASCII.Case.isCase Case
c) (Maybe Char -> Bool) -> (char -> Maybe Char) -> char -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. char -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe
toCaseChar :: CharIso char => Case -> char -> char
toCaseChar :: Case -> char -> char
toCaseChar Case
c = (Char -> Char) -> char -> char
forall char. CharIso char => (Char -> Char) -> char -> char
ASCII.Isomorphism.asChar (Case -> Char -> Char
ASCII.Case.toCase Case
c)
toCaseString :: StringIso string => Case -> string -> string
toCaseString :: Case -> string -> string
toCaseString Case
c = (Char -> Char) -> string -> string
forall string.
StringIso string =>
(Char -> Char) -> string -> string
ASCII.Isomorphism.mapChars (Case -> Char -> Char
ASCII.Case.toCase Case
c)
charToInt :: Char -> Int
charToInt :: Char -> Int
charToInt = Char -> Int
forall char. CharSuperset char => Char -> char
ASCII.Superset.fromChar
intToCharMaybe :: Int -> Maybe Char
intToCharMaybe :: Int -> Maybe Char
intToCharMaybe = Int -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe
intToCharUnsafe :: Int -> Char
intToCharUnsafe :: Int -> Char
intToCharUnsafe = Int -> Char
forall char. CharSuperset char => char -> Char
ASCII.Superset.toCharUnsafe
charToWord8 :: Char -> Word8
charToWord8 :: Char -> Word8
charToWord8 = Char -> Word8
forall char. CharSuperset char => Char -> char
ASCII.Superset.fromChar
word8ToCharMaybe :: Word8 -> Maybe Char
word8ToCharMaybe :: Word8 -> Maybe Char
word8ToCharMaybe = Word8 -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe
word8ToCharUnsafe :: Word8 -> Char
word8ToCharUnsafe :: Word8 -> Char
word8ToCharUnsafe = Word8 -> Char
forall char. CharSuperset char => char -> Char
ASCII.Superset.toCharUnsafe
charToUnicode :: Char -> Unicode.Char
charToUnicode :: Char -> Char
charToUnicode = Char -> Char
forall char. CharSuperset char => Char -> char
ASCII.Superset.fromChar
unicodeToCharMaybe :: Unicode.Char -> Maybe Char
unicodeToCharMaybe :: Char -> Maybe Char
unicodeToCharMaybe = Char -> Maybe Char
forall char. CharSuperset char => char -> Maybe Char
ASCII.Superset.toCharMaybe
unicodeToCharUnsafe :: Unicode.Char -> Char
unicodeToCharUnsafe :: Char -> Char
unicodeToCharUnsafe = Char -> Char
forall char. CharSuperset char => char -> Char
ASCII.Superset.toCharUnsafe
charListToUnicodeString :: [Char] -> Unicode.String
charListToUnicodeString :: [Char] -> String
charListToUnicodeString = [Char] -> String
forall string. StringSuperset string => [Char] -> string
ASCII.Superset.fromCharList
unicodeStringToCharListMaybe :: Unicode.String -> Maybe [Char]
unicodeStringToCharListMaybe :: String -> Maybe [Char]
unicodeStringToCharListMaybe = String -> Maybe [Char]
forall string. StringSuperset string => string -> Maybe [Char]
ASCII.Superset.toCharListMaybe
unicodeStringToCharListUnsafe :: Unicode.String -> [Char]
unicodeStringToCharListUnsafe :: String -> [Char]
unicodeStringToCharListUnsafe = String -> [Char]
forall string. StringSuperset string => string -> [Char]
ASCII.Superset.toCharListUnsafe
charListToText :: [Char] -> Text.Text
charListToText :: [Char] -> Text
charListToText = [Char] -> Text
forall string. StringSuperset string => [Char] -> string
ASCII.Superset.fromCharList
textToCharListMaybe :: Text.Text -> Maybe [Char]
textToCharListMaybe :: Text -> Maybe [Char]
textToCharListMaybe = Text -> Maybe [Char]
forall string. StringSuperset string => string -> Maybe [Char]
ASCII.Superset.toCharListMaybe
textToCharListUnsafe :: Text.Text -> [Char]
textToCharListUnsafe :: Text -> [Char]
textToCharListUnsafe = Text -> [Char]
forall string. StringSuperset string => string -> [Char]
ASCII.Superset.toCharListUnsafe
charListToByteString :: [Char] -> BS.ByteString
charListToByteString :: [Char] -> ByteString
charListToByteString = [Char] -> ByteString
forall string. StringSuperset string => [Char] -> string
ASCII.Superset.fromCharList
byteStringToCharListMaybe :: BS.ByteString -> Maybe [Char]
byteStringToCharListMaybe :: ByteString -> Maybe [Char]
byteStringToCharListMaybe = ByteString -> Maybe [Char]
forall string. StringSuperset string => string -> Maybe [Char]
ASCII.Superset.toCharListMaybe
byteStringToCharListUnsafe :: BS.ByteString -> [Char]
byteStringToCharListUnsafe :: ByteString -> [Char]
byteStringToCharListUnsafe = ByteString -> [Char]
forall string. StringSuperset string => string -> [Char]
ASCII.Superset.toCharListUnsafe
lift :: Lift ascii superset => ascii -> superset
lift :: ascii -> superset
lift = ascii -> superset
forall ascii superset. Lift ascii superset => ascii -> superset
ASCII.Lift.lift
convertCharMaybe :: (CharSuperset char1, CharSuperset char2) => char1 -> Maybe char2
convertCharMaybe :: char1 -> Maybe char2
convertCharMaybe = char1 -> Maybe char2
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
ASCII.Superset.convertCharMaybe
convertCharOrFail :: (CharSuperset char1, CharSuperset char2, MonadFail context) => char1 -> context char2
convertCharOrFail :: char1 -> context char2
convertCharOrFail = char1 -> context char2
forall char1 char2 (context :: * -> *).
(CharSuperset char1, CharSuperset char2, MonadFail context) =>
char1 -> context char2
ASCII.Superset.convertCharOrFail
convertStringMaybe :: (StringSuperset string1, StringSuperset string2) => string1 -> Maybe string2
convertStringMaybe :: string1 -> Maybe string2
convertStringMaybe = string1 -> Maybe string2
forall string1 string2.
(StringSuperset string1, StringSuperset string2) =>
string1 -> Maybe string2
ASCII.Superset.convertStringMaybe
convertStringOrFail :: (StringSuperset string1, StringSuperset string2, MonadFail context) => string1 -> context string2
convertStringOrFail :: string1 -> context string2
convertStringOrFail = string1 -> context string2
forall string1 string2 (context :: * -> *).
(StringSuperset string1, StringSuperset string2,
MonadFail context) =>
string1 -> context string2
ASCII.Superset.convertStringOrFail
byteStringToUnicodeStringMaybe :: BS.ByteString -> Maybe Unicode.String
byteStringToUnicodeStringMaybe :: ByteString -> Maybe String
byteStringToUnicodeStringMaybe = ByteString -> Maybe String
forall string1 string2.
(StringSuperset string1, StringSuperset string2) =>
string1 -> Maybe string2
convertStringMaybe
unicodeStringToByteStringMaybe :: Unicode.String -> Maybe BS.ByteString
unicodeStringToByteStringMaybe :: String -> Maybe ByteString
unicodeStringToByteStringMaybe = String -> Maybe ByteString
forall string1 string2.
(StringSuperset string1, StringSuperset string2) =>
string1 -> Maybe string2
convertStringMaybe
byteListToUnicodeStringMaybe :: [Word8] -> Maybe Unicode.String
byteListToUnicodeStringMaybe :: [Word8] -> Maybe String
byteListToUnicodeStringMaybe = [Word8] -> Maybe String
forall string1 string2.
(StringSuperset string1, StringSuperset string2) =>
string1 -> Maybe string2
convertStringMaybe
unicodeStringToByteListMaybe :: Unicode.String -> Maybe [Word8]
unicodeStringToByteListMaybe :: String -> Maybe [Word8]
unicodeStringToByteListMaybe = String -> Maybe [Word8]
forall string1 string2.
(StringSuperset string1, StringSuperset string2) =>
string1 -> Maybe string2
convertStringMaybe
isLetter :: CharSuperset char => char -> Bool
isLetter :: char -> Bool
isLetter char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isLetter (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isDigit :: CharSuperset char => char -> Bool
isDigit :: char -> Bool
isDigit char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isDigit (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isOctDigit :: CharSuperset char => char -> Bool
isOctDigit :: char -> Bool
isOctDigit char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isOctDigit (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isHexDigit :: CharSuperset char => char -> Bool
isHexDigit :: char -> Bool
isHexDigit char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isHexDigit (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isSpace :: CharSuperset char => char -> Bool
isSpace :: char -> Bool
isSpace char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isSpace (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isAlphaNum :: CharSuperset char => char -> Bool
isAlphaNum :: char -> Bool
isAlphaNum char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isAlphaNum (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isPunctuation :: CharSuperset char => char -> Bool
isPunctuation :: char -> Bool
isPunctuation char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isPunctuation (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
isSymbol :: CharSuperset char => char -> Bool
isSymbol :: char -> Bool
isSymbol char
x = (Char -> Bool) -> Maybe Char -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
any Char -> Bool
ASCII.Predicates.isSymbol (char -> Maybe Char
forall char1 char2.
(CharSuperset char1, CharSuperset char2) =>
char1 -> Maybe char2
convertCharMaybe char
x)
showIntegralDecimal :: (Integral n, StringSuperset string) => n -> string
showIntegralDecimal :: n -> string
showIntegralDecimal = n -> string
forall n string. (Integral n, StringSuperset string) => n -> string
ASCII.Decimal.showIntegral
showIntegralHexadecimal :: (Integral n, StringSuperset string) => Case -> n -> string
showIntegralHexadecimal :: Case -> n -> string
showIntegralHexadecimal = Case -> n -> string
forall string number.
(StringSuperset string, Integral number) =>
Case -> number -> string
ASCII.Hexadecimal.showIntegral
readIntegralDecimal :: (StringSuperset string, Integral number, Bits number) => string -> Maybe number
readIntegralDecimal :: string -> Maybe number
readIntegralDecimal = string -> Maybe number
forall string num.
(StringSuperset string, Integral num, Bits num) =>
string -> Maybe num
ASCII.Decimal.readIntegral
readIntegralHexadecimal :: (StringSuperset string, Integral number, Bits number) => string -> Maybe number
readIntegralHexadecimal :: string -> Maybe number
readIntegralHexadecimal = string -> Maybe number
forall string num.
(StringSuperset string, Integral num, Bits num) =>
string -> Maybe num
ASCII.Hexadecimal.readIntegral
showNaturalDecimal :: DigitStringSuperset string => Natural -> string
showNaturalDecimal :: Natural -> string
showNaturalDecimal = Natural -> string
forall string. DigitStringSuperset string => Natural -> string
ASCII.Decimal.showNatural
showNaturalHexadecimal :: HexStringSuperset string => Case -> Natural -> string
showNaturalHexadecimal :: Case -> Natural -> string
showNaturalHexadecimal = Case -> Natural -> string
forall string.
HexStringSuperset string =>
Case -> Natural -> string
ASCII.Hexadecimal.showNatural
readNaturalDecimal :: DigitStringSuperset string => string -> Maybe Natural
readNaturalDecimal :: string -> Maybe Natural
readNaturalDecimal = string -> Maybe Natural
forall string.
DigitStringSuperset string =>
string -> Maybe Natural
ASCII.Decimal.readNatural
readNaturalHexadecimal :: HexStringSuperset string => string -> Maybe Natural
readNaturalHexadecimal :: string -> Maybe Natural
readNaturalHexadecimal = string -> Maybe Natural
forall string. HexStringSuperset string => string -> Maybe Natural
ASCII.Hexadecimal.readNatural
showNaturalDigits :: Natural -> [Digit]
showNaturalDigits :: Natural -> [Digit]
showNaturalDigits = Natural -> [Digit]
forall string. DigitStringSuperset string => Natural -> string
showNaturalDecimal
readNaturalDigits :: [Digit] -> Maybe Natural
readNaturalDigits :: [Digit] -> Maybe Natural
readNaturalDigits = [Digit] -> Maybe Natural
forall string.
DigitStringSuperset string =>
string -> Maybe Natural
readNaturalDecimal
showNaturalHexChars :: Case -> Natural -> [HexChar]
showNaturalHexChars :: Case -> Natural -> [HexChar]
showNaturalHexChars = Case -> Natural -> [HexChar]
forall string.
HexStringSuperset string =>
Case -> Natural -> string
showNaturalHexadecimal
readNaturalHexChars :: [HexChar] -> Maybe Natural
readNaturalHexChars :: [HexChar] -> Maybe Natural
readNaturalHexChars = [HexChar] -> Maybe Natural
forall string. HexStringSuperset string => string -> Maybe Natural
readNaturalHexadecimal
digitString :: DigitStringSuperset string => Digit -> string
digitString :: Digit -> string
digitString Digit
x = [Digit] -> string
forall string. DigitStringSuperset string => [Digit] -> string
ASCII.Decimal.fromDigitList [Digit
x]
hexCharString :: HexStringSuperset string => HexChar -> string
hexCharString :: HexChar -> string
hexCharString HexChar
x = [HexChar] -> string
forall string. HexStringSuperset string => [HexChar] -> string
ASCII.Hexadecimal.fromHexCharList [HexChar
x]