aboutsummaryrefslogtreecommitdiff
path: root/bencode
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-06-12 21:54:38 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-06-12 21:54:38 +0200
commita39251ee0de2c834458a36f3d38a36ace667c9cb (patch)
tree27a697d7404a8d40a75c67229dc7956b3d6c1efd /bencode
parent2c80166f55cdc0d587d2f9d93b90e43d768cec49 (diff)
Add optional param
Diffstat (limited to 'bencode')
-rw-r--r--bencode/bencode.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/bencode/bencode.go b/bencode/bencode.go
index dd8a23c..062e980 100644
--- a/bencode/bencode.go
+++ b/bencode/bencode.go
@@ -71,14 +71,15 @@ func marshalDict(out io.Writer, v reflect.Value) {
if tag == "-" {
continue
}
- name, _ := parseTag(tag)
+ name, param := parseTag(tag)
if name == "" {
name = f.Name
}
- if !isEmpty(v.Field(i)) {
- marshalString(out, name)
- marshalField(out, v.Field(i))
+ if param == "optional" && isEmpty(v.Field(i)) {
+ continue
}
+ marshalString(out, name)
+ marshalField(out, v.Field(i))
}
io.WriteString(out, "e")
}