servant-swagger-1.1.6: test/Data/Aeson/QQ/Simple2.hs
-- | Like "Data.Aeson.QQ" but without interpolation.
module Data.Aeson.QQ.Simple2 (aesonQQ) where
import Data.Aeson (eitherDecode, Value)
import Data.ByteString.Lazy.UTF8 as UTF8
import Language.Haskell.TH
import Language.Haskell.TH.Quote
import Language.Haskell.TH.Syntax (Lift (..))
import Prelude ()
import Prelude.Compat
aesonQQ :: QuasiQuoter
aesonQQ = QuasiQuoter
{ quoteExp = aesonExp
, quotePat = const $ error "No quotePat defined for jsonQQ"
, quoteType = const $ error "No quoteType defined for jsonQQ"
, quoteDec = const $ error "No quoteDec defined for jsonQQ"
}
aesonExp :: String -> ExpQ
aesonExp txt =
case eitherDecode $ UTF8.fromString txt of
Left err -> error $ "Error in aesonExp: " ++ show err
Right val -> lift (val :: Value)