git.iko.soy/typeable/swagger2
on master help sign in
Add utilities to derive JSON for Swagger types
8d0b42dNickolay Kudasov
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
19 exposed-modules:
19 exposed-modules:
20 Data.Swagger
20 Data.Swagger
21 Data.Swagger.Internal
21 Data.Swagger.Internal
22+ Data.Swagger.Internal.Utils
22 build-depends: base >= 4.7 && < 5
23 build-depends: base >= 4.7 && < 5
23 , aeson
24 , aeson
24 , hashable
25 , hashable
25 , http-media
26 , http-media
26 , network
27 , network
28+ , template-haskell
27 , text
29 , text
28 , unordered-containers
30 , unordered-containers
29 default-language: Haskell2010
31 default-language: Haskell2010