fix(tui): logo: simplify logo word stretching

This commit is contained in:
Ayman Bagabas
2025-07-17 12:34:55 -04:00
parent 7a282d3a2f
commit 2a8998ef00

View File

@@ -44,13 +44,19 @@ func Render(version string, compact bool, o Opts) string {
// Title.
const spacing = 1
crush := renderWord(spacing, !compact,
letterforms := []letterform{
letterC,
letterR,
letterU,
letterSStylized,
letterH,
)
}
stretchIndex := -1 // -1 means no stretching.
if !compact {
stretchIndex = rand.IntN(len(letterforms))
}
crush := renderWord(spacing, stretchIndex, letterforms...)
crushWidth := lipgloss.Width(crush)
b := new(strings.Builder)
for r := range strings.SplitSeq(crush, "\n") {
@@ -124,8 +130,9 @@ func SmallRender(width int) string {
return title
}
// renderWord renders letterforms to fork a word.
func renderWord(spacing int, stretchRandomLetter bool, letterforms ...letterform) string {
// renderWord renders letterforms to fork a word. stretchIndex is the index of
// the letter to stretch, or -1 if no letter should be stretched.
func renderWord(spacing int, stretchIndex int, letterforms ...letterform) string {
if spacing < 0 {
spacing = 0
}
@@ -133,11 +140,6 @@ func renderWord(spacing int, stretchRandomLetter bool, letterforms ...letterform
renderedLetterforms := make([]string, len(letterforms))
// pick one letter randomly to stretch
stretchIndex := -1
if stretchRandomLetter {
stretchIndex = rand.IntN(len(letterforms)) //nolint:gosec
}
for i, letter := range letterforms {
renderedLetterforms[i] = letter(i == stretchIndex)
}