Library for creating command-line interfaces (colors, menus, etc.)
Byline simplifies writing interactive command-line applications by building upon ansi-terminal
and haskeline
. This makes it possible to print messages and prompts that include terminal escape sequences (such as setting text colors) that are automatically disabled when standard input is a file. It also means that Byline works on both POSIX-compatible systems and on Windows.
The primary features of Byline include printing messages, prompting for input, and generating custom menus. It was inspired by the highline
Ruby library and the terminal
library by Craig Roche.
Example
example :: MonadByline m => m Text
example = do
sayLn ("Hey, I like " <> ("Haskell" <> fg magenta) <> "!")
let question =
"What's "
<> ("your" <> bold)
<> " favorite "
<> ("language" <> fg green <> underline)
<> "? "
askLn question (Just "Haskell")
Byline
Byline simplifies writing interactive command-line applications by building upon [ansi-terminal][] and [haskeline][]. This makes it possible to print messages and prompts that include terminal escape sequences such as colors that are automatically disabled when standard input is a file. It also means that Byline works on both POSIX-compatible systems and on Windows.
The primary features of Byline include printing messages, prompting for input, and generating custom menus. It was inspired by the [highline] Ruby library and the [terminal library][] by Craig Roche.
Example Using MonadByline
example :: MonadByline m => m Text
example = do
sayLn ("Hey, I like " <> ("Haskell" & fg magenta) <> "!")
let question =
"What's "
<> ("your" & bold)
<> " favorite "
<> ("language" & fg green & underline)
<> "? "
askLn question (Just "Haskell")