package util import ( "encoding/json" "fmt" "html/template" "strings" ) func Keys[K comparable, V any](input map[K]V) []K { keys := make([]K, 0, len(input)) for k := range input { keys = append(keys, k) } return keys } func Values[K comparable, V any](input map[K]V) []V { values := make([]V, 0, len(input)) for _, v := range input { values = append(values, v) } return values } func ContainsAny(s string, substrings ...string) bool { for _, substring := range substrings { if strings.Contains(s, substring) { return true } } return false } func Title(input string) string { words := strings.Split(input, " ") smallwords := " a an on the to of " for index, word := range words { if strings.Contains(smallwords, " "+word+" ") && index > 0 { words[index] = word } else { words[index] = strings.Title(word) } } return strings.Join(words, " ") } func Json(obj any) template.HTML { b, err := json.MarshalIndent(obj, "", " ") if err != nil { fmt.Println(err) return "" } return template.HTML(`` + string(b) + ``) }