|
|
|
@ -3,35 +3,44 @@ package align
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
|
|
|
|
"strings"
|
|
|
|
|
"unicode/utf8"
|
|
|
|
|
|
|
|
|
|
"github.com/acarl005/stripansi"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
// AlignLeft align left
|
|
|
|
|
func AlignLeft(s string, n int) string {
|
|
|
|
|
if len(s) > n {
|
|
|
|
|
func AlignLeft(t string, n int) string {
|
|
|
|
|
s := stripansi.Strip(t)
|
|
|
|
|
slen := utf8.RuneCountInString(s)
|
|
|
|
|
if slen > n {
|
|
|
|
|
return s[:n]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fmt.Sprintf("%s%s", s, strings.Repeat(" ", n-len(s)))
|
|
|
|
|
return fmt.Sprintf("%s%s", t, strings.Repeat(" ", n-slen))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AlignRight align right
|
|
|
|
|
func AlignRight(s string, n int) string {
|
|
|
|
|
if len(s) > n {
|
|
|
|
|
func AlignRight(t string, n int) string {
|
|
|
|
|
s := stripansi.Strip(t)
|
|
|
|
|
slen := utf8.RuneCountInString(s)
|
|
|
|
|
if slen > n {
|
|
|
|
|
return s[:n]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return fmt.Sprintf("%s%s", strings.Repeat(" ", n-len(s)), s)
|
|
|
|
|
return fmt.Sprintf("%s%s", strings.Repeat(" ", n-slen), t)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AlignCenter align center
|
|
|
|
|
func AlignCenter(s string, n int) string {
|
|
|
|
|
if len(s) > n {
|
|
|
|
|
func AlignCenter(t string, n int) string {
|
|
|
|
|
s := stripansi.Strip(t)
|
|
|
|
|
slen := utf8.RuneCountInString(s)
|
|
|
|
|
if slen > n {
|
|
|
|
|
return s[:n]
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pad := (n - len(s)) / 2
|
|
|
|
|
pad := (n - slen) / 2
|
|
|
|
|
lpad := pad
|
|
|
|
|
rpad := n - len(s) - lpad
|
|
|
|
|
rpad := n - slen - lpad
|
|
|
|
|
|
|
|
|
|
return fmt.Sprintf("%s%s%s", strings.Repeat(" ", lpad), s, strings.Repeat(" ", rpad))
|
|
|
|
|
return fmt.Sprintf("%s%s%s", strings.Repeat(" ", lpad), t, strings.Repeat(" ", rpad))
|
|
|
|
|
}
|
|
|
|
|