From f99cadbbc6fde8904263fef7ff983eb7c7e8afd6 Mon Sep 17 00:00:00 2001 From: Sergey Protko Date: Wed, 12 Nov 2025 14:33:22 +0300 Subject: [PATCH] fix incorrect UTF-8 string length handlin --- table.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/table.go b/table.go index 6cc99f7..2fde80a 100644 --- a/table.go +++ b/table.go @@ -1,6 +1,9 @@ package markdownTable -import "strings" +import ( + "strings" + "unicode/utf8" +) func CreateMarkdownTable(head []string, body [][]string) string { separator := "|" @@ -8,14 +11,14 @@ func CreateMarkdownTable(head []string, body [][]string) string { //Calculate maximum column width based on headers for i, val := range head { - columnWidths[i] = len(val) + columnWidths[i] = utf8.RuneCountInString(val) } //Calculate maximum column widths based on body data for _, row := range body { for i, val := range row { - if i < len(head) && len(val) > columnWidths[i] { - columnWidths[i] = len(val) + if i < len(head) && utf8.RuneCountInString(val) > columnWidths[i] { + columnWidths[i] = utf8.RuneCountInString(val) } } } @@ -52,5 +55,5 @@ func CreateMarkdownTable(head []string, body [][]string) string { // Helper function to pad a string to the required length func padString(val string, length int) string { - return val + strings.Repeat(" ", length-len(val)) + return val + strings.Repeat(" ", length-utf8.RuneCountInString(val)) }