{- This file is part of the package byline. It is subject to the license terms in the LICENSE file found in the top-level directory of this distribution and at git://pmade.com/byline/LICENSE. No part of the byline package, including this file, may be copied, modified, propagated, or distributed except according to the terms contained in the LICENSE file. -} -------------------------------------------------------------------------------- module System.Console.Byline ( -- * Introduction -- -- | Byline provides a monad transformer that allows you to compose -- interactive terminal actions. When producing output, -- these actions accept stylized text that can include -- foreground and background colors, underlined text, and -- bold text. -- -- Stylized text can be constructed with string literals -- (using the @OverloadedStrings@ extension) or using the -- 'text' function. Attributes such as color can be changed -- using modifier functions and the @mappend@ operator, -- @(<>)@. -- -- Actions that read user input can work with completion -- functions which are activated when the user presses the -- tab key. Most input actions also support default values -- that will be returned when the user presses the enter key -- without providing any input. -- -- Example: -- -- @ -- {-\# LANGUAGE OverloadedStrings \#-} -- -- ... -- -- language <- runByline $ do -- sayLn ("Look mom, " <> ("colors" <> fg blue) <> "!") -- -- let question = "What's your favorite " <> -- ("language" <> bold) <> "? " -- -- ask question Nothing -- @ -- -- More complete examples can be found in the @examples@ -- directory of the distribution tarball or in the -- repository. -- * Executing Interactive Sessions Byline , runByline -- * Primitive Operations , say , sayLn , ask , askChar , askPassword , askUntil , report , reportLn -- * Constructing Stylized Text , Stylized , text -- * Modifying Output Text -- | The 'Stylized' type is an instance of the monoid class. -- This means you can change attributes of the text by using -- the following functions along with @mappend@ or the @(<>)@ -- operator. , fg, bg, bold, underline, swapFgBg -- * Specifying Colors , Color , black, red, green, yellow, blue, magenta, cyan, white, rgb -- * Menus -- | Menus provide a way to display a small number of list items -- to the user. The desired list item is selected by typing -- its index or by typing a unique prefix string. A default -- completion function is provided to allow the user to -- select a list item using tab completion. , Menu , Choice (..) , menu , askWithMenu , askWithMenuRepeatedly , banner , prefix , suffix , Matcher , matcher -- * Completion , CompletionFunc , Completion (..) , withCompletionFunc -- * Utility Functions, Operators, and Types , ReportType (..) , (<>) ) where -------------------------------------------------------------------------------- import System.Console.Byline.Color import System.Console.Byline.Completion import System.Console.Byline.Internal.Byline import System.Console.Byline.Menu import System.Console.Byline.Modifiers import System.Console.Byline.Primitive import System.Console.Byline.Stylized