git.iko.soy/typeable/servant
on master help sign in
Make Link take a Maybe argument for MatrixParam, just like QueryParam
0e22d19Alp Mestanogullari
servant/src/Servant/Utils/Links.hs+3−3
@@ -303,10 +303,10 @@ instance (KnownSymbol sym, HasLink sub)
303-- MatrixParam instances
303-- MatrixParam instances
304instance (KnownSymbol sym, ToText v, HasLink sub)
304instance (KnownSymbol sym, ToText v, HasLink sub)
305 => HasLink (MatrixParam sym v :> sub) where
305 => HasLink (MatrixParam sym v :> sub) where
306− type MkLink (MatrixParam sym v :> sub) = v -> MkLink sub
306+ type MkLink (MatrixParam sym v :> sub) = Maybe v -> MkLink sub
307− toLink _ l v =
307+ toLink _ l mv =
308 toLink (Proxy :: Proxy sub) $
308 toLink (Proxy :: Proxy sub) $
309− addMatrixParam (SingleParam k (toText v)) l
309+ maybe id (addMatrixParam . SingleParam k . toText) mv l
310 where
310 where
311 k = symbolVal (Proxy :: Proxy sym)
311 k = symbolVal (Proxy :: Proxy sym)
312
312
servant/test/Servant/Utils/LinksSpec.hs+1−1
@@ -67,7 +67,7 @@ spec = describe "Servant.Utils.Links" $ do
67 :> "child"
67 :> "child"
68 :> MatrixParam "gender" String
68 :> MatrixParam "gender" String
69 :> Get '[JSON] String)
69 :> Get '[JSON] String)
70− apiLink l3 ["Hubert?x=;&", "Cumberdale"] "Edward?"
70+ apiLink l3 ["Hubert?x=;&", "Cumberdale"] (Just "Edward?")
71 `shouldBeURI` "parent;name[]=Hubert%3Fx%3D%3B%26;\
71 `shouldBeURI` "parent;name[]=Hubert%3Fx%3D%3B%26;\
72 \name[]=Cumberdale/child;gender=Edward%3F"
72 \name[]=Cumberdale/child;gender=Edward%3F"
73
73