Skip to content

Commit

Permalink
Merge pull request #2 from go-andiamo/fix_write
Browse files Browse the repository at this point in the history
Use delimiter and separator
  • Loading branch information
marrow16 committed Jan 6, 2024
2 parents 8cab023 + 34f7c99 commit be0da89
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 5 deletions.
10 changes: 5 additions & 5 deletions writer.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,9 @@ func writeExampleValue(w io.Writer, name string, fv reflect.Value, fi *fieldInfo
case reflect.Float32, reflect.Float64:
eg = "0.0"
case reflect.Slice:
eg = "value,value,..."
eg = fmt.Sprintf("value%svalue%s...", fi.delimiter, fi.delimiter)
case reflect.Map:
eg = "key:value,key:value,..."
eg = fmt.Sprintf("key%svalue%skey%svalue%s...", fi.separator, fi.delimiter, fi.separator, fi.delimiter)
}
}
_, err := w.Write([]byte(name + "=" + eg + "\n"))
Expand Down Expand Up @@ -185,14 +185,14 @@ func writeActualValue(w io.Writer, name string, fv reflect.Value, fi *fieldInfo)
for i := 0; i < fv.Len(); i++ {
items = append(items, fmt.Sprintf("%v", fv.Index(i).Interface()))
}
eg = strings.Join(items, ",")
eg = strings.Join(items, fi.delimiter)
case reflect.Map:
items := make([]string, 0)
for _, mk := range fv.MapKeys() {
mv := fv.MapIndex(mk)
items = append(items, fmt.Sprintf("%v:%v", mk.Interface(), mv.Interface()))
items = append(items, fmt.Sprintf("%v%s%v", mk.Interface(), fi.separator, mv.Interface()))
}
eg = strings.Join(items, ",")
eg = strings.Join(items, fi.delimiter)
}
}
}
Expand Down
26 changes: 26 additions & 0 deletions writer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,27 @@ func TestExample(t *testing.T) {
Test []string
}{},
expect: `TEST=value,value,...
`,
},
{
cfg: &struct {
Test []string `env:"delimiter=;"`
}{},
expect: `TEST=value;value;...
`,
},
{
cfg: &struct {
Test map[string]string
}{},
expect: `TEST=key:value,key:value,...
`,
},
{
cfg: &struct {
Test map[string]string `env:"delimiter=;,separator=','"`
}{},
expect: `TEST=key,value;key,value;...
`,
},
{
Expand Down Expand Up @@ -396,6 +410,18 @@ func TestExample(t *testing.T) {
},
actual: true,
expect: `TEST=foo:1.1
`,
},
{
cfg: &struct {
Test map[string]float32 `env:"separator=','"`
}{
Test: map[string]float32{
"foo": 1.1,
},
},
actual: true,
expect: `TEST=foo,1.1
`,
},
{
Expand Down

0 comments on commit be0da89

Please sign in to comment.