module Precursor.Text.Text
( fromString
, IsText(..)
, IsBytes(..)
, Text
, ByteString
, StrictText
, StrictByteString
, singleton
, fromChunks
, toChunks
, toCaseFold
, toLower
, toUpper
, toTitle
, lines
, words
, unlines
, unwords
, isPrefixOf
, isSuffixOf
, isInfixOf
) where
import qualified Data.ByteString as Strict
import Data.ByteString.Lazy (ByteString)
import qualified Data.ByteString.Lazy as ByteString
import qualified Data.Text as Strict
import qualified Data.Text.Encoding as Strict
import Data.Text.Encoding.Error
import Data.Text.Lazy
import Data.Text.Lazy.Encoding
import GHC.Exts (fromString)
import Precursor.Control.Applicative
import Precursor.Control.Category
import Precursor.Control.Functor
import Precursor.Data.Either
type StrictText = Strict.Text
type StrictByteString = Strict.ByteString
class IsText a where
fromText :: Text -> a
fromText' :: StrictText -> a
readBytes' :: StrictByteString -> Either UnicodeException a
readBytes :: ByteString -> Either UnicodeException a
fromText = fromText' . toStrict
fromText' = fromText . fromStrict
readBytes = readBytes' . ByteString.toStrict
readBytes' = readBytes . ByteString.fromStrict
class IsText a => IsBytes a where
fromBytes :: ByteString -> a
fromBytes' :: StrictByteString -> a
fromBytes = fromBytes' . ByteString.toStrict
fromBytes' = fromBytes . ByteString.fromStrict
instance IsText Text where
fromText = id
fromText' = fromStrict
readBytes = decodeUtf8'
readBytes' = fmap fromStrict . Strict.decodeUtf8'
instance IsText Strict.Text where
fromText = toStrict
fromText' = id
readBytes' = Strict.decodeUtf8'
readBytes = fmap toStrict . decodeUtf8'
instance IsText ByteString where
fromText = encodeUtf8
readBytes = pure
instance IsText Strict.ByteString where
fromText' = Strict.encodeUtf8
readBytes' = pure
instance IsBytes ByteString where
fromBytes = id
instance IsBytes Strict.ByteString where
fromBytes' = id