answer

module
v0.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 10, 2023 License: Apache-2.0

README

answer

Have your user answer some questions in terminal.

This project intends to provide functionality similar to github.com/AlecAivazis/survey, but built on top of bubbletea.

GitHub release (latest SemVer) Go Version Apache 2.0 License
build Go Report Card

Bubbles

This library provides the following bubbles:

  • input: single-line textual input with validations
  • selection: multi-selection with optional single-select
  • confirm: a yes/no/undecided with multiple visual representations (input, horizontal/vertical selection)
input

The input bubble provides a minimal wrapper around github.com/charmbracelet/bubbles/textinput. You get all the implementation of the upstream textinput bubble, with a little extra "flair" (a prompt prefix character, validations, suggestions). This allows for styling and functionality more closely to what you might have had with github.com/AlecAivazis/survey.

See internal/examples/input:

Suggestions

Suggestions can be applied via a set of static data using one of the provided text suggestion functions, or via a custom function allowing retrieval from any location such as an external datasource.

Provided suggestions include suggest.LevenshteinDistance and suggest.StartsWith, each with customizable options to optimize their behaviors.

To use suggest.LevenshteinDistance you can apply in the follow manner:

	m := input.New()
	m.Prompt = "Please enter your name:"
	m.Placeholder = "(first name only)"
	m.Suggest = suggest.LevenshteinDistance([]string{"Jim", "James", "Jameson"},
		suggest.LevenshteinDistanceMin(0),
		suggest.LevenshteinDistanceMax(4))

To use a custom function, match the signature func(value string) []string. For example:

	m := input.New()
	m.Prompt = "Please enter your name:"
	m.Placeholder = "(first name only)"
	m.Suggest = func(value string) []string {
		return []string{"A","B","C","D"}
	}
selection

The selection bubble provides a paginated list of items from which the user can select 0 or more items. This bubble defaults to multi-select, but can be made single-select by setting MaxSelections to 1. Styles, as well as indicators for prompt, chooser, and selection are customizable.

See internal/examples/selection:

confirm

The confirm bubble provides a yes/no/undecided type of input. This is configurable to show the common terminal usability such as:

? Do you want to continue? y/N

Where the default value is indicated by an uppercase character. In this default rendering display, the user is able to type either y or n (case insensitive) or hit enter to proceed with the default.

The confirm bubble also supports horizontal and vertical list-style selections.

Horizontal selection could be presented like:

? Prompt? ➤Yes No

Vertical selection could be presented like:

? Prompt?
➤ Yes
    No

See internal/examples/confirm:

Install

go get -u github.com/jimschubert/answer

Build/Test

go test -v -race -cover ./...

License

This project is licensed under Apache 2.0.

Directories

Path Synopsis
internal
examples/input command

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL