package utils // Truncate returns a truncated version of s with at most maxLen runes. // Handles multi-byte Unicode characters properly. // If the string is truncated, "..." is appended to indicate truncation. func Truncate(s string, maxLen int) string { if maxLen <= 0 { return "" } runes := []rune(s) if len(runes) <= maxLen { return s } // Reserve 3 chars for "..." if maxLen <= 3 { return string(runes[:maxLen]) } return string(runes[:maxLen-3]) + "..." } // DerefStr dereferences a pointer to a string and // returns the value or a fallback if the pointer is nil. func DerefStr(s *string, fallback string) string { if s == nil { return fallback } return *s }