1- package databaseproperties
1+ package format
22
33import (
44 "fmt"
5+ "reflect"
56 "strings"
67
78 "github.com/jedib0t/go-pretty/v6/text"
89)
910
10- func formatAlternatives (val interface {}) (text.Colors , string , error ) {
11+ func StringSliceOr (val interface {}) (text.Colors , string , error ) {
1112 return formatStringSlice (val , "or" )
1213}
1314
14- func formatProperties (val interface {}) (text.Colors , string , error ) {
15+ func StringSliceAnd (val interface {}) (text.Colors , string , error ) {
1516 return formatStringSlice (val , "and" )
1617}
1718
@@ -24,19 +25,23 @@ func formatStringSlice(val interface{}, andOrOr string) (text.Colors, string, er
2425 return nil , stringVal , nil
2526 }
2627
27- if ifaceSliceVal , ok := val .([] interface {} ); ok {
28- return nil , alternativesString (ifaceSliceVal , andOrOr ), nil
28+ if ifaceSliceVal , ok := toIfaceSlice ( val ); ok {
29+ return nil , stringSliceString (ifaceSliceVal , andOrOr ), nil
2930 }
3031
31- if stringSliceVal , ok := val .([]string ); ok {
32+ return nil , fmt .Sprintf ("%+v" , val ), nil
33+ }
34+
35+ func toIfaceSlice (val interface {}) ([]interface {}, bool ) {
36+ if reflect .TypeOf (val ).Kind () == reflect .Slice {
3237 ifaceSliceVal := []interface {}{}
33- for _ , i := range stringSliceVal {
34- ifaceSliceVal = append (ifaceSliceVal , i )
38+ reflectedVal := reflect .ValueOf (val )
39+ for i := 0 ; i < reflectedVal .Len (); i ++ {
40+ ifaceSliceVal = append (ifaceSliceVal , reflectedVal .Index (i ).Interface ())
3541 }
36- return nil , alternativesString ( ifaceSliceVal , andOrOr ), nil
42+ return ifaceSliceVal , true
3743 }
38-
39- return nil , fmt .Sprintf ("%+v" , val ), nil
44+ return nil , false
4045}
4146
4247func maxStringLen (strings []string ) int {
@@ -49,7 +54,7 @@ func maxStringLen(strings []string) int {
4954 return max
5055}
5156
52- func alternativesString (values []interface {}, andOrOr string ) string {
57+ func stringSliceString (values []interface {}, andOrOr string ) string {
5358 if len (values ) == 0 {
5459 return ""
5560 }
@@ -68,6 +73,6 @@ func alternativesString(values []interface{}, andOrOr string) string {
6873 whitespace = "\n "
6974 }
7075
71- str := strings .Join (strs [:len (strs )- 1 ], "," + whitespace )
72- return str + fmt .Sprintf (" %s%s%s" , andOrOr , whitespace , strs [len (values )- 1 ])
76+ str := strings .Join (strs [:len (strs )- 1 ], text . FgHiBlack . Sprint ( "," ) + whitespace )
77+ return str + fmt .Sprintf (" %s%s%s" , text . FgHiBlack . Sprint ( andOrOr ) , whitespace , strs [len (values )- 1 ])
7378}
0 commit comments