module ASCII
(
Char,
Group (..), charGroup, inGroup,
Case (..), letterCase, isCase, toCaseChar, toCaseString,
charToInt, intToCharMaybe, intToCharUnsafe,
charToWord8, word8ToCharMaybe, word8ToCharUnsafe,
charToUnicode, unicodeToCharMaybe, unicodeToCharUnsafe,
charListToUnicodeString, unicodeStringToCharListMaybe, unicodeStringToCharListUnsafe,
charListToText, textToCharListMaybe, textToCharListUnsafe,
charListToByteString, byteStringToCharListMaybe, byteStringToCharListUnsafe,
ASCII,
validateChar, validateString, lift,
CharSuperset, StringSuperset, Lift, CharIso, StringIso,
char, string
)
where
import ASCII.Case ( Case (..) )
import ASCII.Char ( Char )
import ASCII.Group ( Group (..) )
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 Data.Bool ( Bool (..) )
import Data.Function ( (.) )
import Data.Int ( Int )
import Data.Maybe ( Maybe, maybe )
import Data.Word ( Word8 )
import qualified ASCII.Case
import qualified ASCII.Group
import qualified ASCII.Isomorphism
import qualified ASCII.Lift
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