@@ -154,6 +154,16 @@ addQueryParam :: Param -> Link -> Link
154154addQueryParam qp l =
155155 l { _queryParams = _queryParams l <> [qp] }
156156
157+-- | Transform 'Link' into 'URI'.
158+--
159+-- >>> type API = "something" :> Get '[JSON] Int
160+-- >>> linkURI $ safeLink (Proxy :: Proxy API) (Proxy :: Proxy API)
161+-- something
162+--
163+-- >>> type API = "sum" :> QueryParams "x" Int :> Get '[JSON] Int
164+-- >>> linkURI $ safeLink (Proxy :: Proxy API) (Proxy :: Proxy API) [1, 2, 3]
165+-- sum?x[]=1&x[]=2&x[]=3
166+--
157167linkURI :: Link -> URI
158168linkURI = linkURI' LinkArrayElementBracket
159169
@@ -163,6 +173,15 @@ data LinkArrayElementStyle
163173 | LinkArrayElementPlain -- ^ @foo=1&foo=2@
164174 deriving (Eq, Ord, Show, Enum, Bounded)
165175
176+-- | Configurable 'linkURI'.
177+--
178+-- >>> type API = "sum" :> QueryParams "x" Int :> Get '[JSON] Int
179+-- >>> linkURI' LinkArrayElementBracket $ safeLink (Proxy :: Proxy API) (Proxy :: Proxy API) [1, 2, 3]
180+-- sum?x[]=1&x[]=2&x[]=3
181+--
182+-- >>> linkURI' LinkArrayElementPlain $ safeLink (Proxy :: Proxy API) (Proxy :: Proxy API) [1, 2, 3]
183+-- sum?x=1&x=2&x=3
184+--
166185linkURI' :: LinkArrayElementStyle -> Link -> URI
167186linkURI' addBrackets (Link segments q_params) =
168187 URI mempty -- No scheme (relative)
@@ -287,3 +306,6 @@ instance HasLink Raw where
287306instance HasLink sub => HasLink (AuthProtect tag :> sub) where
288307 type MkLink (AuthProtect tag :> sub) = MkLink sub
289308 toLink _ = toLink (Proxy :: Proxy sub)
309+
310+-- $setup
311+-- >>> import Servant.API