summaryrefslogtreecommitdiffstats
path: root/src/util/util.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/util.go')
-rw-r--r--src/util/util.go17
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 {