diff --git a/src/QBar/Core.hs b/src/QBar/Core.hs index c08557e44d7fc846c09471c54e02cff3387facc2..fdbf2e0a208caff380c1a6bd566c97cda79f236a 100644 --- a/src/QBar/Core.hs +++ b/src/QBar/Core.hs @@ -105,14 +105,27 @@ instance (MonadBarIO m, Monoid a) => MonadBarIO (WriterT a m) where askBar :: MonadBarIO m => m Bar askBar = liftBarIO $ lift ask -mkBlockState :: BlockOutput -> BlockState -mkBlockState blockOutput = Just (blockOutput, Nothing) -updateBlock :: BlockOutput -> Block () -updateBlock blockOutput = yield $ Just (blockOutput, Nothing) +class (MonadBarIO m) => MonadBlock m where + liftBlock :: Block a -> m a +instance MonadBlock Block where + liftBlock = id +instance (MonadBlock m) => MonadBlock (StateT a m) where + liftBlock = lift . liftBlock +instance (MonadBlock m) => MonadBlock (ReaderT a m) where + liftBlock = lift . liftBlock +instance (MonadBlock m, Monoid a) => MonadBlock (WriterT a m) where + liftBlock = lift . liftBlock + +updateBlock :: MonadBlock m => BlockOutput -> m () +updateBlock blockOutput = liftBlock . yield $ Just (blockOutput, Nothing) + +updateBlock' :: MonadBlock m => BlockEventHandler -> BlockOutput -> m () +updateBlock' blockEventHandler blockOutput = liftBlock . yield $ Just (blockOutput, Just blockEventHandler) -updateBlock' :: BlockEventHandler -> BlockOutput -> Block () -updateBlock' blockEventHandler blockOutput = yield $ Just (blockOutput, Just blockEventHandler) + +mkBlockState :: BlockOutput -> BlockState +mkBlockState blockOutput = Just (blockOutput, Nothing) updateEventHandler :: BlockEventHandler -> BlockState -> BlockState updateEventHandler _ Nothing = Nothing