package gperr

import "github.com/yusing/go-proxy/internal/utils/strutils/ansi"

type Hint struct {
	Prefix  string
	Message string
	Suffix  string
}

var _ PlainError = (*Hint)(nil)
var _ MarkdownError = (*Hint)(nil)

func (h *Hint) Error() string {
	return h.Prefix + ansi.Info(h.Message) + h.Suffix
}

func (h *Hint) Plain() []byte {
	return []byte(h.Prefix + h.Message + h.Suffix)
}

func (h *Hint) Markdown() []byte {
	return []byte(h.Prefix + "**" + h.Message + "**" + h.Suffix)
}

func (h *Hint) MarshalText() ([]byte, error) {
	return h.Plain(), nil
}

func (h *Hint) String() string {
	return h.Error()
}

func DoYouMean(s string) error {
	if s == "" {
		return nil
	}
	return &Hint{
		Prefix:  "Do you mean ",
		Message: s,
		Suffix:  "?",
	}
}