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}