on master help sign in
Merge pull request #705 from kmicklas/text-encoders

Add packTextEncoder and generalize unpackTextEncoder

commitbed6c156a1a627f6f8171949a59756a60f2bc121 authorElliot Cameron <3noch@users.noreply.github.com> dateSat 18 Apr 2020, 22:25 (6 years ago) parent6b015f21e42174
1 file changed+7−5
lib/route/src/Obelisk/Route.hs+7−5
lib/route/src/Obelisk/Route.hs+7−5
@@ -50,6 +50,7 @@ module Obelisk.Route
5050 , pathParamEncoder
5151 , pathLiteralEncoder
5252 , singletonListEncoder
53+ , packTextEncoder
5354 , unpackTextEncoder
5455 , prefixTextEncoder
5556 , unsafeTshowEncoder
@@ -159,6 +160,7 @@ import Data.Set (Set)
159160import qualified Data.Set as Set
160161import Data.Some (Some(Some))
161162import Data.Text (Text)
163+import Data.Text.Lens (IsText, packed, unpacked)
162164import qualified Data.Text as T
163165import qualified Data.Text.Encoding as T
164166import Data.Universe
@@ -756,11 +758,11 @@ prefixNonemptyTextEncoder p = Encoder $ pure $ EncoderImpl
756758 Just stripped -> pure stripped
757759 }
758760
759−unpackTextEncoder :: (Applicative check, Applicative parse) => Encoder check parse Text String
760−unpackTextEncoder = Encoder $ pure $ EncoderImpl
761− { _encoderImpl_encode = T.unpack
762− , _encoderImpl_decode = pure . T.pack
763− }
761+packTextEncoder :: (Applicative check, Applicative parse, IsText text) => Encoder check parse String text
762+packTextEncoder = isoEncoder packed
763+
764+unpackTextEncoder :: (Applicative check, Applicative parse, IsText text) => Encoder check parse text String
765+unpackTextEncoder = isoEncoder unpacked
764766
765767toListMapEncoder :: (Applicative check, Applicative parse, Ord k) => Encoder check parse (Map k v) [(k, v)]
766768toListMapEncoder = Encoder $ pure $ EncoderImpl