git.iko.soy/typeable/swagger2
on master help sign in
Use Data.Aeson.QQ.Simple from aeson
commit86658dd0aeeaffad6f6f9da2be4d06642a5cff21 authorOleg Grenrus <oleg.grenrus@iki.fi> dateSat 24 Nov 2018, 20:00 (8 years ago) parentcad9367
3 files changed+2−48
stack.yaml+1 swagger2.cabal+1−3 test/Data/Aeson/QQ/Simple.hs−45
stack.yaml+1
@@ -2,5 +2,6 @@ resolver: lts-12.10
22packages:
33- '.'
44extra-deps:
5+- aeson-1.4.2.0
56- base-compat-batteries-0.10.4
67- contravariant-1.5
swagger2.cabal+1−3
@@ -75,7 +75,7 @@ library
7575 -- other dependencies
7676 build-depends:
7777 base-compat-batteries >=0.10.4 && <0.11
78− , aeson >=1.3.1.1 && <1.5
78+ , aeson >=1.4.2.0 && <1.5
7979 -- cookie 0.4.3 is needed by GHC 7.8 due to time>=1.4 constraint
8080 , cookie >=0.4.3 && <0.5
8181 , generics-sop >=0.3.2.0 && <0.5
@@ -137,8 +137,6 @@ test-suite spec
137137 Data.Swagger.SchemaSpec
138138 Data.Swagger.Schema.ValidationSpec
139139 Data.Swagger.Schema.GeneratorSpec
140−
141− Data.Aeson.QQ.Simple
142140 default-language: Haskell2010
143141
144142test-suite doctests
test/Data/Aeson/QQ/Simple.hsdeleted−45
@@ -1,45 +0,0 @@
1−{-# LANGUAGE TemplateHaskell #-}
2−-- | Like "Data.Aeson.QQ" but without interpolation.
3−module Data.Aeson.QQ.Simple where
4−
5−import Data.Aeson
6−import Data.ByteString.Lazy.UTF8 as UTF8
7−import qualified Data.HashMap.Strict as HM
8−import qualified Data.Text as T
9−import qualified Data.Vector as V
10−import Language.Haskell.TH
11−import Language.Haskell.TH.Quote
12−import Language.Haskell.TH.Syntax (Lift (..))
13−import Prelude ()
14−import Prelude.Compat
15−
16−aesonQQ :: QuasiQuoter
17−aesonQQ = QuasiQuoter
18− { quoteExp = aesonExp
19− , quotePat = const $ error "No quotePat defined for jsonQQ"
20− , quoteType = const $ error "No quoteType defined for jsonQQ"
21− , quoteDec = const $ error "No quoteDec defined for jsonQQ"
22− }
23−
24−aesonExp :: String -> ExpQ
25−aesonExp txt =
26− case eitherDecode $ UTF8.fromString txt of
27− Left err -> error $ "Error in aesonExp: " ++ show err
28− Right val -> liftValue val
29−
30−liftValue :: Value -> ExpQ
31−liftValue (String str) = [| String $(liftText str) |]
32−liftValue Null = [| Null |]
33−liftValue (Number n) = [| Number (fromRational $(return $ LitE $ RationalL (toRational n))) |]
34−liftValue (Bool b) = [| Bool b |]
35−liftValue (Array arr) = [| Array $ V.fromList $(ListE <$> traverse liftValue (V.toList arr)) |]
36−liftValue (Object obj) = [| object $jsList |]
37− where
38− jsList :: ExpQ
39− jsList = ListE <$> traverse objs2list (HM.toList obj)
40−
41− objs2list :: (T.Text, Value) -> ExpQ
42− objs2list (key, value) = [| ($(liftText key), $(liftValue value)) |]
43−
44−liftText :: T.Text -> ExpQ
45−liftText t = [| T.pack $(lift $ T.unpack t) |]