content: 
  module DDCI.Core.Output
          ( outDoc, outDocLn
          , outStr, outStrLn
          , chatStrLn)
  where
  import DDCI.Core.State
  import DDC.Driver.Interface.Input
  import DDC.Data.Pretty
  import qualified Data.Set       as Set
  
  
  -- | Output a document to the console.
  outDoc :: State -> Doc -> IO ()
  outDoc state doc
          | Set.member Indent $ stateModes state
          = putDocLn RenderIndent doc
  
          | otherwise
          = putDocLn RenderPlain doc
  
  
  outDocLn :: State -> Doc -> IO ()
  outDocLn state doc
          | Set.member Indent $ stateModes state
          = putDocLn RenderIndent doc
  
          | otherwise
          = putDocLn RenderPlain doc
  
  
  -- | Output a string to the console.
  outStr :: State -> String -> IO ()
  outStr _state str
          = putStr str
  
  
  outStrLn :: State -> String -> IO ()
  outStrLn _state str
          = putStrLn str
  
  
  -- | Output chatty 'ok' type responses.
  --   These are only displayed in the Interactive and Batch interfaces.
  chatStrLn :: State -> String -> IO ()
  chatStrLn state str
   = case stateInterface state of
          InputInterfaceConsole   -> putStrLn str
          InputInterfaceBatch _   -> putStrLn str
          _                       -> return ()
  