-- | Provides ANSI terminal support for ANSI terminal software running on a -- Unix-like operating system or on a Windows operating system (where supported) -- or on other Windows operating systems where the terminal in use is not -- ANSI-enabled. -- -- The ANSI escape codes are described at <http://en.wikipedia.org/wiki/ANSI_escape_code> -- and provide a rich range of functionality for terminal control, which -- includes: -- -- * Colored text output, with control over both foreground and background -- colors -- -- * Hiding or showing the cursor -- -- * Moving the cursor around -- -- * Clearing parts of the screen -- -- The most frequently used parts of this ANSI command set are exposed with a -- platform independent interface by this module. Every function exported comes -- in three flavours: -- -- * Vanilla: has an @IO ()@ type and doesn't take a @Handle@. This just -- outputs the ANSI command directly on to the terminal corresponding to -- stdout. Commands issued like this should work as you expect on both -- Windows and Unix. -- -- * Chocolate: has an @IO ()@ type but takes a @Handle@. This outputs the -- ANSI command on the terminal corresponding to the supplied handle. -- Commands issued like this should also work as you expect on both Windows -- and Unix. -- -- * Strawberry: has a @String@ type and just consists of an escape code which -- can be added to any other bit of text before being output. The use of -- these codes is generally discouraged because they will not work on Windows -- operating systems where the terminal in use is not ANSI-enabled (such as -- those before Windows 10 Threshold 2). On versions of Windows where the -- terminal in use is not ANSI-enabled, these codes will always be the empty -- string, so it is possible to use them portably for e.g. coloring console -- output on the understanding that you will only see colors if you are -- running on an operating system that is Unix-like or is a version of -- Windows where the terminal in use is ANSI-enabled. -- -- Example: -- -- > -- Set colors and write some text in those colors. -- > sgrExample :: IO () -- > sgrExample = do -- > setSGR [SetColor Foreground Vivid Red] -- > setSGR [SetColor Background Vivid Blue] -- > putStr "Red-On-Blue" -- > setSGR [Reset] -- > putStr "White-On-Black" -- -- For many more examples, see the project's extensive -- <https://raw.githubusercontent.com/feuerbach/ansi-terminal/master/System/Console/ANSI/Example.hs Example.hs> file. #if defined(WINDOWS) module System.Console.ANSI ( module System.Console.ANSI.Windows ) where import System.Console.ANSI.Windows #elif defined(UNIX) module System.Console.ANSI ( module System.Console.ANSI.Unix ) where import System.Console.ANSI.Unix #else #error Unsupported platform for the ansi-terminal package #endif