shortcut.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package prompt
  2. func dummyExecutor(in string) {}
  3. // Input get the input data from the user and return it.
  4. func Input(prefix string, completer Completer, opts ...Option) string {
  5. pt := New(dummyExecutor, completer)
  6. pt.renderer.prefixTextColor = DefaultColor
  7. pt.renderer.prefix = prefix
  8. for _, opt := range opts {
  9. if err := opt(pt); err != nil {
  10. panic(err)
  11. }
  12. }
  13. return pt.Input()
  14. }
  15. // Choose to the shortcut of input function to select from string array.
  16. // Deprecated: Maybe anyone want to use this.
  17. func Choose(prefix string, choices []string, opts ...Option) string {
  18. completer := newChoiceCompleter(choices, FilterHasPrefix)
  19. pt := New(dummyExecutor, completer)
  20. pt.renderer.prefixTextColor = DefaultColor
  21. pt.renderer.prefix = prefix
  22. for _, opt := range opts {
  23. if err := opt(pt); err != nil {
  24. panic(err)
  25. }
  26. }
  27. return pt.Input()
  28. }
  29. func newChoiceCompleter(choices []string, filter Filter) Completer {
  30. s := make([]Suggest, len(choices))
  31. for i := range choices {
  32. s[i] = Suggest{Text: choices[i]}
  33. }
  34. return func(x Document) []Suggest {
  35. return filter(s, x.GetWordBeforeCursor(), true)
  36. }
  37. }