func WithPrintTemplate(template string) Option {
	return func(o *options) {
		o.printTemplate = template
	}
}
WithPrintTemplate sets the template to use on the print methods.
package ui
import (
	"fmt"
	"regexp"
	"strings"
	"github.com/manifoldco/promptui"
)
type options struct {
	mask            rune
	defaultValue    string
	value           string
	allowEdit       bool
	printTemplate   string
	promptTemplates *promptui.PromptTemplates
	selectTemplates *promptui.SelectTemplates
	validateFunc    promptui.ValidateFunc
}
func (o *options) apply(opts []Option) *options {
	for _, fn := range opts {
		fn(o)
	}
	return o
}
func (o *options) valid() bool {
	if o.validateFunc == nil {
		return true
	}
	return o.validateFunc(o.value) == nil
}
func (o *options) getValue() (string, error) {
	if o.validateFunc == nil {
		return o.value, nil
	}
	if err := o.validateFunc(o.value); err != nil {
		return "", err
	}
	return o.value, nil
}
func (o *options) getValueBytes() ([]byte, error) {
	if o.validateFunc == nil {
		return []byte(o.value), nil
	}
	if err := o.validateFunc(o.value); err != nil {
		return nil, err
	}
	return []byte(o.value), nil
}
type Option func(*options)
func extractOptions(args []interface{}) (opts []Option, rest []interface{}) {
	rest = args[:0]
	for _, arg := range args {
		if o, ok := arg.(Option); ok {
			opts = append(opts, o)
		} else {
			rest = append(rest, arg)
		}
	}
	return
}
func WithMask(r rune) Option {
	return func(o *options) {
		o.mask = r
	}
}
func WithDefaultValue(s string) Option {
	return func(o *options) {
		o.defaultValue = s
	}
}
func WithSliceValue(values []string) Option {
	return func(o *options) {
		o.value = strings.Join(values, ",")
	}
}
func WithValue(value string) Option {
	return func(o *options) {
		o.value = value
	}
}
func WithAllowEdit(b bool) Option {
	return func(o *options) {
		o.allowEdit = b
	}
}