Skip to content
/ byline Public

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

License

Notifications You must be signed in to change notification settings

pjones/byline

Repository files navigation

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