Vectrum
Sign In
27 lines · 587 Bytes · Shell
#!/usr/bin/env bash
set -euo pipefail
cat >> textutil.go <<'GO'

// Truncate shortens s to at most max characters, ending with "..." when it cuts.
func Truncate(s string, max int) string {
	r := []rune(s)
	if len(r) <= max {
		return s
	}
	if max <= 3 {
		return strings.Repeat(".", max)
	}
	return string(r[:max-3]) + "..."
}
GO
cat >> textutil_test.go <<'GO'

func TestTruncate(t *testing.T) {
	if got := Truncate("hello world", 8); got != "hello..." {
		t.Errorf("Truncate() = %q", got)
	}
	if got := Truncate("short", 10); got != "short" {
		t.Errorf("Truncate() = %q", got)
	}
}
GO