{-# LANGUAGE ScopedTypeVariables #-} module THEnv.JSON where import Data.Aeson (eitherDecode,FromJSON) import Data.ByteString.Lazy.Char8 (pack) import Language.Haskell.TH.Syntax (Exp,Lift(lift),Q) import THEnv (getCompileEnv) import Control.Monad getCompileEnvJSON :: (FromJSON a) => String -> Q a getCompileEnvJSON name = either error (id :: a -> a) . eitherDecode . pack <$> getCompileEnv name getCompileEnvJSONExp :: forall proxy a. (FromJSON a, Lift a) => proxy a -> String -> Q Exp getCompileEnvJSONExp _ = (lift :: a -> Q Exp) <=< getCompileEnvJSON