1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
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
}
|