diff options
Diffstat (limited to 'utils/text.go')
| -rw-r--r-- | utils/text.go | 49 |
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 +} |
