Skip to content

List of interactive prompt helpers to pimp the UIs of your haskell programs

License

Notifications You must be signed in to change notification settings

GianlucaGuarini/fortytwo

Repository files navigation

fortytwo

Interactive terminal prompt

Build Status MIT License

fortytwo

Installation

cabal install fortytwo

Demo

Demo

API

Prompts

Input

Ask a simple question requiring the user to type any string. It returns always a String

import FortyTwo (input)

main :: IO String
main = input "What's your name?"

inputWithDefault will let you define a fallback answer if no answer will be provided

import FortyTwo (inputWithDefault)

main :: IO String
main = inputWithDefault "What's your name?" "Undefined"

Confirm

Confirm prompt returning a boolean either True or False. If no answer will be provided it will return False

import FortyTwo (confirm)

main :: IO Bool
main = confirm "Are you old enough to see this?"

confirmWithDefault will let you define a fallback answer if no answer will be provided

import FortyTwo (confirmWithDefault)

main :: IO Bool
main = confirmWithDefault "Are you old enough to see this?" True

Password

Password prompt hiding the values typed by the user. It will always return a String

import FortyTwo (password)

main :: IO String
main = password "What's your secret password?"

Select

Select prompt letting users decide between one of many possible answers. It will always return a String

import FortyTwo (select)

main :: IO String
main = select
         "What's your favourite color?"
         ["Red", "Yellow", "Blue"]

selectWithDefault will let you define a fallback answer if no answer will be provided

import FortyTwo (selectWithDefault)

main :: IO String
main = selectWithDefault
         "What's your favourite color?"
         ["Red", "Yellow", "Blue"]
         "Red"

Multiselect

Multiselect prompt letting users decide between multiple possible choices. It will always return a collection [String]

import FortyTwo (multiselect)

main :: IO [String]
main = multiselect
         "What are your favourite films?"
         ["Titanic", "Matrix", "The Gladiator"]

multiselectWithDefault will let you define a fallback answer if no answer will be provided

import FortyTwo (multiselectWithDefault)

main :: IO [String]
main = multiselectWithDefault
         "What are your favourite films?"
         ["Titanic", "Matrix", "The Gladiator"]
         ["The Gladiator"]

Inspiration

This script is heavily inspired by survey (golang)

About

List of interactive prompt helpers to pimp the UIs of your haskell programs

Resources

License

Stars

Watchers

Forks

Packages

No packages published