{-# LANGUAGE RankNTypes #-} module Events.Spec ( interpret , Spec, Expr(..), Elem(..) , module Events.Spec.Parse , module Events.Spec.Eval ) where import Events.Spec.Types import Events.Spec.Eval import Events.Spec.Parse import Data.Conduit import Data.Text (Text) import qualified Data.Text as T import Control.Monad.Catch (MonadThrow) interpret :: MonadThrow m => Producer m Text -> Eval m () interpret source = evalExpr =<< lift (connect source parse)