mirror of
https://gitlab.dit.htwk-leipzig.de/htwk-software/htwkalender.git
synced 2025-07-16 09:38:49 +02:00
63 lines
1.7 KiB
Go
63 lines
1.7 KiB
Go
//Calendar implementation for the HTWK Leipzig timetable. Evaluation and display of the individual dates in iCal format.
|
||
//Copyright (C) 2024 HTWKalender support@htwkalender.de
|
||
|
||
//This program is free software: you can redistribute it and/or modify
|
||
//it under the terms of the GNU Affero General Public License as published by
|
||
//the Free Software Foundation, either version 3 of the License, or
|
||
//(at your option) any later version.
|
||
|
||
//This program is distributed in the hope that it will be useful,
|
||
//but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
//GNU Affero General Public License for more details.
|
||
|
||
//You should have received a copy of the GNU Affero General Public License
|
||
//along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||
|
||
package ical
|
||
|
||
import (
|
||
"github.com/jordic/goics"
|
||
"sort"
|
||
"strings"
|
||
)
|
||
|
||
type HtwkalenderComponent struct {
|
||
*goics.Component
|
||
}
|
||
|
||
func NewHtwkalenderComponent() *HtwkalenderComponent {
|
||
return &HtwkalenderComponent{
|
||
Component: goics.NewComponent(),
|
||
}
|
||
}
|
||
|
||
// Writes the component to the Writer
|
||
func (c *HtwkalenderComponent) Write(w *goics.ICalEncode) {
|
||
w.WriteLine("BEGIN:" + c.Tipo + goics.CRLF)
|
||
|
||
// Iterate over component properties
|
||
var keys []string
|
||
for k := range c.Properties {
|
||
keys = append(keys, k)
|
||
}
|
||
sort.Strings(keys)
|
||
for _, key := range keys {
|
||
vals := c.Properties[key]
|
||
for _, val := range vals {
|
||
w.WriteLine(WriteStringField(key, val))
|
||
}
|
||
}
|
||
|
||
for _, xc := range c.Elements {
|
||
xc.Write(w)
|
||
}
|
||
|
||
w.WriteLine("END:" + c.Tipo + goics.CRLF)
|
||
}
|
||
|
||
// WriteStringField UID:asdfasdfаs@dfasdf.com
|
||
func WriteStringField(key string, val string) string {
|
||
return strings.ToUpper(key) + ":" + (val) + goics.CRLF
|
||
}
|