{-# LANGUAGE FlexibleContexts #-}
module LDAPv3.StringRepr.Class where
import Common hiding (Option, many, option, some, (<|>))
import qualified Data.Text.Lazy as T (toStrict)
import Data.Text.Lazy.Builder as B
import qualified Data.Text.Short as TS
import Text.Parsec as P
class StringRepr a where
asParsec :: Stream s Identity Char => Parsec s () a
asBuilder :: a -> Builder
asBuilder = Text -> Builder
fromText (Text -> Builder) -> (a -> Text) -> a -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ShortText -> Text
TS.toText (ShortText -> Text) -> (a -> ShortText) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> ShortText
forall a. StringRepr a => a -> ShortText
renderShortText
renderShortText :: a -> ShortText
renderShortText = Text -> ShortText
TS.fromText (Text -> ShortText) -> (a -> Text) -> a -> ShortText
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> Text
T.toStrict (Text -> Text) -> (a -> Text) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Builder -> Text
B.toLazyText (Builder -> Text) -> (a -> Builder) -> a -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Builder
forall a. StringRepr a => a -> Builder
asBuilder
{-# MINIMAL asParsec, (renderShortText | asBuilder) #-}