module Aeson.Match.QQ ( Value(..) , Array , Object , Box(..) , TypeSig(..) , Type(..) , Nullable(..) , Path , PathElem(..) , parse , qq , match , mismatch , missingPathElem , extraArrayValues , extraObjectValues ) where import Data.String (IsString(..)) import Language.Haskell.TH.Quote (QuasiQuoter(..)) import Language.Haskell.TH.Syntax (Lift(..)) import Aeson.Match.QQ.Internal.Match (Path, PathElem(..), match, mismatch, missingPathElem, extraArrayValues, extraObjectValues) import Aeson.Match.QQ.Internal.Parse (parse) import Aeson.Match.QQ.Internal.Value (Value(..), Box(..), Array, Object, TypeSig(..), Type(..), Nullable(..)) qq :: QuasiQuoter qq :: QuasiQuoter qq = QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) -> (String -> Q Type) -> (String -> Q [Dec]) -> QuasiQuoter QuasiQuoter { quoteExp :: String -> Q Exp quoteExp = \String str -> case ByteString -> Either String (Value Exp) parse (String -> ByteString forall a. IsString a => String -> a fromString String str) of Left String err -> String -> Q Exp forall a. HasCallStack => String -> a error (String "Aeson.Match.QQ.qq: " String -> String -> String forall a. [a] -> [a] -> [a] ++ String err) Right Value Exp val -> Value Exp -> Q Exp forall t. Lift t => t -> Q Exp lift Value Exp val , quotePat :: String -> Q Pat quotePat = \String _ -> String -> Q Pat forall a. HasCallStack => String -> a error String "Aeson.Match.QQ.qq: no quotePat" , quoteType :: String -> Q Type quoteType = \String _ -> String -> Q Type forall a. HasCallStack => String -> a error String "Aeson.Match.QQ.qq: no quoteType" , quoteDec :: String -> Q [Dec] quoteDec = \String _ -> String -> Q [Dec] forall a. HasCallStack => String -> a error String "Aeson.Match.QQ.qq: no quoteDec" }