byline: Library for creating command-line interfaces (colors, menus, etc.)

[ bsd2, library, system, user-interfaces ] [ Propose Tags ] [ Report a vulnerability ]

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


[Skip to Readme]

Modules

[Index] [Quick Jump]

Flags

Manual Flags

NameDescriptionDefault
build-examples

Build examples when building the library.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.2.0.0, 0.2.1.0, 0.2.2.0, 0.2.3.0, 0.2.4.0, 0.3.0.0, 0.3.1.0, 0.3.2.0, 0.3.2.1, 0.4.0.0, 1.0.0.0, 1.1.0.0, 1.1.0.1, 1.1.1, 1.1.2 (info)
Change log CHANGES.md
Dependencies ansi-terminal (>=0.6 && <0.12), attoparsec (>=0.13 && <0.15), base (>=4.9 && <5.0), byline, colour (>=2.3 && <2.4), exceptions (>=0.8 && <0.11), free (>=5.1 && <5.2), haskeline (>=0.8 && <0.8.3), mtl (>=2.1 && <2.4), optparse-applicative (>=0.17 && <0.18), relude (>=0.6 && <1.2), terminfo-hs (>=0.1 && <0.3), text (>=0.11 && <2.1) [details]
Tested with ghc ==8.10.7 || ==9.0.2 || ==9.2.5
License BSD-2-Clause
Copyright Copyright: (c) 2015-2023 Peter J. Jones
Author Peter Jones <pjones@devalot.com>
Maintainer Peter Jones <pjones@devalot.com>
Category System, User Interfaces
Home page https://github.com/pjones/byline
Bug tracker https://github.com/pjones/byline/issues
Source repo head: git clone https://github.com/pjones/byline.git
Uploaded by PeterJones at 2023-01-20T20:01:19Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Executables colors, shell, menu, simple, demo
Downloads 8433 total (46 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-01-20 [all 1 reports]

Readme for byline-1.1.2

[back to package description]

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