git.iko.soy/typeable/swagger2
on master help sign in
Add utilities to derive JSON for Swagger types
commit8d0b42dec725b94bbd8e92b71355a0fd9751f8a0 authorNickolay Kudasov <nickolay.kudasov@gmail.com> dateFri 6 Nov 2015, 23:28 (11 years ago) parent708c753
2 files changed+22
src/Data/Swagger/Internal/Utils.hs+20 swagger2.cabal+2
src/Data/Swagger/Internal/Utils.hsnew file+20
@@ -0,0 +1,20 @@
1+module Data.Swagger.Internal.Utils where
2+
3+import Data.Aeson.TH
4+import Data.Char
5+import Language.Haskell.TH
6+
7+jsonOptions :: String -> Options
8+jsonOptions prefix = defaultOptions
9+ { fieldLabelModifier = modifier
10+ , constructorTagModifier = modifier
11+ , sumEncoding = ObjectWithSingleField
12+ }
13+ where
14+ modifier = lowerFirstLetter . drop (length prefix)
15+
16+ lowerFirstLetter (c:s) = toLower c : s
17+ lowerFirstLetter s = s
18+
19+deriveJSON' :: Name -> Q [Dec]
20+deriveJSON' name = deriveJSON (jsonOptions (nameBase name)) name
swagger2.cabal+2
@@ -19,11 +19,13 @@ library
1919 exposed-modules:
2020 Data.Swagger
2121 Data.Swagger.Internal
22+ Data.Swagger.Internal.Utils
2223 build-depends: base >= 4.7 && < 5
2324 , aeson
2425 , hashable
2526 , http-media
2627 , network
28+ , template-haskell
2729 , text
2830 , unordered-containers
2931 default-language: Haskell2010