packages feed

jsonlogic-0.1.0.0: src/JsonLogic/Operation/Misc.hs

{-# LANGUAGE OverloadedLists #-}

-- |
-- Module      : JsonLogic.Operation.Misc
-- Description : Internal JsonLogic misc operations
-- Copyright   : (c) Marien Matser, Gerard van Schie, Jelle Teeuwissen, 2022
-- License     : MIT
-- Maintainer  : jelleteeuwissen@hotmail.nl
-- Stability   : experimental
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 = [trace]

trace :: Monad m => Operation m
trace = ("trace", evaluateTrace)

evaluateTrace :: Monad m => Function m Json
evaluateTrace evaluator args vars = do
  res <- evaluator args vars
  let val = case res of
        JsonArray (item : _) -> item
        oth -> oth
  traceShow val return val