From 6249b7297c416be3a23c51b693c72fae61896799 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 11 Jun 2016 03:14:01 +0200 Subject: omit empty --- bencode/bencode.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/bencode/bencode.go b/bencode/bencode.go index 0d536d3..4dcc1ff 100644 --- a/bencode/bencode.go +++ b/bencode/bencode.go @@ -64,12 +64,26 @@ func marshalDict(out io.Writer, v reflect.Value) { if name == "" { name = f.Name } - marshalString(out, name) - marshalField(out, v.Field(i)) + if !isEmpty(v.Field(i)) { + marshalString(out, name) + marshalField(out, v.Field(i)) + } } io.WriteString(out, "e") } +func isEmpty(v reflect.Value) bool { + switch v.Kind() { + case reflect.Int: + return v.Int() == 0 + case reflect.String, reflect.Slice: + return v.Len() == 0 + case reflect.Interface, reflect.Ptr: + return v.IsNil() + } + return false +} + func marshalList(out io.Writer, v reflect.Value) { switch v.Type().Elem().Kind() { case reflect.Uint8: -- cgit v1.2.3