// Code generated by go-enum DO NOT EDIT.
// Version:
// Revision:
// Build Date:
// Built By:

package lists

import (
	"fmt"
	"strings"
)

const (
	// ListCacheTypeDenylist is a ListCacheType of type Denylist.
	// is a list with blocked domains
	ListCacheTypeDenylist ListCacheType = iota
	// ListCacheTypeAllowlist is a ListCacheType of type Allowlist.
	// is a list with allowlisted domains / IPs
	ListCacheTypeAllowlist
)

var ErrInvalidListCacheType = fmt.Errorf("not a valid ListCacheType, try [%s]", strings.Join(_ListCacheTypeNames, ", "))

const _ListCacheTypeName = "denylistallowlist"

var _ListCacheTypeNames = []string{
	_ListCacheTypeName[0:8],
	_ListCacheTypeName[8:17],
}

// ListCacheTypeNames returns a list of possible string values of ListCacheType.
func ListCacheTypeNames() []string {
	tmp := make([]string, len(_ListCacheTypeNames))
	copy(tmp, _ListCacheTypeNames)
	return tmp
}

var _ListCacheTypeMap = map[ListCacheType]string{
	ListCacheTypeDenylist:  _ListCacheTypeName[0:8],
	ListCacheTypeAllowlist: _ListCacheTypeName[8:17],
}

// String implements the Stringer interface.
func (x ListCacheType) String() string {
	if str, ok := _ListCacheTypeMap[x]; ok {
		return str
	}
	return fmt.Sprintf("ListCacheType(%d)", x)
}

// IsValid provides a quick way to determine if the typed value is
// part of the allowed enumerated values
func (x ListCacheType) IsValid() bool {
	_, ok := _ListCacheTypeMap[x]
	return ok
}

var _ListCacheTypeValue = map[string]ListCacheType{
	_ListCacheTypeName[0:8]:  ListCacheTypeDenylist,
	_ListCacheTypeName[8:17]: ListCacheTypeAllowlist,
}

// ParseListCacheType attempts to convert a string to a ListCacheType.
func ParseListCacheType(name string) (ListCacheType, error) {
	if x, ok := _ListCacheTypeValue[name]; ok {
		return x, nil
	}
	return ListCacheType(0), fmt.Errorf("%s is %w", name, ErrInvalidListCacheType)
}

// MarshalText implements the text marshaller method.
func (x ListCacheType) MarshalText() ([]byte, error) {
	return []byte(x.String()), nil
}

// UnmarshalText implements the text unmarshaller method.
func (x *ListCacheType) UnmarshalText(text []byte) error {
	name := string(text)
	tmp, err := ParseListCacheType(name)
	if err != nil {
		return err
	}
	*x = tmp
	return nil
}
