packages feed

hoodle-core-0.7: src/Hoodle/Script/Coroutine.hs

-----------------------------------------------------------------------------
-- |
-- Module      : Hoodle.Script.Coroutine
-- Copyright   : (c) 2012 Ian-Woo Kim
--
-- License     : BSD3
-- Maintainer  : Ian-Woo Kim <ianwookim@gmail.com>
-- Stability   : experimental
-- Portability : GHC
--
-----------------------------------------------------------------------------

module Hoodle.Script.Coroutine where

import           Control.Lens
import           Control.Monad.State 
-- from hoodle-platform
import           Data.Hoodle.Simple
-- from this package
import qualified Hoodle.Script.Hook as H
import           Hoodle.Type.Coroutine
import           Hoodle.Type.HoodleState
-- 
import Prelude hiding ((.),id)

-- |

afterSaveHook :: Hoodle -> MainCoroutine ()
afterSaveHook hdl = do 
  xstate <- get 
  let aftersavehk = do         
        hset <- view hookSet xstate 
        H.afterSaveHook hset
  maybe (return ()) (\f -> liftIO (f hdl)) aftersavehk      

-- | 
  
saveAsHook :: Hoodle -> MainCoroutine ()
saveAsHook hdl = do 
  xstate <- get 
  let saveashk = do         
        hset <- view hookSet xstate 
        H.saveAsHook hset
  maybe (return ()) (\f -> liftIO (f hdl)) saveashk