Skip to content

Commit

Permalink
♻️ Refactor undo rename for name generator for consistency
Browse files Browse the repository at this point in the history
  • Loading branch information
carloscasalar committed Nov 16, 2024
1 parent 34ab3f2 commit a6baf69
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 32 deletions.
10 changes: 5 additions & 5 deletions cmd/generate-npc/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import (

func main() {
opts := readOptionsOrFail()
generateName := spawnGenerateNameOrFail()
nameGenerator := spawnGenerateNameOrFail()
debugEnabled := opts.EnableDebug

if debugEnabled {
Expand All @@ -21,7 +21,7 @@ func main() {
experience := readExperience(opts)
role := readRole(opts)
gender := readGender(opts)
firstName, surname := generateName.Execute(gender)
firstName, surname := nameGenerator.Generate(gender)
fullName := fmt.Sprintf("%v %v", firstName, surname)
characteristic := role.RandomCharacteristic(category)

Expand Down Expand Up @@ -68,14 +68,14 @@ func toUICharacteristics(characteristic map[npc.Characteristic]int) map[ui.Chara
}
}

func spawnGenerateNameOrFail() generator.GenerateName {
generateName, err := generator.NewDefaultGenerateName()
func spawnGenerateNameOrFail() generator.NameGenerator {
nameGenerator, err := generator.NewDefaultNameGenerator()
if err != nil {
printError(err)
os.Exit(1)
}

return generateName
return nameGenerator
}

func prompt(value string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@ package generator

import "math/rand/v2"

type generateCatalogSourcedName struct {
type catalogSourcedNameGenerator struct {
namesByGender map[Gender][]string
surnames []string
}

func NewGenerateCatalogSourcedName(surnames, nonGenderNames, femaleFirstNames, maleFirstNames []string) GenerateName {
return &generateCatalogSourcedName{
func NewCatalogSourcedNameGenerator(surnames, nonGenderNames, femaleFirstNames, maleFirstNames []string) NameGenerator {
return &catalogSourcedNameGenerator{
namesByGender: map[Gender][]string{
GenderUnspecified: nonGenderNames,
GenderFemale: femaleFirstNames,
Expand All @@ -18,7 +18,7 @@ func NewGenerateCatalogSourcedName(surnames, nonGenderNames, femaleFirstNames, m
}
}

func (c generateCatalogSourcedName) Execute(gender Gender) (firstName, surname string) {
func (c catalogSourcedNameGenerator) Generate(gender Gender) (firstName, surname string) {
if !gender.IsAGender() {
gender = pickRandomItem(GenderValues())
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ func TestCatalogSourcedGenerator_Generate(t *testing.T) {
femaleFirstNames := []string{"Female Name 1", "Female Name 2", "Female Name 3"}
maleFirstNames := []string{"Male Name 1", "Male Name 2", "Male Name 3"}

nameGenerator := generator.NewGenerateCatalogSourcedName(surnames, nonGenderNames, femaleFirstNames, maleFirstNames)
nameGenerator := generator.NewCatalogSourcedNameGenerator(surnames, nonGenderNames, femaleFirstNames, maleFirstNames)

tests := []struct {
gender generator.Gender
Expand All @@ -26,7 +26,7 @@ func TestCatalogSourcedGenerator_Generate(t *testing.T) {

for _, tt := range tests {
t.Run(fmt.Sprintf("Given gender is %v", tt.gender.String()), func(t *testing.T) {
firstName, surname := nameGenerator.Execute(tt.gender)
firstName, surname := nameGenerator.Generate(tt.gender)

assert.Contains(t, surnames, string(surname))
assert.Contains(t, tt.expectedToBeChosenFrom, string(firstName))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"runtime"
)

func NewDefaultGenerateName() (GenerateName, error) {
func NewDefaultNameGenerator() (NameGenerator, error) {
const relativeNamesFilePath = "../../assets/names.yml"
absoluteNamesFilePath := absolutePath(relativeNamesFilePath)
namesConfigFile, err := os.ReadFile(absoluteNamesFilePath)
Expand All @@ -24,7 +24,7 @@ func NewDefaultGenerateName() (GenerateName, error) {
return nil, fmt.Errorf("error parsing names config file at %v: %v\n", absoluteNamesFilePath, err)
}

return NewGenerateCatalogSourcedName(config.Surnames, config.NonGenderedNames, config.FemaNames, config.MaleNames), nil
return NewCatalogSourcedNameGenerator(config.Surnames, config.NonGenderedNames, config.FemaNames, config.MaleNames), nil
}

func absolutePath(relativeNamesFilePath string) string {
Expand Down
5 changes: 0 additions & 5 deletions pkg/generator/generate_name.go

This file was deleted.

5 changes: 5 additions & 0 deletions pkg/generator/name_generator.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package generator

type NameGenerator interface {
Generate(gender Gender) (firstName, surname string)
}
12 changes: 6 additions & 6 deletions pkg/generator/npc_generator.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@ package generator

//go:generate gonstructor -type=NpcGenerator -constructorTypes=builder -init=init -propagateInitFuncReturns -output=npc_generator_auto.go
type NpcGenerator struct {
generateName GenerateName
nameGenerator NameGenerator
}

func (g *NpcGenerator) Generate(request GenerateCharacterRequest) (*Character, error) {
if err := request.Validate(); err != nil {
return nil, err
}

firstName, surname := g.generateName.Execute(request.gender)
firstName, surname := g.nameGenerator.Generate(request.gender)

return &Character{
FirstName: firstName,
Surname: surname,
Expand All @@ -22,13 +22,13 @@ func (g *NpcGenerator) Generate(request GenerateCharacterRequest) (*Character, e
}

func (g *NpcGenerator) init() error {
if g.generateName != nil {
if g.nameGenerator != nil {
return nil
}
generateName, err := NewDefaultGenerateName()
nameGenerator, err := NewDefaultNameGenerator()
if err != nil {
return err
}
g.generateName = generateName
g.nameGenerator = nameGenerator
return nil
}
8 changes: 4 additions & 4 deletions pkg/generator/npc_generator_auto.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions pkg/generator/npc_generator_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,18 +97,18 @@ func newGenerator() (*generator.NpcGenerator, error) {
return generator.NewNpcGeneratorBuilder().Build()
}

type FixedGenerateName struct {
type FixedNameGenerator struct {
firstName string
surname string
}

func NewFixedGenerateName(firstName, surname string) *FixedGenerateName {
return &FixedGenerateName{
func NewFixedGenerateName(firstName, surname string) *FixedNameGenerator {
return &FixedNameGenerator{
firstName: firstName,
surname: surname,
}
}

func (g FixedGenerateName) Execute(generator.Gender) (string, string) {
func (g FixedNameGenerator) Generate(generator.Gender) (string, string) {
return g.firstName, g.surname
}

0 comments on commit a6baf69

Please sign in to comment.