github.com/everdrone/grab@v0.1.7-0.20230416223925-40674b995521/internal/utils/table.go (about) 1 package utils 2 3 import ( 4 "bytes" 5 "fmt" 6 "sort" 7 "text/tabwriter" 8 ) 9 10 func FormatMap(m map[string]string, separator string, alignRight bool) string { 11 buf := &bytes.Buffer{} 12 13 flags := uint(0) 14 if alignRight { 15 flags = flags | tabwriter.AlignRight 16 } 17 18 w := tabwriter.NewWriter(buf, 0, 0, 0, ' ', flags) 19 20 keys := make([]string, 0, len(m)) 21 for k := range m { 22 keys = append(keys, k) 23 } 24 25 sort.Strings(keys) 26 27 for k := range keys { 28 fmt.Fprintf(w, "%s\t%s%s\n", keys[k], separator, m[keys[k]]) 29 } 30 31 w.Flush() 32 return buf.String() 33 }