Commit 04119d30 authored by Jeromy's avatar Jeromy

make working with arrays easier

parent e8d80ffd
...@@ -35,3 +35,23 @@ func TestMakeTypedEncoder(t *testing.T) { ...@@ -35,3 +35,23 @@ func TestMakeTypedEncoder(t *testing.T) {
t.Fatal("expected: ", expErr) t.Fatal("expected: ", expErr)
} }
} }
func TestMakeTypedEncoderArrays(t *testing.T) {
f := MakeTypedEncoder(func(req *Request, w io.Writer, v []fooTestObj) error {
if len(v) != 2 {
return fmt.Errorf("bad")
}
return nil
})
req := &Request{}
encoderFunc := f(req)
buf := new(bytes.Buffer)
encoder := encoderFunc(buf)
if err := encoder.Encode([]fooTestObj{{true}, {false}}); err != nil {
t.Fatal(err)
}
}
...@@ -76,6 +76,10 @@ func (r *readerResponse) RawNext() (interface{}, error) { ...@@ -76,6 +76,10 @@ func (r *readerResponse) RawNext() (interface{}, error) {
r.once.Do(func() { close(r.emitted) }) r.once.Do(func() { close(r.emitted) })
v := m.Get() v := m.Get()
// because working with pointers to arrays is annoying
if t := reflect.TypeOf(v); t.Kind() == reflect.Ptr && t.Elem().Kind() == reflect.Slice {
v = reflect.ValueOf(v).Elem().Interface()
}
return v, nil return v, nil
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment