1package util
2
3import (
4 "strings"
5 "unicode/utf8"
6)
7
8// LeftPaddedString pads a string on the left by a specified amount and pads the string on the right to fill the maxLength
9func LeftPaddedString(value string, maxValueLength, padAmount int) string {
10 valueLength := utf8.RuneCountInString(value)
11 if maxValueLength-padAmount >= valueLength {
12 return strings.Repeat(" ", padAmount) + value + strings.Repeat(" ", maxValueLength-valueLength-padAmount)
13 } else if maxValueLength-padAmount < valueLength {
14 tmp := strings.Trim(value[0:maxValueLength-padAmount-3], " ") + "..."
15 tmpLength := utf8.RuneCountInString(tmp)
16 return strings.Repeat(" ", padAmount) + tmp + strings.Repeat(" ", maxValueLength-tmpLength-padAmount)
17 }
18
19 return value
20}