git.iko.soy/typeable/servant
on master help sign in
Fix issue #1011: NewlineFraming encodes newline after each element
commitf1eb5f93a816d95d4b8ffe58adb691506aad2d08 authorOleg Grenrus <oleg.grenrus@iki.fi> dateSat 10 Nov 2018, 00:22 (8 years ago) parent17f9237
2 files changed+4−11
servant/src/Servant/API/Stream.hs+3−10 servant/test/Servant/API/StreamSpec.hs+1−1
servant/src/Servant/API/Stream.hs+3−10
@@ -187,20 +187,13 @@ instance FramingUnrender NoFraming where
187187-- NewlineFraming
188188-------------------------------------------------------------------------------
189189
190−-- | A simple framing strategy that has no header or termination, and inserts a
191−-- newline character between each frame. This assumes that it is used with a
190+-- | A simple framing strategy that has no header, and inserts a
191+-- newline character after each frame. This assumes that it is used with a
192192-- Content-Type that encodes without newlines (e.g. JSON).
193193data NewlineFraming
194194
195195instance FramingRender NewlineFraming where
196− framingRender _ f = mapStepT go0 where
197− go0 Stop = Stop
198− go0 (Error err) = Error err
199− go0 (Skip s) = Skip (go0 s)
200− go0 (Yield x s) = Yield (f x) (go s)
201− go0 (Effect ms) = Effect (fmap go0 ms)
202−
203− go = fmap (\x -> "\n" <> f x)
196+ framingRender _ f = fmap (\x -> f x <> "\n")
204197
205198instance FramingUnrender NewlineFraming where
206199 framingUnrender _ f = transformWithAtto $ do
servant/test/Servant/API/StreamSpec.hs+1−1
@@ -38,7 +38,7 @@ spec = describe "Servant.API.Stream" $ do
3838
3939 it "framingRender examples" $ do
4040 runRenderFrames re [] `shouldBe` Right ""
41− runRenderFrames re ["foo", "bar", "baz"] `shouldBe` Right "foo\nbar\nbaz"
41+ runRenderFrames re ["foo", "bar", "baz"] `shouldBe` Right "foo\nbar\nbaz\n"
4242
4343 it "framingUnrender examples" $ do
4444 let expected n = map Right [fromString ("foo" ++ show (n :: Int)), "bar", "baz"]