{-# LANGUAGE DataKinds #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE OverloadedStrings #-}
module Examples.TypedEncoding.Unsafe where
import qualified Data.Text as T
import Data.Semigroup ((<>))
import Data.TypedEncoding
import qualified Data.TypedEncoding.Unsafe as Unsafe
import qualified Data.TypedEncoding.Instances.Restriction.ASCII()
exAsciiTE :: Either EncodeEx (Enc '["r-ASCII"] () T.Text)
exAsciiTE :: Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
exAsciiTE = Enc @[Symbol] ('[] @Symbol) () Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall (nms :: [Symbol]) (f :: * -> *) c str.
(Monad f, EncodeAll f nms nms c str) =>
Enc @[Symbol] ('[] @Symbol) c str -> f (Enc @[Symbol] nms c str)
encodeFAll (Enc @[Symbol] ('[] @Symbol) () Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text))
-> (Text -> Enc @[Symbol] ('[] @Symbol) () Text)
-> Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Text -> Enc @[Symbol] ('[] @Symbol) () Text
forall conf str.
conf -> str -> Enc @[Symbol] ('[] @Symbol) conf str
toEncoding () (Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text))
-> Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall a b. (a -> b) -> a -> b
$ Text
"HELLO"
exAsciiT :: Enc '["r-ASCII"] () T.Text
Right Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
exAsciiT = Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
exAsciiTE
modifiedAsciiT :: Either RecreateEx (Enc '["r-ASCII"] () T.Text)
modifiedAsciiT :: Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
modifiedAsciiT = Enc @[Symbol] ('[] @Symbol) () Text
-> Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall (nms :: [Symbol]) (f :: * -> *) c str.
(Monad f, ValidateAll f nms nms c str) =>
Enc @[Symbol] ('[] @Symbol) c str -> f (Enc @[Symbol] nms c str)
recreateFAll (Enc @[Symbol] ('[] @Symbol) () Text
-> Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text))
-> (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Enc @[Symbol] ('[] @Symbol) () Text)
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. () -> Text -> Enc @[Symbol] ('[] @Symbol) () Text
forall conf str.
conf -> str -> Enc @[Symbol] ('[] @Symbol) conf str
toEncoding () (Text -> Enc @[Symbol] ('[] @Symbol) () Text)
-> (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Text)
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Enc @[Symbol] ('[] @Symbol) () Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ( Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
<> Text
" some extra stuff") (Text -> Text)
-> (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Text)
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Text
forall k (enc :: k) conf str. Enc @k enc conf str -> str
getPayload (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text))
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
RecreateEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall a b. (a -> b) -> a -> b
$ Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
exAsciiT
toLowerAscii :: Either EncodeEx (Enc '["r-ASCII"] () T.Text)
toLowerAscii :: Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
toLowerAscii = (Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall k (e :: k) c s1 s2.
(Unsafe @k e c s1 -> Unsafe @k e c s2)
-> Enc @k e c s1 -> Enc @k e c s2
Unsafe.withUnsafe ((Text -> Text)
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap Text -> Text
T.toLower) (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
exAsciiTE
appendAscii :: Either EncodeEx (Enc '["r-ASCII"] () T.Text)
appendAscii :: Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
appendAscii = do
Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
hELLO <- Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
exAsciiTE
Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
hello <- Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
toLowerAscii
Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall (f :: * -> *) a. Applicative f => a -> f a
pure (Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text))
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Either
EncodeEx
(Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text)
forall a b. (a -> b) -> a -> b
$ Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall k (enc :: k) conf str.
Unsafe @k enc conf str -> Enc @k enc conf str
Unsafe.runUnsafe (Text -> Text -> Text
forall a. Semigroup a => a -> a -> a
(<>) (Text -> Text -> Text)
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe
@[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () (Text -> Text)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall k (enc :: k) conf str.
Enc @k enc conf str -> Unsafe @k enc conf str
Unsafe.Unsafe Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
hELLO Unsafe
@[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () (Text -> Text)
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
-> Unsafe @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
forall k (enc :: k) conf str.
Enc @k enc conf str -> Unsafe @k enc conf str
Unsafe.Unsafe Enc @[Symbol] ((':) @Symbol "r-ASCII" ('[] @Symbol)) () Text
hello)