...

Source file src/github.com/ory/x/stringsx/switch_case.go

Documentation: github.com/ory/x/stringsx

     1  package stringsx
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  )
     7  
     8  type (
     9  	RegisteredCases []string
    10  	errUnknownCase  struct {
    11  		cases  RegisteredCases
    12  		actual string
    13  	}
    14  )
    15  
    16  var ErrUnknownCase = errUnknownCase{}
    17  
    18  func (r *RegisteredCases) AddCase(c string) string {
    19  	*r = append(*r, c)
    20  	return c
    21  }
    22  
    23  func (r *RegisteredCases) String() string {
    24  	s := make([]string, len(*r))
    25  	for i, c := range *r {
    26  		s[i] = fmt.Sprintf("%#v", c)
    27  	}
    28  	return "[" + strings.Join(s, ", ") + "]"
    29  }
    30  
    31  func (r *RegisteredCases) ToUnknownCaseErr(actual string) error {
    32  	return errUnknownCase{cases: *r, actual: actual}
    33  }
    34  
    35  func (e errUnknownCase) Error() string {
    36  	return fmt.Sprintf("expected one of %s but got %s", e.cases.String(), e.actual)
    37  }
    38  
    39  func (e errUnknownCase) Is(err error) bool {
    40  	_, ok := err.(errUnknownCase)
    41  	return ok
    42  }
    43  

View as plain text