//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 functions import ( "crypto/sha256" "encoding/hex" "strings" ) // check if string is empty or contains only whitespaces func OnlyWhitespace(word string) bool { return len(strings.TrimSpace(word)) == 0 } // return function to check if rune is a separator func IsSeparator(separator []rune) func(rune) bool { return func(character rune) bool { for _, sep := range separator { if sep == character { return true } } return false } } func Contains(s []string, e string) bool { for _, a := range s { if a == e { return true } } return false } func ReplaceEmptyString(word string, replacement string) string { if OnlyWhitespace(word) { return replacement } return word } func HashString(s string) string { hash := sha256.New() hash.Write([]byte(s)) hashInBytes := hash.Sum(nil) return hex.EncodeToString(hashInBytes) } func SeperateRoomString(rooms string) []string { return strings.FieldsFunc(rooms, IsSeparator( []rune{',', '\t', '\n', '\r', ';', ' ', '\u00A0'}), ) }