From ebd391df63c9cd434662436512b2e336328acd8f Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Sat, 15 Oct 2022 14:24:43 +0200 Subject: [PATCH] added -D to alter sort order to descending order (default: ascending) --- TODO.md | 2 -- cmd/root.go | 3 +++ cmd/tablizer.go | 4 +++- lib/common.go | 3 ++- lib/sort.go | 3 +++ tablizer.1 | 5 ++++- tablizer.pod | 5 ++++- 7 files changed, 19 insertions(+), 6 deletions(-) diff --git a/TODO.md b/TODO.md index ed07d10..fd04222 100644 --- a/TODO.md +++ b/TODO.md @@ -2,8 +2,6 @@ ## Features to be implemented -- ability to change sort order (ascending vs descending) - - sorting by: numerical, time, duration, string(default) - add output modes yaml and csv diff --git a/cmd/root.go b/cmd/root.go index 7b78e51..f47239e 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -85,7 +85,10 @@ func init() { rootCmd.PersistentFlags().BoolVarP(&ShowManual, "man", "m", false, "Display manual page") rootCmd.PersistentFlags().StringVarP(&lib.Separator, "separator", "s", lib.DefaultSeparator, "Custom field separator") rootCmd.PersistentFlags().StringVarP(&lib.Columns, "columns", "c", "", "Only show the speficied columns (separated by ,)") + + // sort options rootCmd.PersistentFlags().IntVarP(&lib.SortByColumn, "sort-by", "k", 0, "Sort by column (default: 1)") + rootCmd.PersistentFlags().BoolVarP(&lib.SortDescending, "sort-desc", "D", false, "Sort in descending order (default: ascending)") // output flags, only 1 allowed, hidden, since just short cuts rootCmd.PersistentFlags().BoolVarP(&lib.OutflagExtended, "extended", "X", false, "Enable extended output") diff --git a/cmd/tablizer.go b/cmd/tablizer.go index 7acb88d..706594a 100644 --- a/cmd/tablizer.go +++ b/cmd/tablizer.go @@ -22,6 +22,7 @@ SYNOPSIS -O, --orgtbl Enable org-mode table output -s, --separator string Custom field separator -k, --sort-by int Sort by column (default: 1) + -D, --sort-desc Sort in descending order (default: ascending) -v, --version Print program version DESCRIPTION @@ -78,7 +79,8 @@ DESCRIPTION Use the -k option to specify by which column to sort the tabular data (as in GNU sort(1)). The default sort column is the first one. To - disable sorting at all, supply 0 (Zero) to -k. + disable sorting at all, supply 0 (Zero) to -k. The default sort order is + ascending. You can change this to descending order using the option -D. Finally the -d option enables debugging output which is mostly useful for the developer. diff --git a/lib/common.go b/lib/common.go index 636fea1..1f208f6 100644 --- a/lib/common.go +++ b/lib/common.go @@ -76,7 +76,8 @@ var ( VERSION string // sorting - SortByColumn int + SortByColumn int + SortDescending bool ) // contains a whole parsed table diff --git a/lib/sort.go b/lib/sort.go index 25b8b57..ecdd105 100644 --- a/lib/sort.go +++ b/lib/sort.go @@ -41,6 +41,9 @@ func sortTable(data *Tabdata, col int) { // actual sorting sort.SliceStable(data.entries, func(i, j int) bool { + if SortDescending { + return data.entries[i][col] > data.entries[j][col] + } return data.entries[i][col] < data.entries[j][col] }) } diff --git a/tablizer.1 b/tablizer.1 index 33d06d2..7a81ac8 100644 --- a/tablizer.1 +++ b/tablizer.1 @@ -160,6 +160,7 @@ tablizer \- Manipulate tabular output of other programs \& \-O, \-\-orgtbl Enable org\-mode table output \& \-s, \-\-separator string Custom field separator \& \-k, \-\-sort\-by int Sort by column (default: 1) +\& \-D, \-\-sort\-desc Sort in descending order (default: ascending) \& \-v, \-\-version Print program version .Ve .SH "DESCRIPTION" @@ -225,7 +226,9 @@ highlighted. You can disable this behavior with the \fB\-N\fR option. .PP Use the \fB\-k\fR option to specify by which column to sort the tabular data (as in \s-1GNU\s0 \fBsort\fR\|(1)). The default sort column is the first one. To -disable sorting at all, supply 0 (Zero) to \-k. +disable sorting at all, supply 0 (Zero) to \-k. The default sort order +is ascending. You can change this to descending order using the option +\&\fB\-D\fR. .PP Finally the \fB\-d\fR option enables debugging output which is mostly useful for the developer. diff --git a/tablizer.pod b/tablizer.pod index 778b167..ef63f9c 100644 --- a/tablizer.pod +++ b/tablizer.pod @@ -21,6 +21,7 @@ tablizer - Manipulate tabular output of other programs -O, --orgtbl Enable org-mode table output -s, --separator string Custom field separator -k, --sort-by int Sort by column (default: 1) + -D, --sort-desc Sort in descending order (default: ascending) -v, --version Print program version @@ -81,7 +82,9 @@ highlighted. You can disable this behavior with the B<-N> option. Use the B<-k> option to specify by which column to sort the tabular data (as in GNU sort(1)). The default sort column is the first one. To -disable sorting at all, supply 0 (Zero) to -k. +disable sorting at all, supply 0 (Zero) to -k. The default sort order +is ascending. You can change this to descending order using the option +B<-D>. Finally the B<-d> option enables debugging output which is mostly useful for the developer.