57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
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(`<span class="json">` + string(b) + `</span>`)
|
|
}
|