workflow-types-0.0.1: Automate keyboard\/mouse\/clipboard\/application interaction.

Safe HaskellNone
LanguageHaskell2010

Workflow.Execute

Synopsis

Documentation

newtype ExecuteWorkflow Source #

a function that can exectue any workflow, via IO.

Constructors

ExecuteWorkflow 

Fields

data WorkflowD m Source #

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

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

delaySeconds :: MonadIO m => Int -> m () Source #