forked from lestrrat-go/ical
-
Notifications
You must be signed in to change notification settings - Fork 0
/
daylight_gen.go
84 lines (70 loc) · 1.74 KB
/
daylight_gen.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package ical
// THIS FILE IS AUTO-GENERATED BY internal/cmd/gentypes/gentypes.go
// DO NOT EDIT. ALL CHANGES WILL BE LOST
import (
"bytes"
"strings"
"github.com/pkg/errors"
)
type Daylight struct {
entries EntryList
props *PropertySet
}
func NewDaylight() *Daylight {
return &Daylight{
props: NewPropertySet(),
}
}
func (v *Daylight) String() string {
var buf bytes.Buffer
NewEncoder(&buf).Encode(v)
return buf.String()
}
func (v Daylight) Type() string {
return "DAYLIGHT"
}
func (v *Daylight) AddEntry(e Entry) error {
v.entries.Append(e)
return nil
}
func (v *Daylight) Entries() <-chan Entry {
return v.entries.Iterator()
}
func (v *Daylight) GetProperty(name string) (*Property, bool) {
return v.props.GetFirst(name)
}
func (v *Daylight) Properties() <-chan *Property {
return v.props.Iterator()
}
func (v *Daylight) AddProperty(key, value string, options ...PropertyOption) error {
var params Parameters
var force bool
for _, option := range options {
switch option.Name() {
case "Parameters":
params = option.Get().(Parameters)
case "Force":
force = option.Get().(bool)
}
}
switch key = strings.ToLower(key); key {
case "dtstart", "tzoffsetto", "tzoffsetfrom":
v.props.Set(NewProperty(key, value, params))
case "comment", "rdate", "rrule", "tzname":
v.props.Append(NewProperty(key, value, params))
default:
if strings.HasPrefix(key, "x-") || force {
v.props.Append(NewProperty(key, value, params))
} else {
return errors.Errorf(`invalid property %s`, key)
} /* end if */
}
return nil
}
func (v *Daylight) MarshalJSON() ([]byte, error) {
var dst bytes.Buffer
if err := NewJSONEncoder(&dst).Encode(v); err != nil {
return nil, errors.Wrap(err, `failed to encode json`)
}
return dst.Bytes(), nil
}