| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Workflow.Execute
- newtype ExecuteWorkflow = ExecuteWorkflow {
- getExecuteWorkflow :: forall n x. MonadIO n => WorkflowT n x -> n x
- data WorkflowD m = WorkflowD {
- _sendKeyChord :: [Modifier] -> Key -> m ()
- _sendText :: String -> m ()
- _sendMouseClick :: [Modifier] -> Natural -> MouseButton -> m ()
- _sendMouseScroll :: [Modifier] -> MouseScroll -> Natural -> m ()
- _getClipboard :: m Clipboard
- _setClipboard :: Clipboard -> m ()
- _currentApplication :: m Application
- _openApplication :: Application -> m ()
- _openURL :: URL -> m ()
- runWorkflowByT :: forall m a. MonadIO m => WorkflowD m -> WorkflowT m a -> m a
- delayMilliseconds :: MonadIO m => Int -> m ()
- delaySeconds :: MonadIO m => Int -> m ()
Documentation
newtype ExecuteWorkflow Source #
a function that can exectue any workflow, via IO.
Constructors
| ExecuteWorkflow | |
Fields
| |
An explicit "typeclass dictionary" for interpreting a MonadWorkflow.
i.e. a generic handler/interpreter (product type)
for WorkflowF effects (a sum type).
e.g.
WorkflowD IO
template:
myDictionary :: (MonadIO m) => WorkflowD m
myDictionary = WorkflowD{..}
where
_sendKeyChord =
_sendText =
_sendMouseClick =
_sendMouseScroll =
_getClipboard =
_setClipboard =
_currentApplication =
_openApplication =
_openURL =
runWorkflowByMy :: (MonadIO m) => WorkflowT m a -> m a
runWorkflowByMy = runWorkflowByT myDictionary
Delay is elided, as its implementation can use
cross-platform IO (threadDelay).
see runWorkflowByT
Constructors
| WorkflowD | |
Fields
| |
runWorkflowByT :: forall m a. MonadIO m => WorkflowD m -> WorkflowT m a -> m a Source #
e.g.
shellDictionary :: WorkflowD IO
shellDictionary = WorkflowD{..}
where
_getClipboard = shell $ "pbpaste"
_setClipboard s = shell $ "echo "++(shellEscape s)++"| pbcopy" >> return ()
...
runWorkflowByShell :: (MonadIO m) => WorkflowT m a -> m a
runWorkflowByShell = runWorkflowByT shellDictionary
-- specializeable:
-- runWorkflowByShell :: Workflow a -> IO a
delayMilliseconds :: MonadIO m => Int -> m () Source #
delaySeconds :: MonadIO m => Int -> m () Source #