summaryrefslogtreecommitdiffstats
path: root/pkg/utils/formatting.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/utils/formatting.go')
-rw-r--r--pkg/utils/formatting.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/pkg/utils/formatting.go b/pkg/utils/formatting.go
new file mode 100644
index 000000000..3b4b35bb8
--- /dev/null
+++ b/pkg/utils/formatting.go
@@ -0,0 +1,39 @@
+package utils
+
+import "strings"
+
+// WithPadding pads a string as much as you want
+func WithPadding(str string, padding int) string {
+ uncoloredStr := Decolorise(str)
+ if padding < len(uncoloredStr) {
+ return str
+ }
+ return str + strings.Repeat(" ", padding-len(uncoloredStr))
+}
+
+func RenderDisplayStrings(displayStringsArr [][]string) string {
+ padWidths := getPadWidths(displayStringsArr)
+ paddedDisplayStrings := getPaddedDisplayStrings(displayStringsArr, padWidths)
+
+ return strings.Join(paddedDisplayStrings, "\n")
+}
+
+func getPaddedDisplayStrings(stringArrays [][]string, padWidths []int) []string {
+ paddedDisplayStrings := make([]string, len(stringArrays))
+ for i, stringArray := range stringArrays {
+ if len(stringArray) == 0 {
+ continue
+ }
+ for j, padWidth := range padWidths {
+ if len(stringArray)-1 < j {
+ continue
+ }
+ paddedDisplayStrings[i] += WithPadding(stringArray[j], padWidth) + " "
+ }
+ if len(stringArray)-1 < len(padWidths) {
+ continue
+ }
+ paddedDisplayStrings[i] += stringArray[len(padWidths)]
+ }
+ return paddedDisplayStrings
+}