module ASCII.Superset
(
ToCaselessChar (..), ToChar (..), FromChar (..), CharSuperset,
asCharUnsafe, toCharMaybe, toCaselessCharMaybe, toCharOrFail, toCaselessCharOrFail,
toCharSub, toCaselessCharSub, substituteChar, convertCharMaybe, convertCharOrFail,
ToCaselessString (..), ToString (..), FromString (..), StringSuperset (..),
toCharListMaybe, toCaselessCharListMaybe, toCharListOrFail, toCaselessCharListOrFail,
convertStringMaybe, convertStringOrFail
)
where
import ASCII.Caseless (CaselessChar)
import Control.Monad (return)
import Control.Monad.Fail (MonadFail (fail))
import Data.Bool (Bool, (&&))
import Data.Function (id, (.))
import Data.Functor (fmap)
import Data.Maybe (Maybe (..))
import Data.Ord ((<=), (>=))
import qualified ASCII.Caseless as Caseless
import qualified ASCII.Char as ASCII
import qualified Data.Bool as Bool
import qualified Data.ByteString as BS
import qualified Data.ByteString.Builder as BSB
import qualified Data.ByteString.Lazy as LBS
import qualified Data.Char as Unicode
import qualified Data.Int as Int
import qualified Data.List as List
import qualified Data.Text as T
import qualified Data.Text.Lazy as LT
import qualified Data.Text.Lazy.Builder as TB
import qualified Data.Word as Word
import qualified Numeric.Natural as Nat
import qualified Prelude
class ToCaselessChar char where
isAsciiCaselessChar :: char -> Bool
toCaselessCharUnsafe :: char -> CaselessChar
class ToCaselessChar char => ToChar char where
isAsciiChar :: char -> Bool
toCharUnsafe :: char -> ASCII.Char
class FromChar char where
fromChar :: ASCII.Char -> char
class (ToChar char, FromChar char) => CharSuperset char
asCharUnsafe :: CharSuperset char => (ASCII.Char -> ASCII.Char) -> char -> char
asCharUnsafe :: (Char -> Char) -> char -> char
asCharUnsafe Char -> Char
f = Char -> char
forall char. FromChar char => Char -> char
fromChar (Char -> char) -> (char -> Char) -> char -> char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Char
f (Char -> Char) -> (char -> Char) -> char -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. char -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
toCharMaybe :: ToChar char => char -> Maybe ASCII.Char
toCharMaybe :: char -> Maybe Char
toCharMaybe = char -> Maybe Char
forall char (context :: * -> *).
(ToChar char, MonadFail context) =>
char -> context Char
toCharOrFail
toCaselessCharMaybe :: ToCaselessChar char => char -> Maybe CaselessChar
toCaselessCharMaybe :: char -> Maybe CaselessChar
toCaselessCharMaybe = char -> Maybe CaselessChar
forall char (context :: * -> *).
(ToCaselessChar char, MonadFail context) =>
char -> context CaselessChar
toCaselessCharOrFail
toCharOrFail :: (ToChar char, MonadFail context) => char -> context ASCII.Char
toCharOrFail :: char -> context Char
toCharOrFail char
x = if char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar char
x then Char -> context Char
forall (m :: * -> *) a. Monad m => a -> m a
return (char -> Char
forall char. ToChar char => char -> Char
toCharUnsafe char
x)
else String -> context Char
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Not an ASCII character"
toCaselessCharOrFail :: (ToCaselessChar char, MonadFail context) => char -> context CaselessChar
toCaselessCharOrFail :: char -> context CaselessChar
toCaselessCharOrFail char
x = if char -> Bool
forall char. ToCaselessChar char => char -> Bool
isAsciiCaselessChar char
x then CaselessChar -> context CaselessChar
forall (m :: * -> *) a. Monad m => a -> m a
return (char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe char
x)
else String -> context CaselessChar
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"Not an ASCII character"
toCharSub :: ToChar char => char -> ASCII.Char
toCharSub :: char -> Char
toCharSub char
x = if char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar char
x then char -> Char
forall char. ToChar char => char -> Char
toCharUnsafe char
x else Char
ASCII.Substitute
toCaselessCharSub :: ToCaselessChar char => char -> CaselessChar
toCaselessCharSub :: char -> CaselessChar
toCaselessCharSub char
x = if char -> Bool
forall char. ToCaselessChar char => char -> Bool
isAsciiCaselessChar char
x then char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe char
x else CaselessChar
Caseless.Substitute
substituteChar :: CharSuperset char => char -> char
substituteChar :: char -> char
substituteChar char
x = if char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar char
x then char
x else Char -> char
forall char. FromChar char => Char -> char
fromChar Char
ASCII.Substitute
convertCharMaybe :: (ToChar char1, FromChar char2) => char1 -> Maybe char2
convertCharMaybe :: char1 -> Maybe char2
convertCharMaybe = char1 -> Maybe char2
forall char1 char2 (context :: * -> *).
(ToChar char1, FromChar char2, MonadFail context) =>
char1 -> context char2
convertCharOrFail
convertCharOrFail :: (ToChar char1, FromChar char2, MonadFail context) =>
char1 -> context char2
convertCharOrFail :: char1 -> context char2
convertCharOrFail = (Char -> char2) -> context Char -> context char2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Char -> char2
forall char. FromChar char => Char -> char
fromChar (context Char -> context char2)
-> (char1 -> context Char) -> char1 -> context char2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. char1 -> context Char
forall char (context :: * -> *).
(ToChar char, MonadFail context) =>
char -> context Char
toCharOrFail
class ToCaselessString string where
isAsciiCaselessString :: string -> Bool
toCaselessCharListUnsafe :: string -> [CaselessChar]
toCaselessCharListSub :: string -> [CaselessChar]
class ToCaselessString string => ToString string where
isAsciiString :: string -> Bool
toCharListUnsafe :: string -> [ASCII.Char]
toCharListSub :: string -> [ASCII.Char]
class FromString string where
fromCharList :: [ASCII.Char] -> string
class (ToString string, FromString string) => StringSuperset string where
substituteString :: string -> string
mapCharsUnsafe :: (ASCII.Char -> ASCII.Char) -> string -> string
mapCharsUnsafe Char -> Char
f = [Char] -> string
forall string. FromString string => [Char] -> string
fromCharList ([Char] -> string) -> (string -> [Char]) -> string -> string
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> [Char] -> [Char]
forall a b. (a -> b) -> [a] -> [b]
List.map Char -> Char
f ([Char] -> [Char]) -> (string -> [Char]) -> string -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. string -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe
toCharListMaybe :: ToString string => string -> Maybe [ASCII.Char]
toCharListMaybe :: string -> Maybe [Char]
toCharListMaybe = string -> Maybe [Char]
forall string (context :: * -> *).
(ToString string, MonadFail context) =>
string -> context [Char]
toCharListOrFail
toCaselessCharListMaybe :: ToCaselessString string => string -> Maybe [CaselessChar]
toCaselessCharListMaybe :: string -> Maybe [CaselessChar]
toCaselessCharListMaybe = string -> Maybe [CaselessChar]
forall string (context :: * -> *).
(ToCaselessString string, MonadFail context) =>
string -> context [CaselessChar]
toCaselessCharListOrFail
toCharListOrFail :: (ToString string, MonadFail context) =>
string -> context [ASCII.Char]
toCharListOrFail :: string -> context [Char]
toCharListOrFail string
x = if string -> Bool
forall string. ToString string => string -> Bool
isAsciiString string
x then [Char] -> context [Char]
forall (m :: * -> *) a. Monad m => a -> m a
return (string -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe string
x)
else String -> context [Char]
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"String contains non-ASCII characters"
toCaselessCharListOrFail :: (ToCaselessString string, MonadFail context) =>
string -> context [CaselessChar]
toCaselessCharListOrFail :: string -> context [CaselessChar]
toCaselessCharListOrFail string
x = if string -> Bool
forall string. ToCaselessString string => string -> Bool
isAsciiCaselessString string
x then [CaselessChar] -> context [CaselessChar]
forall (m :: * -> *) a. Monad m => a -> m a
return (string -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe string
x)
else String -> context [CaselessChar]
forall (m :: * -> *) a. MonadFail m => String -> m a
fail String
"String contains non-ASCII characters"
convertStringMaybe :: (ToString string1, FromString string2) =>
string1 -> Maybe string2
convertStringMaybe :: string1 -> Maybe string2
convertStringMaybe = string1 -> Maybe string2
forall string1 string2 (context :: * -> *).
(ToString string1, FromString string2, MonadFail context) =>
string1 -> context string2
convertStringOrFail
convertStringOrFail :: (ToString string1, FromString string2, MonadFail context) =>
string1 -> context string2
convertStringOrFail :: string1 -> context string2
convertStringOrFail = ([Char] -> string2) -> context [Char] -> context string2
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap [Char] -> string2
forall string. FromString string => [Char] -> string
fromCharList (context [Char] -> context string2)
-> (string1 -> context [Char]) -> string1 -> context string2
forall b c a. (b -> c) -> (a -> b) -> a -> c
. string1 -> context [Char]
forall string (context :: * -> *).
(ToString string, MonadFail context) =>
string -> context [Char]
toCharListOrFail
instance ToCaselessChar CaselessChar where
isAsciiCaselessChar :: CaselessChar -> Bool
isAsciiCaselessChar CaselessChar
_ = Bool
Bool.True
toCaselessCharUnsafe :: CaselessChar -> CaselessChar
toCaselessCharUnsafe = CaselessChar -> CaselessChar
forall a. a -> a
id
instance ToCaselessChar ASCII.Char where
isAsciiCaselessChar :: Char -> Bool
isAsciiCaselessChar Char
_ = Bool
Bool.True
toCaselessCharUnsafe :: Char -> CaselessChar
toCaselessCharUnsafe = Char -> CaselessChar
Caseless.disregardCase
instance ToChar ASCII.Char where
isAsciiChar :: Char -> Bool
isAsciiChar Char
_ = Bool
Bool.True
toCharUnsafe :: Char -> Char
toCharUnsafe = Char -> Char
forall a. a -> a
id
instance FromChar ASCII.Char where
fromChar :: Char -> Char
fromChar = Char -> Char
forall a. a -> a
id
instance CharSuperset ASCII.Char
instance ToCaselessChar Unicode.Char where
isAsciiCaselessChar :: Char -> Bool
isAsciiCaselessChar = Char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharUnsafe :: Char -> CaselessChar
toCaselessCharUnsafe = Char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe (Char -> CaselessChar) -> (Char -> Char) -> Char -> CaselessChar
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
instance ToChar Unicode.Char where
isAsciiChar :: Char -> Bool
isAsciiChar = (Char -> Char -> Bool
forall a. Ord a => a -> a -> Bool
<= Char
'\DEL')
toCharUnsafe :: Char -> Char
toCharUnsafe = ToChar Int => Int -> Char
forall char. ToChar char => char -> Char
toCharUnsafe @Int.Int (Int -> Char) -> (Char -> Int) -> Char -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Int
Unicode.ord
instance FromChar Unicode.Char where
fromChar :: Char -> Char
fromChar = Int -> Char
Unicode.chr (Int -> Char) -> (Char -> Int) -> Char -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Int
ASCII.toInt
instance CharSuperset Unicode.Char
instance ToCaselessChar Nat.Natural where
isAsciiCaselessChar :: Natural -> Bool
isAsciiCaselessChar = Natural -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharUnsafe :: Natural -> CaselessChar
toCaselessCharUnsafe = Char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe (Char -> CaselessChar)
-> (Natural -> Char) -> Natural -> CaselessChar
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Natural -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
instance ToChar Nat.Natural where
isAsciiChar :: Natural -> Bool
isAsciiChar = (Natural -> Natural -> Bool
forall a. Ord a => a -> a -> Bool
<= Natural
127)
toCharUnsafe :: Natural -> Char
toCharUnsafe = ToChar Int => Int -> Char
forall char. ToChar char => char -> Char
toCharUnsafe @Int.Int (Int -> Char) -> (Natural -> Int) -> Natural -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Natural -> Int
forall a b. (Integral a, Num b) => a -> b
Prelude.fromIntegral
instance FromChar Nat.Natural where
fromChar :: Char -> Natural
fromChar = Int -> Natural
forall a b. (Integral a, Num b) => a -> b
Prelude.fromIntegral (Int -> Natural) -> (Char -> Int) -> Char -> Natural
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Int
ASCII.toInt
instance CharSuperset Nat.Natural
instance ToCaselessChar Int.Int where
isAsciiCaselessChar :: Int -> Bool
isAsciiCaselessChar = Int -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharUnsafe :: Int -> CaselessChar
toCaselessCharUnsafe = Char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe (Char -> CaselessChar) -> (Int -> Char) -> Int -> CaselessChar
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
instance ToChar Int.Int where
isAsciiChar :: Int -> Bool
isAsciiChar Int
x = (Int
x Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
>= Int
0) Bool -> Bool -> Bool
&& (Int
x Int -> Int -> Bool
forall a. Ord a => a -> a -> Bool
<= Int
127)
toCharUnsafe :: Int -> Char
toCharUnsafe = Int -> Char
ASCII.fromIntUnsafe
instance FromChar Int.Int where
fromChar :: Char -> Int
fromChar = Char -> Int
ASCII.toInt
instance CharSuperset Int.Int
instance ToCaselessChar Word.Word8 where
isAsciiCaselessChar :: Word8 -> Bool
isAsciiCaselessChar = Word8 -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharUnsafe :: Word8 -> CaselessChar
toCaselessCharUnsafe = Char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe (Char -> CaselessChar) -> (Word8 -> Char) -> Word8 -> CaselessChar
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word8 -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
instance ToChar Word.Word8 where
isAsciiChar :: Word8 -> Bool
isAsciiChar = (Word8 -> Word8 -> Bool
forall a. Ord a => a -> a -> Bool
<= Word8
127)
toCharUnsafe :: Word8 -> Char
toCharUnsafe = Int -> Char
ASCII.fromIntUnsafe (Int -> Char) -> (Word8 -> Int) -> Word8 -> Char
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Word8 -> Int
forall a b. (Integral a, Num b) => a -> b
Prelude.fromIntegral
instance FromChar Word.Word8 where
fromChar :: Char -> Word8
fromChar = Int -> Word8
forall a b. (Integral a, Num b) => a -> b
Prelude.fromIntegral (Int -> Word8) -> (Char -> Int) -> Char -> Word8
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Char -> Int
ASCII.toInt
instance CharSuperset Word.Word8
instance ToCaselessChar char => ToCaselessString [char] where
isAsciiCaselessString :: [char] -> Bool
isAsciiCaselessString = (char -> Bool) -> [char] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
List.all char -> Bool
forall char. ToCaselessChar char => char -> Bool
isAsciiCaselessChar
toCaselessCharListUnsafe :: [char] -> [CaselessChar]
toCaselessCharListUnsafe = (char -> CaselessChar) -> [char] -> [CaselessChar]
forall a b. (a -> b) -> [a] -> [b]
List.map char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharUnsafe
toCaselessCharListSub :: [char] -> [CaselessChar]
toCaselessCharListSub = (char -> CaselessChar) -> [char] -> [CaselessChar]
forall a b. (a -> b) -> [a] -> [b]
List.map char -> CaselessChar
forall char. ToCaselessChar char => char -> CaselessChar
toCaselessCharSub
instance ToChar char => ToString [char] where
isAsciiString :: [char] -> Bool
isAsciiString = (char -> Bool) -> [char] -> Bool
forall (t :: * -> *) a. Foldable t => (a -> Bool) -> t a -> Bool
List.all char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCharListUnsafe :: [char] -> [Char]
toCharListUnsafe = (char -> Char) -> [char] -> [Char]
forall a b. (a -> b) -> [a] -> [b]
List.map char -> Char
forall char. ToChar char => char -> Char
toCharUnsafe
toCharListSub :: [char] -> [Char]
toCharListSub = (char -> Char) -> [char] -> [Char]
forall a b. (a -> b) -> [a] -> [b]
List.map char -> Char
forall char. ToChar char => char -> Char
toCharSub
instance FromChar char => FromString [char] where
fromCharList :: [Char] -> [char]
fromCharList = (Char -> char) -> [Char] -> [char]
forall a b. (a -> b) -> [a] -> [b]
List.map Char -> char
forall char. FromChar char => Char -> char
fromChar
instance CharSuperset char => StringSuperset [char] where
substituteString :: [char] -> [char]
substituteString = (char -> char) -> [char] -> [char]
forall a b. (a -> b) -> [a] -> [b]
List.map char -> char
forall char. CharSuperset char => char -> char
substituteChar
instance ToCaselessString T.Text where
isAsciiCaselessString :: Text -> Bool
isAsciiCaselessString = (Char -> Bool) -> Text -> Bool
T.all Char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharListUnsafe :: Text -> [CaselessChar]
toCaselessCharListUnsafe = String -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe (String -> [CaselessChar])
-> (Text -> String) -> Text -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
toCaselessCharListSub :: Text -> [CaselessChar]
toCaselessCharListSub = String -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub (String -> [CaselessChar])
-> (Text -> String) -> Text -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
instance ToString T.Text where
isAsciiString :: Text -> Bool
isAsciiString = (Char -> Bool) -> Text -> Bool
T.all Char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCharListUnsafe :: Text -> [Char]
toCharListUnsafe = String -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe (String -> [Char]) -> (Text -> String) -> Text -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
toCharListSub :: Text -> [Char]
toCharListSub = String -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub (String -> [Char]) -> (Text -> String) -> Text -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
T.unpack
instance FromString T.Text where
fromCharList :: [Char] -> Text
fromCharList = String -> Text
T.pack (String -> Text) -> ([Char] -> String) -> [Char] -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> String
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset T.Text where
substituteString :: Text -> Text
substituteString = (Char -> Char) -> Text -> Text
T.map Char -> Char
forall char. CharSuperset char => char -> char
substituteChar
mapCharsUnsafe :: (Char -> Char) -> Text -> Text
mapCharsUnsafe Char -> Char
f = (Char -> Char) -> Text -> Text
T.map ((Char -> Char) -> Char -> Char
forall char. CharSuperset char => (Char -> Char) -> char -> char
asCharUnsafe Char -> Char
f)
instance ToCaselessString LT.Text where
isAsciiCaselessString :: Text -> Bool
isAsciiCaselessString = (Char -> Bool) -> Text -> Bool
LT.all Char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCaselessCharListUnsafe :: Text -> [CaselessChar]
toCaselessCharListUnsafe = String -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe (String -> [CaselessChar])
-> (Text -> String) -> Text -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
LT.unpack
toCaselessCharListSub :: Text -> [CaselessChar]
toCaselessCharListSub = String -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub (String -> [CaselessChar])
-> (Text -> String) -> Text -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
LT.unpack
instance ToString LT.Text where
isAsciiString :: Text -> Bool
isAsciiString = (Char -> Bool) -> Text -> Bool
LT.all Char -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCharListUnsafe :: Text -> [Char]
toCharListUnsafe = String -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe (String -> [Char]) -> (Text -> String) -> Text -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
LT.unpack
toCharListSub :: Text -> [Char]
toCharListSub = String -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub (String -> [Char]) -> (Text -> String) -> Text -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> String
LT.unpack
instance FromString LT.Text where
fromCharList :: [Char] -> Text
fromCharList = String -> Text
LT.pack (String -> Text) -> ([Char] -> String) -> [Char] -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> String
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset LT.Text where
substituteString :: Text -> Text
substituteString = (Char -> Char) -> Text -> Text
LT.map Char -> Char
forall char. CharSuperset char => char -> char
substituteChar
mapCharsUnsafe :: (Char -> Char) -> Text -> Text
mapCharsUnsafe Char -> Char
f = (Char -> Char) -> Text -> Text
LT.map ((Char -> Char) -> Char -> Char
forall char. CharSuperset char => (Char -> Char) -> char -> char
asCharUnsafe Char -> Char
f)
instance ToCaselessString TB.Builder where
isAsciiCaselessString :: Builder -> Bool
isAsciiCaselessString = Text -> Bool
forall string. ToCaselessString string => string -> Bool
isAsciiCaselessString (Text -> Bool) -> (Builder -> Text) -> Builder -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
toCaselessCharListUnsafe :: Builder -> [CaselessChar]
toCaselessCharListUnsafe = Text -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe (Text -> [CaselessChar])
-> (Builder -> Text) -> Builder -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
toCaselessCharListSub :: Builder -> [CaselessChar]
toCaselessCharListSub = Text -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub (Text -> [CaselessChar])
-> (Builder -> Text) -> Builder -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
instance ToString TB.Builder where
isAsciiString :: Builder -> Bool
isAsciiString = Text -> Bool
forall string. ToString string => string -> Bool
isAsciiString (Text -> Bool) -> (Builder -> Text) -> Builder -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
toCharListUnsafe :: Builder -> [Char]
toCharListUnsafe = Text -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe (Text -> [Char]) -> (Builder -> Text) -> Builder -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
toCharListSub :: Builder -> [Char]
toCharListSub = Text -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub (Text -> [Char]) -> (Builder -> Text) -> Builder -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
instance FromString TB.Builder where
fromCharList :: [Char] -> Builder
fromCharList = String -> Builder
TB.fromString (String -> Builder) -> ([Char] -> String) -> [Char] -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> String
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset TB.Builder where
substituteString :: Builder -> Builder
substituteString = Text -> Builder
TB.fromLazyText (Text -> Builder) -> (Builder -> Text) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text
forall string. StringSuperset string => string -> string
substituteString (Text -> Text) -> (Builder -> Text) -> Builder -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
mapCharsUnsafe :: (Char -> Char) -> Builder -> Builder
mapCharsUnsafe Char -> Char
f = Text -> Builder
TB.fromLazyText (Text -> Builder) -> (Builder -> Text) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> Text -> Text
forall string.
StringSuperset string =>
(Char -> Char) -> string -> string
mapCharsUnsafe Char -> Char
f (Text -> Text) -> (Builder -> Text) -> Builder -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
TB.toLazyText
instance ToCaselessString BS.ByteString where
isAsciiCaselessString :: ByteString -> Bool
isAsciiCaselessString = (Word8 -> Bool) -> ByteString -> Bool
BS.all Word8 -> Bool
forall char. ToCaselessChar char => char -> Bool
isAsciiCaselessChar
toCaselessCharListUnsafe :: ByteString -> [CaselessChar]
toCaselessCharListUnsafe = [Word8] -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe ([Word8] -> [CaselessChar])
-> (ByteString -> [Word8]) -> ByteString -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
BS.unpack
toCaselessCharListSub :: ByteString -> [CaselessChar]
toCaselessCharListSub = [Word8] -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub ([Word8] -> [CaselessChar])
-> (ByteString -> [Word8]) -> ByteString -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
BS.unpack
instance ToString BS.ByteString where
isAsciiString :: ByteString -> Bool
isAsciiString = (Word8 -> Bool) -> ByteString -> Bool
BS.all Word8 -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCharListUnsafe :: ByteString -> [Char]
toCharListUnsafe = [Word8] -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe ([Word8] -> [Char])
-> (ByteString -> [Word8]) -> ByteString -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
BS.unpack
toCharListSub :: ByteString -> [Char]
toCharListSub = [Word8] -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub ([Word8] -> [Char])
-> (ByteString -> [Word8]) -> ByteString -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
BS.unpack
instance FromString BS.ByteString where
fromCharList :: [Char] -> ByteString
fromCharList = [Word8] -> ByteString
BS.pack ([Word8] -> ByteString)
-> ([Char] -> [Word8]) -> [Char] -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> [Word8]
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset BS.ByteString where
substituteString :: ByteString -> ByteString
substituteString = (Word8 -> Word8) -> ByteString -> ByteString
BS.map Word8 -> Word8
forall char. CharSuperset char => char -> char
substituteChar
mapCharsUnsafe :: (Char -> Char) -> ByteString -> ByteString
mapCharsUnsafe Char -> Char
f = (Word8 -> Word8) -> ByteString -> ByteString
BS.map ((Char -> Char) -> Word8 -> Word8
forall char. CharSuperset char => (Char -> Char) -> char -> char
asCharUnsafe Char -> Char
f)
instance ToCaselessString LBS.ByteString where
isAsciiCaselessString :: ByteString -> Bool
isAsciiCaselessString = (Word8 -> Bool) -> ByteString -> Bool
LBS.all Word8 -> Bool
forall char. ToCaselessChar char => char -> Bool
isAsciiCaselessChar
toCaselessCharListUnsafe :: ByteString -> [CaselessChar]
toCaselessCharListUnsafe = [Word8] -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe ([Word8] -> [CaselessChar])
-> (ByteString -> [Word8]) -> ByteString -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
LBS.unpack
toCaselessCharListSub :: ByteString -> [CaselessChar]
toCaselessCharListSub = [Word8] -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub ([Word8] -> [CaselessChar])
-> (ByteString -> [Word8]) -> ByteString -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
LBS.unpack
instance ToString LBS.ByteString where
isAsciiString :: ByteString -> Bool
isAsciiString = (Word8 -> Bool) -> ByteString -> Bool
LBS.all Word8 -> Bool
forall char. ToChar char => char -> Bool
isAsciiChar
toCharListUnsafe :: ByteString -> [Char]
toCharListUnsafe = [Word8] -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe ([Word8] -> [Char])
-> (ByteString -> [Word8]) -> ByteString -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
LBS.unpack
toCharListSub :: ByteString -> [Char]
toCharListSub = [Word8] -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub ([Word8] -> [Char])
-> (ByteString -> [Word8]) -> ByteString -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> [Word8]
LBS.unpack
instance FromString LBS.ByteString where
fromCharList :: [Char] -> ByteString
fromCharList = [Word8] -> ByteString
LBS.pack ([Word8] -> ByteString)
-> ([Char] -> [Word8]) -> [Char] -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> [Word8]
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset LBS.ByteString where
substituteString :: ByteString -> ByteString
substituteString = (Word8 -> Word8) -> ByteString -> ByteString
LBS.map Word8 -> Word8
forall char. CharSuperset char => char -> char
substituteChar
mapCharsUnsafe :: (Char -> Char) -> ByteString -> ByteString
mapCharsUnsafe Char -> Char
f = (Word8 -> Word8) -> ByteString -> ByteString
LBS.map ((Char -> Char) -> Word8 -> Word8
forall char. CharSuperset char => (Char -> Char) -> char -> char
asCharUnsafe Char -> Char
f)
instance ToCaselessString BSB.Builder where
isAsciiCaselessString :: Builder -> Bool
isAsciiCaselessString = ByteString -> Bool
forall string. ToCaselessString string => string -> Bool
isAsciiCaselessString (ByteString -> Bool) -> (Builder -> ByteString) -> Builder -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
toCaselessCharListUnsafe :: Builder -> [CaselessChar]
toCaselessCharListUnsafe = ByteString -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListUnsafe (ByteString -> [CaselessChar])
-> (Builder -> ByteString) -> Builder -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
toCaselessCharListSub :: Builder -> [CaselessChar]
toCaselessCharListSub = ByteString -> [CaselessChar]
forall string. ToCaselessString string => string -> [CaselessChar]
toCaselessCharListSub (ByteString -> [CaselessChar])
-> (Builder -> ByteString) -> Builder -> [CaselessChar]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
instance ToString BSB.Builder where
isAsciiString :: Builder -> Bool
isAsciiString = ByteString -> Bool
forall string. ToString string => string -> Bool
isAsciiString (ByteString -> Bool) -> (Builder -> ByteString) -> Builder -> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
toCharListUnsafe :: Builder -> [Char]
toCharListUnsafe = ByteString -> [Char]
forall string. ToString string => string -> [Char]
toCharListUnsafe (ByteString -> [Char])
-> (Builder -> ByteString) -> Builder -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
toCharListSub :: Builder -> [Char]
toCharListSub = ByteString -> [Char]
forall string. ToString string => string -> [Char]
toCharListSub (ByteString -> [Char])
-> (Builder -> ByteString) -> Builder -> [Char]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
instance FromString BSB.Builder where
fromCharList :: [Char] -> Builder
fromCharList = ByteString -> Builder
BSB.lazyByteString (ByteString -> Builder)
-> ([Char] -> ByteString) -> [Char] -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [Char] -> ByteString
forall string. FromString string => [Char] -> string
fromCharList
instance StringSuperset BSB.Builder where
substituteString :: Builder -> Builder
substituteString = ByteString -> Builder
BSB.lazyByteString (ByteString -> Builder)
-> (Builder -> ByteString) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ByteString -> ByteString
forall string. StringSuperset string => string -> string
substituteString (ByteString -> ByteString)
-> (Builder -> ByteString) -> Builder -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString
mapCharsUnsafe :: (Char -> Char) -> Builder -> Builder
mapCharsUnsafe Char -> Char
f = ByteString -> Builder
BSB.lazyByteString (ByteString -> Builder)
-> (Builder -> ByteString) -> Builder -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Char -> Char) -> ByteString -> ByteString
forall string.
StringSuperset string =>
(Char -> Char) -> string -> string
mapCharsUnsafe Char -> Char
f (ByteString -> ByteString)
-> (Builder -> ByteString) -> Builder -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> ByteString
BSB.toLazyByteString