benrbray / byline

Haskell library for creating command-line interfaces (colors, menus, etc.)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Byline

tests GitHub tag (latest by date) Hackage

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")

Demo

About

Haskell library for creating command-line interfaces (colors, menus, etc.)

License:BSD 2-Clause "Simplified" License


Languages

Language:Haskell 95.6%Language:Nix 4.2%Language:Shell 0.2%