dhall-1.30.0: tests/Dhall/Test/Substitution.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
module Dhall.Test.Substitution where
import Data.Void (Void)
import Dhall.Core (Expr(BoolLit, Var))
import Dhall.Src (Src)
import qualified Dhall
import qualified Dhall.Map
import qualified Lens.Family as Lens
data Result = Failure Integer | Success String
deriving (Eq, Dhall.Generic, Show)
instance Dhall.FromDhall Result
substituteResult :: FilePath -> IO Result
substituteResult fp = let
evaluateSettings = Lens.over Dhall.substitutions (Dhall.Map.insert "Result" resultType) Dhall.defaultEvaluateSettings
in Dhall.inputFileWithSettings evaluateSettings resultDecoder fp
resultDecoder :: Dhall.Decoder Result
resultDecoder = Dhall.auto
resultType :: Expr Src Void
resultType = Dhall.expected resultDecoder
substituteFoo :: FilePath -> IO Bool
substituteFoo fp = let
evaluateSettings = Lens.set Dhall.substitutions (Dhall.Map.fromList [("Foo", Var "Bar"), ("Bar", BoolLit True)]) Dhall.defaultEvaluateSettings
in Dhall.inputFileWithSettings evaluateSettings Dhall.auto fp