on main help sign in
fix(tui): logo: simplify logo word stretching
2a8998eAyman Bagabas
internal/tui/components/logo/logo.go+11−9
@@ -44,13 +44,19 @@ func Render(version string, compact bool, o Opts) string {
44
44
45 // Title.
45 // Title.
46 const spacing = 1
46 const spacing = 1
47− crush := renderWord(spacing, !compact,
47+ letterforms := []letterform{
48 letterC,
48 letterC,
49 letterR,
49 letterR,
50 letterU,
50 letterU,
51 letterSStylized,
51 letterSStylized,
52 letterH,
52 letterH,
53− )
53+ }
54+ stretchIndex := -1 // -1 means no stretching.
55+ if !compact {
56+ stretchIndex = rand.IntN(len(letterforms))
57+ }
58+
59+ crush := renderWord(spacing, stretchIndex, letterforms...)
54 crushWidth := lipgloss.Width(crush)
60 crushWidth := lipgloss.Width(crush)
55 b := new(strings.Builder)
61 b := new(strings.Builder)
56 for r := range strings.SplitSeq(crush, "\n") {
62 for r := range strings.SplitSeq(crush, "\n") {
@@ -124,8 +130,9 @@ func SmallRender(width int) string {
124 return title
130 return title
125}
131}
126
132
127−// renderWord renders letterforms to fork a word.
133+// renderWord renders letterforms to fork a word. stretchIndex is the index of
134+// the letter to stretch, or -1 if no letter should be stretched.
128−func renderWord(spacing int, stretchRandomLetter bool, letterforms ...letterform) string {
135+func renderWord(spacing int, stretchIndex int, letterforms ...letterform) string {
129 if spacing < 0 {
136 if spacing < 0 {
130 spacing = 0
137 spacing = 0
131 }
138 }
@@ -133,11 +140,6 @@ func renderWord(spacing int, stretchRandomLetter bool, letterforms ...letterform
133 renderedLetterforms := make([]string, len(letterforms))
140 renderedLetterforms := make([]string, len(letterforms))
134
141
135 // pick one letter randomly to stretch
142 // pick one letter randomly to stretch
136− stretchIndex := -1
137− if stretchRandomLetter {
138− stretchIndex = rand.IntN(len(letterforms)) //nolint:gosec
139− }
140−
141 for i, letter := range letterforms {
143 for i, letter := range letterforms {
142 renderedLetterforms[i] = letter(i == stretchIndex)
144 renderedLetterforms[i] = letter(i == stretchIndex)
143 }
145 }