@@ -14,30 +14,27 @@ module Derive.API.TH
1414 , derivingOptionsToSchemaOptions
1515 , deriveToParamSchema
1616 , deriveToSchema
17− , deriveArbitrary
1817#endif
1918 , deriveApiFromJSON
2019 , deriveApiToJSON
20+ , deriveArbitrary
2121 , generateParseJSON
2222 ) where
2323
24−import Control.Monad
25−import Data.Aeson.TH as A
26−import Data.Aeson.Types
27−#if MIN_VERSION_th_abstraction(0,3,0)
28−import Data.Functor
29−#endif
30−import qualified Data.List as List
31−import Data.Maybe
32−import Data.Typeable
33−import Language.Haskell.TH
34−import Language.Haskell.TH.Datatype
35−import Language.Haskell.TH.Syntax
24+import Control.Monad
25+import Data.Aeson.TH as A
26+import Data.Aeson.Types
27+import Data.List
28+import Data.Maybe
29+import Data.Typeable
30+import Language.Haskell.TH
31+import Language.Haskell.TH.Datatype
32+import Language.Haskell.TH.Syntax
33+import Test.QuickCheck
34+import Test.QuickCheck.Arbitrary.Generic
3635
3736#ifndef ghcjs_HOST_OS
38−import Data.OpenApi hiding (prefix)
39−import Test.QuickCheck
40−import Test.QuickCheck.Arbitrary.Generic
37+import Data.OpenApi hiding (prefix)
4138#endif
4239
4340-- | derive JSON and openapi3 (ToSchema) instances
@@ -90,7 +87,7 @@ derivingOptionsToJsonOptions DerivingOptions{..} = defaultOptions
9087 , unwrapUnaryRecords }
9188 where
9289 snaked = if snake then camelTo2 '_' else id
93− stripped = maybe id stripPrefix prefix
90+ stripped = maybe id stripPrefix' prefix
9491
9592#ifndef ghcjs_HOST_OS
9693derivingOptionsToSchemaOptions :: DerivingOptions -> SchemaOptions
@@ -110,9 +107,10 @@ deriveToSchema :: DerivingOptions -> Name -> Q [Dec]
110107deriveToSchema opts tname = do
111108 tinfo <- reifyDatatype tname
112109 let
113− tvars = datatypeVars tinfo
114110#if MIN_VERSION_th_abstraction(0,3,0)
115− <&> VarT . tvName
111+ tvars = VarT . tvName <$> datatypeVars tinfo
112+#else
113+ tvars = datatypeVars tinfo
116114#endif
117115 context = do
118116 var <- tvars
@@ -134,14 +132,12 @@ deriveApiToJSON = deriveToJSON . derivingOptionsToJsonOptions
134132generateParseJSON :: DerivingOptions -> Name -> Q Exp
135133generateParseJSON = mkParseJSON . derivingOptionsToJsonOptions
136134
137−stripPrefix :: String -> String -> String
138−stripPrefix pfx = fromMaybe <*> List.stripPrefix pfx
135+stripPrefix' :: String -> String -> String
136+stripPrefix' pfx = fromMaybe <*> stripPrefix pfx
139137
140−#ifndef ghcjs_HOST_OS
141138deriveArbitrary :: Name -> Q [Dec]
142139deriveArbitrary t = [d|
143140 instance Arbitrary $(conT t) where
144141 arbitrary = genericArbitrary
145142 shrink = genericShrink
146143 |]
147−#endif