-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | Get terminal window height and width
--   
--   Get terminal window height and width without ncurses dependency.
@package terminal-size
@version 0.3.4

-- | Get terminal window height and width without ncurses dependency
--   
--   Based on answer by Andreas Hammar at
--   http://stackoverflow.com/a/12807521/972985
module System.Console.Terminal.Size

-- | Terminal window width and height
data Window a
Window :: !a -> !a -> Window a
[height] :: Window a -> !a
[width] :: Window a -> !a

-- | Get terminal window width and height for stdout.
--   
--   
--   >>> import System.Console.Terminal.Size
--   
--   >>> size
--   Just (Window {height = 60, width = 112})
--   
size :: Integral n => IO (Maybe (Window n))

-- | Not available on Windows: Get terminal window width and height
--   for a specified file descriptor. If it's not attached to a terminal
--   then Nothing is returned.
--   
--   
--   >>> import System.Console.Terminal.Size
--   
--   >>> import System.Posix
--   
--   >>> fdSize stdOutput
--   Just (Window {height = 56, width = 85})
--   
--   >>> fd <- openFd "foo" ReadWrite (Just stdFileMode) defaultFileFlags
--   
--   >>> fdSize fd
--   Nothing
--   
fdSize :: Integral n => Fd -> IO (Maybe (Window n))

-- | Same as fdSize, but takes Handle instead of Fd
--   (file descriptor).
--   
--   Note that on Windows with shells that use the native console API
--   (cmd.exe, PowerShell) this works only for output handles like
--   stdout and stderr; for input handles like
--   stdin it always returns Nothing.
--   
--   
--   >>> import System.Console.Terminal.Size
--   
--   >>> import System.IO
--   
--   >>> hSize stdout
--   Just (Window {height = 56, width = 85})
--   
hSize :: Integral n => Handle -> IO (Maybe (Window n))
