1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-07-30 03:23:08 +03:00

many more generics

This commit is contained in:
Jesse Duffield
2022-03-19 19:12:58 +11:00
parent bf4f06ab4e
commit 1b75ed3740
31 changed files with 278 additions and 320 deletions

View File

@ -3,7 +3,9 @@ package utils
import (
"strings"
"github.com/jesseduffield/generics/slices"
"github.com/mattn/go-runewidth"
"github.com/samber/lo"
)
// WithPadding pads a string as much as you want
@ -83,27 +85,20 @@ func getPaddedDisplayStrings(stringArrays [][]string, padWidths []int) string {
}
func getPadWidths(stringArrays [][]string) []int {
maxWidth := 0
for _, stringArray := range stringArrays {
if len(stringArray) > maxWidth {
maxWidth = len(stringArray)
}
}
maxWidth := slices.MaxBy(stringArrays, func(stringArray []string) int {
return len(stringArray)
})
if maxWidth-1 < 0 {
return []int{}
}
padWidths := make([]int, maxWidth-1)
for i := range padWidths {
for _, strings := range stringArrays {
uncoloredStr := Decolorise(strings[i])
return slices.Map(lo.Range(maxWidth-1), func(i int) int {
return slices.MaxBy(stringArrays, func(stringArray []string) int {
uncoloredStr := Decolorise(stringArray[i])
width := runewidth.StringWidth(uncoloredStr)
if width > padWidths[i] {
padWidths[i] = width
}
}
}
return padWidths
return runewidth.StringWidth(uncoloredStr)
})
})
}
// TruncateWithEllipsis returns a string, truncated to a certain length, with an ellipsis