{-# 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 :: Lens' [Char] [Char] string = ([Char] -> f [Char]) -> [Char] -> f [Char] forall a. a -> a id instance HasString Text.Text where string :: Lens' Text [Char] string = (Text -> [Char]) -> ([Char] -> Text) -> Iso Text Text [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Text -> [Char] Text.unpack [Char] -> Text Text.pack instance HasString LazyText.Text where string :: Lens' Text [Char] string = (Text -> [Char]) -> ([Char] -> Text) -> Iso Text Text [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Text -> [Char] LazyText.unpack [Char] -> Text LazyText.pack instance HasString ByteStringChar8.ByteString where string :: Lens' ByteString [Char] string = (ByteString -> [Char]) -> ([Char] -> ByteString) -> Iso ByteString ByteString [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso ByteString -> [Char] ByteStringChar8.unpack [Char] -> ByteString ByteStringChar8.pack (([Char] -> f [Char]) -> ByteString -> f ByteString) -> (([Char] -> f [Char]) -> [Char] -> f [Char]) -> ([Char] -> f [Char]) -> ByteString -> f ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char] -> f [Char]) -> [Char] -> f [Char] forall a. HasString a => Lens' a [Char] Lens' [Char] [Char] string instance HasString ByteStringLazyChar8.ByteString where string :: Lens' ByteString [Char] string = (ByteString -> [Char]) -> ([Char] -> ByteString) -> Iso ByteString ByteString [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso ByteString -> [Char] ByteStringLazyChar8.unpack [Char] -> ByteString ByteStringLazyChar8.pack (([Char] -> f [Char]) -> ByteString -> f ByteString) -> (([Char] -> f [Char]) -> [Char] -> f [Char]) -> ([Char] -> f [Char]) -> ByteString -> f ByteString forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char] -> f [Char]) -> [Char] -> f [Char] forall a. HasString a => Lens' a [Char] Lens' [Char] [Char] string instance HasString a => HasString (Identity a) where string :: Lens' (Identity a) [Char] string = (Identity a -> a) -> (a -> Identity a) -> Iso (Identity a) (Identity a) a a forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Identity a -> a forall a. Identity a -> a runIdentity a -> Identity a forall a. a -> Identity a Identity ((a -> f a) -> Identity a -> f (Identity a)) -> (([Char] -> f [Char]) -> a -> f a) -> ([Char] -> f [Char]) -> Identity a -> f (Identity a) forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char] -> f [Char]) -> a -> f a forall a. HasString a => Lens' a [Char] Lens' a [Char] string instance HasString a => HasString (Const a b) where string :: Lens' (Const a b) [Char] string = (Const a b -> a) -> (a -> Const a b) -> Iso (Const a b) (Const a b) a a forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Const a b -> a forall {k} a (b :: k). Const a b -> a getConst a -> Const a b forall {k} a (b :: k). a -> Const a b Const ((a -> f a) -> Const a b -> f (Const a b)) -> (([Char] -> f [Char]) -> a -> f a) -> ([Char] -> f [Char]) -> Const a b -> f (Const a b) forall b c a. (b -> c) -> (a -> b) -> a -> c . ([Char] -> f [Char]) -> a -> f a forall a. HasString a => Lens' a [Char] Lens' a [Char] string class AsString a where _String :: Prism' a String instance AsString [Char] where _String :: Prism' [Char] [Char] _String = p [Char] (f [Char]) -> p [Char] (f [Char]) forall a. a -> a id instance AsString Text.Text where _String :: Prism' Text [Char] _String = (Text -> [Char]) -> ([Char] -> Text) -> Iso Text Text [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Text -> [Char] Text.unpack [Char] -> Text Text.pack instance AsString LazyText.Text where _String :: Prism' Text [Char] _String = (Text -> [Char]) -> ([Char] -> Text) -> Iso Text Text [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Text -> [Char] LazyText.unpack [Char] -> Text LazyText.pack instance AsString ByteStringChar8.ByteString where _String :: Prism' ByteString [Char] _String = (ByteString -> [Char]) -> ([Char] -> ByteString) -> Iso ByteString ByteString [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso ByteString -> [Char] ByteStringChar8.unpack [Char] -> ByteString ByteStringChar8.pack (p [Char] (f [Char]) -> p ByteString (f ByteString)) -> (p [Char] (f [Char]) -> p [Char] (f [Char])) -> p [Char] (f [Char]) -> p ByteString (f ByteString) forall b c a. (b -> c) -> (a -> b) -> a -> c . p [Char] (f [Char]) -> p [Char] (f [Char]) forall a. AsString a => Prism' a [Char] Prism' [Char] [Char] _String instance AsString ByteStringLazyChar8.ByteString where _String :: Prism' ByteString [Char] _String = (ByteString -> [Char]) -> ([Char] -> ByteString) -> Iso ByteString ByteString [Char] [Char] forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso ByteString -> [Char] ByteStringLazyChar8.unpack [Char] -> ByteString ByteStringLazyChar8.pack (p [Char] (f [Char]) -> p ByteString (f ByteString)) -> (p [Char] (f [Char]) -> p [Char] (f [Char])) -> p [Char] (f [Char]) -> p ByteString (f ByteString) forall b c a. (b -> c) -> (a -> b) -> a -> c . p [Char] (f [Char]) -> p [Char] (f [Char]) forall a. AsString a => Prism' a [Char] Prism' [Char] [Char] _String instance AsString a => AsString (Identity a) where _String :: Prism' (Identity a) [Char] _String = (Identity a -> a) -> (a -> Identity a) -> Iso (Identity a) (Identity a) a a forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Identity a -> a forall a. Identity a -> a runIdentity a -> Identity a forall a. a -> Identity a Identity (p a (f a) -> p (Identity a) (f (Identity a))) -> (p [Char] (f [Char]) -> p a (f a)) -> p [Char] (f [Char]) -> p (Identity a) (f (Identity a)) forall b c a. (b -> c) -> (a -> b) -> a -> c . p [Char] (f [Char]) -> p a (f a) forall a. AsString a => Prism' a [Char] Prism' a [Char] _String instance AsString a => AsString (Const a b) where _String :: Prism' (Const a b) [Char] _String = (Const a b -> a) -> (a -> Const a b) -> Iso (Const a b) (Const a b) a a forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b iso Const a b -> a forall {k} a (b :: k). Const a b -> a getConst a -> Const a b forall {k} a (b :: k). a -> Const a b Const (p a (f a) -> p (Const a b) (f (Const a b))) -> (p [Char] (f [Char]) -> p a (f a)) -> p [Char] (f [Char]) -> p (Const a b) (f (Const a b)) forall b c a. (b -> c) -> (a -> b) -> a -> c . p [Char] (f [Char]) -> p a (f a) forall a. AsString a => Prism' a [Char] Prism' a [Char] _String