@@ -14,10 +14,13 @@
14module Data.Swagger.Internal.Schema where
14module Data.Swagger.Internal.Schema where
16import Control.Lens
16import Control.Lens
17+import Data.Data.Lens (template)
17import Control.Monad
19import Control.Monad
18import Control.Monad.Writer
20import Control.Monad.Writer
19import Data.Aeson
21import Data.Aeson
20import Data.Char
22import Data.Char
23+import Data.Data (Data)
21import Data.HashMap.Strict (HashMap)
24import Data.HashMap.Strict (HashMap)
22import qualified Data.HashMap.Strict as HashMap
25import qualified Data.HashMap.Strict as HashMap
23import "unordered-containers" Data.HashSet (HashSet)
26import "unordered-containers" Data.HashSet (HashSet)
@@ -161,6 +164,16 @@ declareSchemaRef proxy = do
161 return $ Ref (Reference name)
164 return $ Ref (Reference name)
162 _ -> Inline <$> declareSchema proxy
165 _ -> Inline <$> declareSchema proxy
167+inlineSchemas :: Data s => [T.Text] -> Definitions -> s -> s
168+inlineSchemas names defs = template %~ deref
170+ deref r@(Ref (Reference name))
171+ | name `elem` names =
172+ case HashMap.lookup name defs of
173+ Just schema -> Inline (inlineSchemas names defs schema)
164class GToSchema (f :: * -> *) where
177class GToSchema (f :: * -> *) where
165 gdeclareNamedSchema :: SchemaOptions -> proxy f -> Schema -> Declare Definitions NamedSchema
178 gdeclareNamedSchema :: SchemaOptions -> proxy f -> Schema -> Declare Definitions NamedSchema