Skip to content

Commit

Permalink
fix: extend name function to converter (#31)
Browse files Browse the repository at this point in the history
  • Loading branch information
nrwiersma authored Sep 12, 2024
1 parent 47bc101 commit 6c0f34c
Showing 1 changed file with 15 additions and 2 deletions.
17 changes: 15 additions & 2 deletions convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,36 @@ type conversion struct {
flatten ConverterFn
}

// NameFunc is a function used to define a field name.
type NameFunc = func(name string) string

// Converter converts Terraform formatted data to and from
// object types.
type Converter struct {
tag string

conversions map[reflect.Type]conversion
nameFn NameFunc
}

// New returns a new converter.
func New(tag string) *Converter {
return NewWithName(nil, tag)
}

// NewWithName returns a new converter with the give nameFn.
func NewWithName(nameFn NameFunc, tag string) *Converter {
if tag == "" {
tag = "json"
}
if nameFn == nil {
nameFn = strcase.ToSnake
}

return &Converter{
tag: tag,
conversions: map[reflect.Type]conversion{},
nameFn: nameFn,
}
}

Expand All @@ -50,7 +63,7 @@ func (c *Converter) resolveName(sf reflect.StructField) string {
jsonName = name
}
if jsonName != "" && jsonName != "-" {
return strcase.ToSnake(jsonName)
return c.nameFn(jsonName)
}
return strcase.ToSnake(sf.Name)
return c.nameFn(sf.Name)
}

0 comments on commit 6c0f34c

Please sign in to comment.