pull Conv into core
This commit is contained in:
@@ -43,6 +43,7 @@ library
|
|||||||
List
|
List
|
||||||
Monad
|
Monad
|
||||||
Show
|
Show
|
||||||
|
Conv
|
||||||
Either
|
Either
|
||||||
Functor
|
Functor
|
||||||
Semiring
|
Semiring
|
||||||
|
|||||||
+75
@@ -0,0 +1,75 @@
|
|||||||
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
|
|
||||||
|
|
||||||
|
module Conv (
|
||||||
|
StringConv (..)
|
||||||
|
, toS
|
||||||
|
, toSL
|
||||||
|
, Leniency (..)
|
||||||
|
) where
|
||||||
|
|
||||||
|
import Data.ByteString.Char8 as B
|
||||||
|
import Data.ByteString.Lazy.Char8 as LB
|
||||||
|
import Data.Text as T
|
||||||
|
import Data.Text.Encoding as T
|
||||||
|
import Data.Text.Encoding.Error as T
|
||||||
|
import Data.Text.Lazy as LT
|
||||||
|
import Data.Text.Lazy.Encoding as LT
|
||||||
|
|
||||||
|
import Base
|
||||||
|
import Data.Eq (Eq(..))
|
||||||
|
import Data.Ord (Ord(..))
|
||||||
|
import Data.Function ((.), id)
|
||||||
|
import Data.String (String)
|
||||||
|
import Control.Applicative (pure)
|
||||||
|
|
||||||
|
data Leniency = Lenient | Strict
|
||||||
|
deriving (Eq,Show,Ord,Enum,Bounded)
|
||||||
|
|
||||||
|
class StringConv a b where
|
||||||
|
strConv :: Leniency -> a -> b
|
||||||
|
|
||||||
|
toS :: StringConv a b => a -> b
|
||||||
|
toS = strConv Strict
|
||||||
|
|
||||||
|
toSL :: StringConv a b => a -> b
|
||||||
|
toSL = strConv Lenient
|
||||||
|
|
||||||
|
instance StringConv String String where strConv _ = id
|
||||||
|
instance StringConv String B.ByteString where strConv _ = B.pack
|
||||||
|
instance StringConv String LB.ByteString where strConv _ = LB.pack
|
||||||
|
instance StringConv String T.Text where strConv _ = T.pack
|
||||||
|
instance StringConv String LT.Text where strConv _ = LT.pack
|
||||||
|
|
||||||
|
instance StringConv B.ByteString String where strConv _ = B.unpack
|
||||||
|
instance StringConv B.ByteString B.ByteString where strConv _ = id
|
||||||
|
instance StringConv B.ByteString LB.ByteString where strConv _ = LB.fromChunks . pure
|
||||||
|
instance StringConv B.ByteString T.Text where strConv = decodeUtf8T
|
||||||
|
instance StringConv B.ByteString LT.Text where strConv l = strConv l . LB.fromChunks . pure
|
||||||
|
|
||||||
|
instance StringConv LB.ByteString String where strConv _ = LB.unpack
|
||||||
|
instance StringConv LB.ByteString B.ByteString where strConv _ = B.concat . LB.toChunks
|
||||||
|
instance StringConv LB.ByteString LB.ByteString where strConv _ = id
|
||||||
|
instance StringConv LB.ByteString T.Text where strConv l = decodeUtf8T l . strConv l
|
||||||
|
instance StringConv LB.ByteString LT.Text where strConv = decodeUtf8LT
|
||||||
|
|
||||||
|
instance StringConv T.Text String where strConv _ = T.unpack
|
||||||
|
instance StringConv T.Text B.ByteString where strConv _ = T.encodeUtf8
|
||||||
|
instance StringConv T.Text LB.ByteString where strConv l = strConv l . T.encodeUtf8
|
||||||
|
instance StringConv T.Text LT.Text where strConv _ = LT.fromStrict
|
||||||
|
instance StringConv T.Text T.Text where strConv _ = id
|
||||||
|
|
||||||
|
instance StringConv LT.Text String where strConv _ = LT.unpack
|
||||||
|
instance StringConv LT.Text T.Text where strConv _ = LT.toStrict
|
||||||
|
instance StringConv LT.Text LT.Text where strConv _ = id
|
||||||
|
instance StringConv LT.Text LB.ByteString where strConv _ = LT.encodeUtf8
|
||||||
|
instance StringConv LT.Text B.ByteString where strConv l = strConv l . LT.encodeUtf8
|
||||||
|
|
||||||
|
decodeUtf8T :: Leniency -> B.ByteString -> T.Text
|
||||||
|
decodeUtf8T Lenient = T.decodeUtf8With T.lenientDecode
|
||||||
|
decodeUtf8T Strict = T.decodeUtf8With T.strictDecode
|
||||||
|
|
||||||
|
decodeUtf8LT :: Leniency -> LB.ByteString -> LT.Text
|
||||||
|
decodeUtf8LT Lenient = LT.decodeUtf8With T.lenientDecode
|
||||||
|
decodeUtf8LT Strict = LT.decodeUtf8With T.strictDecode
|
||||||
+1
-8
@@ -27,6 +27,7 @@ import Monad as X
|
|||||||
import Functor as X
|
import Functor as X
|
||||||
import Either as X
|
import Either as X
|
||||||
import Applicative as X
|
import Applicative as X
|
||||||
|
import Conv as X
|
||||||
|
|
||||||
import Base as Base hiding (
|
import Base as Base hiding (
|
||||||
putStr
|
putStr
|
||||||
@@ -279,14 +280,6 @@ import Data.Text.Lazy (
|
|||||||
, fromStrict
|
, fromStrict
|
||||||
)
|
)
|
||||||
|
|
||||||
import Data.String.Conv as X (
|
|
||||||
strConv
|
|
||||||
, toS
|
|
||||||
, toSL
|
|
||||||
, Leniency(..)
|
|
||||||
, StringConv
|
|
||||||
)
|
|
||||||
|
|
||||||
import Data.String as X (IsString)
|
import Data.String as X (IsString)
|
||||||
|
|
||||||
-- Printf
|
-- Printf
|
||||||
|
|||||||
Reference in New Issue
Block a user