Added *join dataconverter

This commit is contained in:
Trial97
2021-11-12 15:42:20 +02:00
committed by Dan Christian Bogos
parent 1f603b9fe7
commit 7afef6be4b
3 changed files with 40 additions and 0 deletions

View File

@@ -638,6 +638,7 @@ const (
MetaSIPURIUser = "*sipuri_user"
E164DomainConverter = "*e164Domain"
E164Converter = "*e164"
MetaJoin = "*join"
MetaReload = "*reload"
MetaLoad = "*load"
MetaFloat64 = "*float64"

View File

@@ -115,6 +115,11 @@ func NewDataConverter(params string) (conv DataConverter, err error) {
return NewRandomConverter(EmptyString)
}
return NewRandomConverter(params[len(MetaRandom)+1:])
case strings.HasPrefix(params, MetaJoin):
if len(params) == len(MetaJoin) { // no extra params, defaults implied
return joinConverter(FieldsSep), nil
}
return joinConverter(params[len(MetaJoin)+1:]), nil
default:
return nil, fmt.Errorf("unsupported converter definition: <%s>", params)
}
@@ -573,3 +578,13 @@ func (e164Converter) Convert(in interface{}) (interface{}, error) {
return ReverseString(
strings.Replace(name[:i], ".", "", -1)), nil
}
type joinConverter string
func (j joinConverter) Convert(in interface{}) (interface{}, error) {
slice, err := IfaceAsStringSlice(in)
if err != nil {
return nil, err
}
return strings.Join(slice, string(j)), nil
}

View File

@@ -1251,3 +1251,27 @@ func TestDataConverterE164Convert(t *testing.T) {
t.Errorf("Expected 'unknown format' error")
}
}
func TestJoinConverter(t *testing.T) {
d, err := NewDataConverter(MetaJoin)
if err != nil {
t.Fatal(err)
}
expVal := "1,2,3,5"
if i, err := d.Convert("1;2;3;5"); err != nil {
t.Error(err.Error())
} else if expVal != i {
t.Errorf("expecting: %q, received: %q", expVal, i)
}
d, err = NewDataConverter(MetaJoin + ":|")
if err != nil {
t.Fatal(err)
}
expVal = "1|2|3|5"
if i, err := d.Convert("1;2;3;5"); err != nil {
t.Error(err.Error())
} else if expVal != i {
t.Errorf("expecting: %q, received: %q", expVal, i)
}
}