diff options
Diffstat (limited to 'src/util/util.go')
-rw-r--r-- | src/util/util.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/util/util.go b/src/util/util.go index c3995bfd..a1c37f7a 100644 --- a/src/util/util.go +++ b/src/util/util.go @@ -34,6 +34,23 @@ func RunesWidth(runes []rune, prefixWidth int, tabstop int, limit int) (int, int return width, -1 } +// Truncate returns the truncated runes and its width +func Truncate(input string, limit int) ([]rune, int) { + runes := []rune{} + width := 0 + gr := uniseg.NewGraphemes(input) + for gr.Next() { + rs := gr.Runes() + w := runewidth.StringWidth(string(rs)) + if width+w > limit { + return runes, width + } + width += w + runes = append(runes, rs...) + } + return runes, width +} + // Max returns the largest integer func Max(first int, second int) int { if first >= second { |