From 17f24f765c175ec339fb62b27f83b6f0c429020d Mon Sep 17 00:00:00 2001 From: Stefano Date: Fri, 26 Nov 2021 11:39:51 +0100 Subject: [PATCH] Add SortByColumn function and improve some functions --- table.go | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/table.go b/table.go index 907a5f6..cff00bd 100644 --- a/table.go +++ b/table.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "sort" "strings" ) @@ -32,12 +33,15 @@ func centerString(s string, width int) string { return strings.Repeat(" ", leftPadding) + s + strings.Repeat(" ", rightPadding) } -func formatStr(fileName string, maxSize int) string { - if len(fileName) <= maxSize { - return centerString(fileName, maxSize) +func cutStr(s string, maxSize int) string { + if len(s) <= maxSize { + return s } + return s[:maxSize-3] + "..." +} - return centerString(fileName[:maxSize-3]+"...", maxSize) +func formatStr(s string, maxSize int) string { + return centerString(cutStr(s, maxSize), maxSize) } const paddingDefault = 2 @@ -124,6 +128,14 @@ func (printer *TablePrinter) AddRow(r Row) { } +func (printer *TablePrinter) SortByColumn(col int) { + if col < printer.NumCols() { + sort.Slice(printer.Rows, func(i, j int) bool { + return printer.Rows[i][col] < printer.Rows[j][col] + }) + } +} + func (printer *TablePrinter) Print() { colWidths := printer.computeColumnWidthds()