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  }