{-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} module Language.Jsonnet.Std.TH where import qualified Data.Text.IO as TIO import Language.Haskell.TH import Language.Haskell.TH.Quote () import Language.Haskell.TH.Syntax (addDependentFile) import Language.Jsonnet.TH (parse) stdlibPath :: String stdlibPath :: String stdlibPath = String "stdlib/std.jsonnet" mkStdlib :: Q Exp mkStdlib :: Q Exp mkStdlib = do Text src <- IO Text -> Q Text forall a. IO a -> Q a runIO (String -> IO Text TIO.readFile String stdlibPath) Exp ast <- String -> Text -> Q Exp parse String stdlibPath Text src String -> Q () addDependentFile String stdlibPath Exp -> Q Exp forall (f :: * -> *) a. Applicative f => a -> f a pure Exp ast