summaryrefslogtreecommitdiff
path: root/utils/text.go
diff options
context:
space:
mode:
authorElizabeth Alexander Hunt <me@liz.coffee>2026-06-20 09:40:07 -0700
committerElizabeth Alexander Hunt <me@liz.coffee>2026-06-20 09:40:07 -0700
commitfb653292612eddca5b088ed88466c546d1597107 (patch)
tree900ed32e066812688858ed3bb15128c41bb78054 /utils/text.go
downloadpenguins.lan-fb653292612eddca5b088ed88466c546d1597107.tar.gz
penguins.lan-fb653292612eddca5b088ed88466c546d1597107.zip
Initial commit
Diffstat (limited to 'utils/text.go')
-rw-r--r--utils/text.go49
1 files changed, 49 insertions, 0 deletions
diff --git a/utils/text.go b/utils/text.go
new file mode 100644
index 0000000..5a79ec9
--- /dev/null
+++ b/utils/text.go
@@ -0,0 +1,49 @@
+package utils
+
+import (
+ "fmt"
+ "math/rand"
+ "strings"
+ "time"
+)
+
+var nameAdjectives = []string{"waddly", "frosty", "noot", "sleepy", "tuxedo", "briny", "squeaky", "blizzard", "pebble", "slippy"}
+var nameNouns = []string{"penguin", "gentoo", "rockhopper", "emperor", "macaroni", "chinstrap", "skua", "krill", "iceberg", "fishstick"}
+
+func SuggestName() string {
+ return nameAdjectives[rand.Intn(len(nameAdjectives))] + "-" + nameNouns[rand.Intn(len(nameNouns))]
+}
+
+func Sanitize(raw string) string {
+ return strings.ReplaceAll(strings.TrimSpace(raw), "\n", " ")
+}
+
+func SanitizeName(raw string) string {
+ clean := strings.ToLower(Sanitize(raw))
+ clean = strings.ReplaceAll(clean, " ", "-")
+ if len(clean) > 24 {
+ clean = clean[:24]
+ }
+ return clean
+}
+
+func FormatSince(t time.Time) string {
+ d := time.Since(t)
+ switch {
+ case d < time.Minute && d.Seconds() < 20:
+ return "just now"
+ case d < time.Hour:
+ return fmt.Sprintf("%d minutes ago", int(d.Minutes()))
+ case d < 24*time.Hour:
+ return fmt.Sprintf("%d hours ago", int(d.Hours()))
+ default:
+ return fmt.Sprintf("%d days ago", int(d.Hours()/24))
+ }
+}
+
+func Truncate(s string, n int) string {
+ if len(s) > n {
+ return s[:n]
+ }
+ return s
+}