package moniker
import (
)
func () Namer {
return &defaultNamer{
Descriptor: Descriptors,
Noun: Animals,
r: rand.New(rand.NewSource(time.Now().UnixNano())),
}
}
type defaultNamer struct {
Descriptor, Noun []string
r *rand.Rand
}
func ( *defaultNamer) ( string) string {
:= .Descriptor[.r.Intn(len(.Descriptor))]
:= .Noun[.r.Intn(len(.Noun))]
return strings.Join([]string{, }, )
}
func ( *defaultNamer) () string {
return .NameSep(" ")
}
func () Namer {
return &alliterator{
Descriptor: Descriptors,
Noun: Animals,
r: rand.New(rand.NewSource(time.Now().UnixNano())),
}
}
type alliterator struct {
Descriptor, Noun []string
r *rand.Rand
}
func ( *alliterator) () string {
return .NameSep(" ")
}
func ( *alliterator) ( string) string {
return ""
}
type Namer interface {
Name() string
NameSep(string) string
}