xmtop/utils/runes.go
2020-02-14 09:35:58 -06:00

25 lines
386 B
Go

package utils
import (
rw "github.com/mattn/go-runewidth"
)
func TruncateFront(s string, w int, prefix string) string {
if rw.StringWidth(s) <= w {
return s
}
r := []rune(s)
pw := rw.StringWidth(prefix)
w -= pw
width := 0
i := len(r) - 1
for ; i >= 0; i-- {
cw := rw.RuneWidth(r[i])
width += cw
if width > w {
break
}
}
return prefix + string(r[i+1:len(r)])
}