From 0e22d19800514f14ca838257b2debb809e7ef939 Mon Sep 17 00:00:00 2001 From: Alp Mestanogullari Date: Fri, 19 Jun 2015 11:30:44 +0200 Subject: [PATCH] Make Link take a Maybe argument for MatrixParam, just like QueryParam --- servant/src/Servant/Utils/Links.hs | 6 +++--- servant/test/Servant/Utils/LinksSpec.hs | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/servant/src/Servant/Utils/Links.hs b/servant/src/Servant/Utils/Links.hs index 5fa8bd0b..19fdc019 100644 --- a/servant/src/Servant/Utils/Links.hs +++ b/servant/src/Servant/Utils/Links.hs @@ -303,10 +303,10 @@ instance (KnownSymbol sym, HasLink sub) -- MatrixParam instances instance (KnownSymbol sym, ToText v, HasLink sub) => HasLink (MatrixParam sym v :> sub) where - type MkLink (MatrixParam sym v :> sub) = v -> MkLink sub - toLink _ l v = + type MkLink (MatrixParam sym v :> sub) = Maybe v -> MkLink sub + toLink _ l mv = toLink (Proxy :: Proxy sub) $ - addMatrixParam (SingleParam k (toText v)) l + maybe id (addMatrixParam . SingleParam k . toText) mv l where k = symbolVal (Proxy :: Proxy sym) diff --git a/servant/test/Servant/Utils/LinksSpec.hs b/servant/test/Servant/Utils/LinksSpec.hs index b261559e..16f13925 100644 --- a/servant/test/Servant/Utils/LinksSpec.hs +++ b/servant/test/Servant/Utils/LinksSpec.hs @@ -67,7 +67,7 @@ spec = describe "Servant.Utils.Links" $ do :> "child" :> MatrixParam "gender" String :> Get '[JSON] String) - apiLink l3 ["Hubert?x=;&", "Cumberdale"] "Edward?" + apiLink l3 ["Hubert?x=;&", "Cumberdale"] (Just "Edward?") `shouldBeURI` "parent;name[]=Hubert%3Fx%3D%3B%26;\ \name[]=Cumberdale/child;gender=Edward%3F"