{-# LANGUAGE OverloadedLists #-}
module JsonLogic.Operation.Misc (miscOperations, trace) where
import Debug.Trace (traceShow)
import JsonLogic.Json
import JsonLogic.Type
import Prelude hiding (log)
miscOperations :: Monad m => Operations m
miscOperations :: Operations m
miscOperations = [Item (Operations m)
forall (m :: * -> *). Monad m => Operation m
trace]
trace :: Monad m => Operation m
trace :: Operation m
trace = ([Char]
"trace", Function m Json
forall (m :: * -> *). Monad m => Function m Json
evaluateTrace)
evaluateTrace :: Monad m => Function m Json
evaluateTrace :: Function m Json
evaluateTrace SubEvaluator m
evaluator Json
args Json
vars = do
Json
res <- SubEvaluator m
evaluator Json
args Json
vars
let val :: Json
val = case Json
res of
JsonArray (Json
item : [Json]
_) -> Json
item
Json
oth -> Json
oth
Json -> (Json -> Result m Json) -> Json -> Result m Json
forall a b. Show a => a -> b -> b
traceShow Json
val Json -> Result m Json
forall (m :: * -> *) a. Monad m => a -> m a
return Json
val