Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4265d9

Browse files
authored
Merge pull request #392 from anaprimawaty/ana/add-option-for-key-value-delimiter
Add option for key value delimiter
2 parents 8f49639 + eaefba9 commit c4265d9

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

convert.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,12 @@ func convert(val string, retval reflect.Value, options multiTag) error {
271271

272272
retval.Set(reflect.Append(retval, elemval))
273273
case reflect.Map:
274-
parts := strings.SplitN(val, ":", 2)
274+
keyValueDelimiter := options.Get("key-value-delimiter")
275+
if keyValueDelimiter == "" {
276+
keyValueDelimiter = ":"
277+
}
278+
279+
parts := strings.SplitN(val, keyValueDelimiter, 2)
275280

276281
key := parts[0]
277282
var value string

convert_test.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,22 @@ func TestConvertToStringInvalidUintBase(t *testing.T) {
157157

158158
assertError(t, err, ErrMarshal, "strconv.ParseInt: parsing \"no\": invalid syntax")
159159
}
160+
161+
func TestConvertToMapWithDelimiter(t *testing.T) {
162+
var opts = struct {
163+
StringStringMap map[string]string `long:"string-string-map" key-value-delimiter:"="`
164+
}{}
165+
166+
p := NewNamedParser("test", Default)
167+
grp, _ := p.AddGroup("test group", "", &opts)
168+
o := grp.Options()[0]
169+
170+
err := convert("key=value", o.value, o.tag)
171+
172+
if err != nil {
173+
t.Errorf("Unexpected error: %v", err)
174+
return
175+
}
176+
177+
assertString(t, opts.StringStringMap["key"], "value")
178+
}

0 commit comments

Comments
 (0)