//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 . 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 }