]> Sergey Matveev's repositories - btrtrc.git/blob - bencode/tags.go
Drop support for go 1.20
[btrtrc.git] / bencode / tags.go
1 package bencode
2
3 import (
4         "reflect"
5         "strings"
6 )
7
8 func getTag(st reflect.StructTag) tag {
9         return parseTag(st.Get("bencode"))
10 }
11
12 type tag []string
13
14 func parseTag(tagStr string) tag {
15         return strings.Split(tagStr, ",")
16 }
17
18 func (me tag) Ignore() bool {
19         return me[0] == "-"
20 }
21
22 func (me tag) Key() string {
23         return me[0]
24 }
25
26 func (me tag) HasOpt(opt string) bool {
27         if len(me) < 1 {
28                 return false
29         }
30         for _, s := range me[1:] {
31                 if s == opt {
32                         return true
33                 }
34         }
35         return false
36 }
37
38 func (me tag) OmitEmpty() bool {
39         return me.HasOpt("omitempty")
40 }
41
42 func (me tag) IgnoreUnmarshalTypeError() bool {
43         return me.HasOpt("ignore_unmarshal_type_error")
44 }