package fmerrors

type Error struct {
	message string
	cause   error
}

func (e *Error) Error() string {
	if e == nil {
		return ""
	}
	if e.cause == nil {
		return e.message
	}
	return e.message + ": " + e.cause.Error()
}

func (e *Error) Unwrap() error {
	if e == nil {
		return nil
	}
	return e.cause
}

func New(message string) error {
	return &Error{message: message}
}

func Wrap(message string, cause error) error {
	return &Error{message: message, cause: cause}
}

func NewDecimal(value string) error {
	return &Error{message: "invalid decimal \"" + value + "\""}
}
