blob: 729834db848a6d25c3f54f97538b45173deed4d9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package text
import (
"bytes"
"fmt"
"strings"
)
// LeftPadMaxLine pads a string on the left by a specified amount and pads the string on the right to fill the maxLength
func LeftPadMaxLine(text string, length, leftPad int) string {
runes := []rune(text)
// truncate and ellipse if needed
if len(runes)+leftPad > length {
runes = append(runes[:(length-leftPad-1)], '…')
}
if len(runes)+leftPad < length {
runes = append(runes, []rune(strings.Repeat(" ", length-len(runes)-leftPad))...)
}
return fmt.Sprintf("%s%s",
strings.Repeat(" ", leftPad),
string(runes),
)
}
// LeftPad left pad each line of the given text
func LeftPad(text string, leftPad int) string {
var result bytes.Buffer
pad := strings.Repeat(" ", leftPad)
for _, line := range strings.Split(text, "\n") {
result.WriteString(pad)
result.WriteString(line)
result.WriteString("\n")
}
return result.String()
}
|