stringz-0.0.1: src/Data/Stringz/String.hs
{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE FlexibleInstances #-}
module Data.Stringz.String 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 HasString a where
string ::
Lens' a String
instance HasString [Char] where
string =
id
instance HasString Text.Text where
string =
iso
Text.unpack
Text.pack
instance HasString LazyText.Text where
string =
iso
LazyText.unpack
LazyText.pack
instance HasString ByteStringChar8.ByteString where
string =
iso ByteStringChar8.unpack ByteStringChar8.pack . string
instance HasString ByteStringLazyChar8.ByteString where
string =
iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . string
instance HasString a => HasString (Identity a) where
string =
iso runIdentity Identity . string
instance HasString a => HasString (Const a b) where
string =
iso getConst Const . string
class AsString a where
_String ::
Prism' a String
instance AsString [Char] where
_String =
id
instance AsString Text.Text where
_String =
iso
Text.unpack
Text.pack
instance AsString LazyText.Text where
_String =
iso
LazyText.unpack
LazyText.pack
instance AsString ByteStringChar8.ByteString where
_String =
iso ByteStringChar8.unpack ByteStringChar8.pack . _String
instance AsString ByteStringLazyChar8.ByteString where
_String =
iso ByteStringLazyChar8.unpack ByteStringLazyChar8.pack . _String
instance AsString a => AsString (Identity a) where
_String =
iso runIdentity Identity . _String
instance AsString a => AsString (Const a b) where
_String =
iso getConst Const . _String