Merge pull request #19 from haskell-servant/fixed-pr-16
Canonicalize API before generating docs.
This commit is contained in:
commit
e4b2e154f5
4 changed files with 7 additions and 6 deletions
|
@ -5,6 +5,7 @@
|
||||||
* Render endpoints in a canonical order (https://github.com/haskell-servant/servant-docs/pull/15)
|
* Render endpoints in a canonical order (https://github.com/haskell-servant/servant-docs/pull/15)
|
||||||
* Remove ToJSON superclass from ToSample
|
* Remove ToJSON superclass from ToSample
|
||||||
* Split out Internal module
|
* Split out Internal module
|
||||||
|
* `Canonicalize` API types before generating the docs for them
|
||||||
|
|
||||||
0.3
|
0.3
|
||||||
---
|
---
|
||||||
|
|
|
@ -27,7 +27,7 @@ instance ToJSON Greet
|
||||||
|
|
||||||
-- | We can also implement 'MimeRender' for additional formats like 'PlainText'.
|
-- | We can also implement 'MimeRender' for additional formats like 'PlainText'.
|
||||||
instance MimeRender PlainText Greet where
|
instance MimeRender PlainText Greet where
|
||||||
toByteString Proxy (Greet s) = "\"" <> cs s <> "\""
|
mimeRender Proxy (Greet s) = "\"" <> cs s <> "\""
|
||||||
|
|
||||||
-- We add some useful annotations to our captures,
|
-- We add some useful annotations to our captures,
|
||||||
-- query parameters and request body to make the docs
|
-- query parameters and request body to make the docs
|
||||||
|
|
|
@ -273,8 +273,8 @@ makeLenses ''Action
|
||||||
|
|
||||||
-- | Generate the docs for a given API that implements 'HasDocs'. This is the
|
-- | Generate the docs for a given API that implements 'HasDocs'. This is the
|
||||||
-- default way to create documentation.
|
-- default way to create documentation.
|
||||||
docs :: HasDocs layout => Proxy layout -> API
|
docs :: HasDocs (Canonicalize layout) => Proxy layout -> API
|
||||||
docs p = docsFor p (defEndpoint, defAction)
|
docs p = docsFor (canonicalize p) (defEndpoint, defAction)
|
||||||
|
|
||||||
-- | Closed type family, check if endpoint is exactly within API.
|
-- | Closed type family, check if endpoint is exactly within API.
|
||||||
|
|
||||||
|
@ -318,7 +318,7 @@ extraInfo p action =
|
||||||
-- 'extraInfo'.
|
-- 'extraInfo'.
|
||||||
--
|
--
|
||||||
-- If you only want to add an introduction, use 'docsWithIntros'.
|
-- If you only want to add an introduction, use 'docsWithIntros'.
|
||||||
docsWith :: HasDocs layout
|
docsWith :: HasDocs (Canonicalize layout)
|
||||||
=> [DocIntro]
|
=> [DocIntro]
|
||||||
-> ExtraInfo layout
|
-> ExtraInfo layout
|
||||||
-> Proxy layout
|
-> Proxy layout
|
||||||
|
@ -330,7 +330,7 @@ docsWith intros (ExtraInfo endpoints) p =
|
||||||
|
|
||||||
-- | Generate the docs for a given API that implements 'HasDocs' with with any
|
-- | Generate the docs for a given API that implements 'HasDocs' with with any
|
||||||
-- number of introduction(s)
|
-- number of introduction(s)
|
||||||
docsWithIntros :: HasDocs layout => [DocIntro] -> Proxy layout -> API
|
docsWithIntros :: HasDocs (Canonicalize layout) => [DocIntro] -> Proxy layout -> API
|
||||||
docsWithIntros intros = docsWith intros mempty
|
docsWithIntros intros = docsWith intros mempty
|
||||||
|
|
||||||
-- | The class that abstracts away the impact of API combinators
|
-- | The class that abstracts away the impact of API combinators
|
||||||
|
|
|
@ -56,7 +56,7 @@ instance ToSample Int where
|
||||||
toSample = Just 17
|
toSample = Just 17
|
||||||
|
|
||||||
instance MimeRender PlainText Int where
|
instance MimeRender PlainText Int where
|
||||||
toByteString _ = cs . show
|
mimeRender _ = cs . show
|
||||||
|
|
||||||
|
|
||||||
type TestApi1 = Get '[JSON, PlainText] Int
|
type TestApi1 = Get '[JSON, PlainText] Int
|
||||||
|
|
Loading…
Reference in a new issue