git.iko.soy/typeable/openapi3
on master help sign in
add generation of additional properties
9c11bedBen Weitzman
src/Data/Swagger/Schema/Generator.hs+7−1
@@ -1,4 +1,5 @@
1{-# LANGUAGE GADTs #-}
1{-# LANGUAGE GADTs #-}
2+{-# LANGUAGE OverloadedLists #-}
2{-# LANGUAGE ScopedTypeVariables #-}
3{-# LANGUAGE ScopedTypeVariables #-}
3
4
4module Data.Swagger.Schema.Generator where
5module Data.Swagger.Schema.Generator where
@@ -79,7 +80,12 @@ schemaGen defns schema =
79 let presentKeys = take numProps $ S.toList reqKeys ++ shuffledOptional
80 let presentKeys = take numProps $ S.toList reqKeys ++ shuffledOptional
80 let presentProps = M.filterWithKey (\k _ -> k `elem` presentKeys) props
81 let presentProps = M.filterWithKey (\k _ -> k `elem` presentKeys) props
81 let gens = schemaGen defns <$> presentProps
82 let gens = schemaGen defns <$> presentProps
83+ additionalGens <- case schema ^. additionalProperties of
84+ Just (AdditionalPropertiesSchema addlSchema) -> do
85+ additionalKeys <- sequence . take (numProps - length presentProps) . repeat $ T.pack <$> arbitrary
86+ return . M.fromList $ zip additionalKeys (repeat . schemaGen defns $ dereference defns addlSchema)
87+ _ -> return []
82− x <- sequence gens
88+ x <- sequence $ gens <> additionalGens
83 return . Object $ M.toHashMap x
89 return . Object $ M.toHashMap x
84 where
90 where
85 dereference :: Definitions a -> Referenced a -> a
91 dereference :: Definitions a -> Referenced a -> a