diff options
Diffstat (limited to 'events/src/Events/Spec.hs')
-rw-r--r-- | events/src/Events/Spec.hs | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/events/src/Events/Spec.hs b/events/src/Events/Spec.hs index c2a84ac..f0b1456 100644 --- a/events/src/Events/Spec.hs +++ b/events/src/Events/Spec.hs | |||
@@ -1,8 +1,8 @@ | |||
1 | {-# LANGUAGE GADTs, DataKinds, TypeOperators #-} | 1 | {-# LANGUAGE RankNTypes #-} |
2 | 2 | ||
3 | module Events.Spec | 3 | module Events.Spec |
4 | ( interpret | 4 | ( interpret |
5 | , Spec, Cmnd(..), Expr(..), Elem(..) | 5 | , Spec, Expr(..), Elem(..) |
6 | , module Events.Spec.Parse | 6 | , module Events.Spec.Parse |
7 | , module Events.Spec.Eval | 7 | , module Events.Spec.Eval |
8 | ) where | 8 | ) where |
@@ -12,20 +12,14 @@ import Events.Spec.Eval | |||
12 | 12 | ||
13 | import Events.Spec.Parse | 13 | import Events.Spec.Parse |
14 | 14 | ||
15 | import Control.Monad ((<=<)) | ||
16 | import Control.Monad.IO.Class | ||
17 | import Control.Monad.State.Lazy | ||
18 | 15 | ||
19 | import Data.Monoid | 16 | import Data.Conduit |
20 | import Data.Foldable | ||
21 | import Control.Lens | ||
22 | 17 | ||
23 | import Debug.Trace | 18 | import Data.Text (Text) |
19 | import qualified Data.Text as T | ||
24 | 20 | ||
25 | interpret :: MonadIO m => Spec m -> Eval m () | 21 | import Control.Monad.Catch (MonadThrow) |
26 | interpret = join . fmap interpretCmnd . evalExpr | ||
27 | 22 | ||
28 | interpretCmnd :: MonadIO m => Cmnd -> Eval m () | 23 | |
29 | interpretCmnd (COverride obj) = objPayload ?= obj | 24 | interpret :: MonadThrow m => Producer m Text -> Eval m () |
30 | interpretCmnd (COccurs b) = objOccurs .= b | 25 | interpret source = evalExpr =<< lift (connect source parse) |
31 | interpretCmnd _ = return () | ||