1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-02-03 13:21:56 +02:00

Change RenderDisplayStrings to return a slice of strings

We'll join them with newlines afterwards. This will make it easier to insert
other (non-model) items.
This commit is contained in:
Stefan Haller 2023-08-08 08:35:09 +02:00
parent f680b6e82e
commit 72731f2c16
4 changed files with 16 additions and 15 deletions

View File

@ -1,6 +1,8 @@
package context
import (
"strings"
"github.com/jesseduffield/lazygit/pkg/gui/types"
"github.com/jesseduffield/lazygit/pkg/utils"
)
@ -21,7 +23,8 @@ func (self *ListRenderer) renderLines(startIdx int, endIdx int) string {
if self.getColumnAlignments != nil {
columnAlignments = self.getColumnAlignments()
}
return utils.RenderDisplayStrings(
lines := utils.RenderDisplayStrings(
self.getDisplayStrings(startIdx, utils.Min(endIdx, self.list.Len())),
columnAlignments)
return strings.Join(lines, "\n")
}

View File

@ -422,7 +422,8 @@ func TestGetCommitListDisplayStrings(t *testing.T) {
s.showYouAreHereLabel,
)
renderedResult := utils.RenderDisplayStrings(result, nil)
renderedLines := utils.RenderDisplayStrings(result, nil)
renderedResult := strings.Join(renderedLines, "\n")
t.Logf("\n%s", renderedResult)
assert.EqualValues(t, s.expected, renderedResult)

View File

@ -37,7 +37,7 @@ func WithPadding(str string, padding int, alignment Alignment) string {
// defaults to left-aligning each column. If you want to set the alignment of
// each column, pass in a slice of Alignment values.
func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Alignment) string {
func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Alignment) []string {
displayStringsArr = excludeBlankColumns(displayStringsArr)
padWidths := getPadWidths(displayStringsArr)
columnConfigs := make([]ColumnConfig, len(padWidths))
@ -53,9 +53,7 @@ func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Align
Alignment: alignment,
}
}
output := getPaddedDisplayStrings(displayStringsArr, columnConfigs)
return output
return getPaddedDisplayStrings(displayStringsArr, columnConfigs)
}
// NOTE: this mutates the input slice for the sake of performance
@ -91,12 +89,13 @@ outer:
return displayStringsArr
}
func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConfig) string {
builder := strings.Builder{}
for i, stringArray := range stringArrays {
func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConfig) []string {
result := make([]string, 0, len(stringArrays))
for _, stringArray := range stringArrays {
if len(stringArray) == 0 {
continue
}
builder := strings.Builder{}
for j, columnConfig := range columnConfigs {
if len(stringArray)-1 < j {
continue
@ -108,12 +107,9 @@ func getPaddedDisplayStrings(stringArrays [][]string, columnConfigs []ColumnConf
continue
}
builder.WriteString(stringArray[len(columnConfigs)])
if i < len(stringArrays)-1 {
builder.WriteString("\n")
}
result = append(result, builder.String())
}
return builder.String()
return result
}
func getPadWidths(stringArrays [][]string) []int {

View File

@ -1,6 +1,7 @@
package utils
import (
"strings"
"testing"
"github.com/stretchr/testify/assert"
@ -217,6 +218,6 @@ func TestRenderDisplayStrings(t *testing.T) {
for _, test := range tests {
output := RenderDisplayStrings(test.input, test.columnAlignments)
assert.EqualValues(t, test.expected, output)
assert.EqualValues(t, test.expected, strings.Join(output, "\n"))
}
}