You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zk/internal/core/id.go

38 lines
1.0 KiB
Go

package core
// IDOptions holds the options used to generate an ID.
type IDOptions struct {
Length int
Charset Charset
Case Case
}
// Charset is a set of characters.
type Charset []rune
var (
// CharsetAlphanum is a charset containing letters and numbers.
CharsetAlphanum = Charset("0123456789abcdefghijklmnopqrstuvwxyz")
// CharsetAlphanum is a charset containing hexadecimal characters.
CharsetHex = Charset("0123456789abcdef")
// CharsetLetters is a charset containing only letters.
CharsetLetters = Charset("abcdefghijklmnopqrstuvwxyz")
// CharsetNumbers is a charset containing only numbers.
CharsetNumbers = Charset("0123456789")
)
// Case represents the letter case to use when generating an ID.
type Case int
const (
CaseLower Case = iota + 1
CaseUpper
CaseMixed
)
// IDGenerator is a function returning a new ID with each invocation.
type IDGenerator func() string
// IDGeneratorFactory creates a new IDGenerator function using the given IDOptions.
type IDGeneratorFactory func(opts IDOptions) func() string