ddc-tools-0.4.2.1: src/ddci-tetra/DDCI/Tetra/Input.hs
module DDCI.Tetra.Input
( InputState (..)
, Input (..)
, readInput
, eatLine)
where
import DDCI.Tetra.State
import DDCI.Tetra.Command
import DDC.Driver.Interface.Input
-- Eating input lines.
eatLine :: State
-> InputState Command
-> String
-> IO (State, InputState Command)
eatLine state inputState chunk
= do (inputState', mCmdLine)
<- inputLine (stateInterface state) inputState chunk
case mCmdLine of
Nothing
-> return (state, inputState')
Just (source, Nothing, line)
-> do state' <- handleCommand state CommandHelp source line
return (state', inputState')
Just (source, Just cmd, line)
-> do state' <- handleCommand state cmd source line
return (state', inputState')