stringz-0.0.1: src/Data/Stringz/ByteString.hs
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE FlexibleInstances #-}
module Data.Stringz.ByteString where
import Control.Lens
import qualified Data.ByteString.Char8 as ByteStringChar8
import qualified Data.ByteString.Lazy.Char8 as ByteStringLazyChar8
import qualified Data.Text as Text
import qualified Data.Text.Lazy as LazyText
class HasByteString a where
byteString ::
Lens' a ByteStringChar8.ByteString
instance HasByteString [Char] where
byteString =
iso
ByteStringChar8.pack
ByteStringChar8.unpack
instance HasByteString Text.Text where
byteString =
iso Text.unpack Text.pack . iso ByteStringChar8.pack ByteStringChar8.unpack
instance HasByteString LazyText.Text where
byteString =
iso LazyText.unpack LazyText.pack . iso ByteStringChar8.pack ByteStringChar8.unpack
instance HasByteString ByteStringChar8.ByteString where
byteString =
id
instance HasByteString ByteStringLazyChar8.ByteString where
byteString =
iso ByteStringLazyChar8.toStrict ByteStringLazyChar8.fromStrict
instance HasByteString a => HasByteString (Identity a) where
byteString =
iso runIdentity Identity . byteString
instance HasByteString a => HasByteString (Const a b) where
byteString =
iso getConst Const . byteString
class HasLazyByteString a where
lazyByteString ::
Lens' a ByteStringLazyChar8.ByteString
instance HasLazyByteString [Char] where
lazyByteString =
iso
ByteStringLazyChar8.pack
ByteStringLazyChar8.unpack
instance HasLazyByteString Text.Text where
lazyByteString =
iso Text.unpack Text.pack . iso ByteStringLazyChar8.pack ByteStringLazyChar8.unpack
instance HasLazyByteString LazyText.Text where
lazyByteString =
iso LazyText.unpack LazyText.pack . iso ByteStringLazyChar8.pack ByteStringLazyChar8.unpack
instance HasLazyByteString ByteStringChar8.ByteString where
lazyByteString =
iso ByteStringChar8.fromStrict ByteStringChar8.toStrict
instance HasLazyByteString ByteStringLazyChar8.ByteString where
lazyByteString =
id
instance HasLazyByteString a => HasLazyByteString (Identity a) where
lazyByteString =
iso runIdentity Identity . lazyByteString
instance HasLazyByteString a => HasLazyByteString (Const a b) where
lazyByteString =
iso getConst Const . lazyByteString
class AsByteString a where
_ByteString ::
Prism' a ByteStringChar8.ByteString
instance AsByteString [Char] where
_ByteString =
iso
ByteStringChar8.pack
ByteStringChar8.unpack
instance AsByteString Text.Text where
_ByteString =
iso Text.unpack Text.pack . _ByteString
instance AsByteString LazyText.Text where
_ByteString =
iso LazyText.unpack LazyText.pack . _ByteString
instance AsByteString ByteStringChar8.ByteString where
_ByteString =
id
instance AsByteString ByteStringLazyChar8.ByteString where
_ByteString =
iso ByteStringLazyChar8.toStrict ByteStringLazyChar8.fromStrict
instance AsByteString a => AsByteString (Identity a) where
_ByteString =
iso runIdentity Identity . _ByteString
instance AsByteString a => AsByteString (Const a b) where
_ByteString =
iso getConst Const . _ByteString
class AsLazyByteString a where
_LazyByteString ::
Prism' a ByteStringLazyChar8.ByteString
instance AsLazyByteString [Char] where
_LazyByteString =
iso
ByteStringLazyChar8.pack
ByteStringLazyChar8.unpack
instance AsLazyByteString Text.Text where
_LazyByteString =
iso Text.unpack Text.pack . _LazyByteString
instance AsLazyByteString LazyText.Text where
_LazyByteString =
iso LazyText.unpack LazyText.pack . _LazyByteString
instance AsLazyByteString ByteStringChar8.ByteString where
_LazyByteString =
iso ByteStringLazyChar8.fromStrict ByteStringLazyChar8.toStrict
instance AsLazyByteString ByteStringLazyChar8.ByteString where
_LazyByteString =
id
instance AsLazyByteString a => AsLazyByteString (Identity a) where
_LazyByteString =
iso runIdentity Identity . _LazyByteString
instance AsLazyByteString a => AsLazyByteString (Const a b) where
_LazyByteString =
iso getConst Const . _LazyByteString