@@ -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