github.com/Cloud-Foundations/Dominator@v0.3.4/lib/flagutil/stringToRuneMap.go (about)

     1  package flagutil
     2  
     3  import (
     4  	"errors"
     5  	"sort"
     6  	"strings"
     7  )
     8  
     9  func (m *StringToRuneMap) String() string {
    10  	keys := make([]string, 0, len(*m))
    11  	for key := range *m {
    12  		keys = append(keys, key)
    13  	}
    14  	sort.Strings(keys)
    15  	retval := `"`
    16  	for index, key := range keys {
    17  		if index != 0 {
    18  			retval += ","
    19  		}
    20  		retval += key + ":" + string((*m)[key])
    21  	}
    22  	return retval + `"`
    23  }
    24  
    25  func (m *StringToRuneMap) Set(value string) error {
    26  	newMap := make(map[string]rune)
    27  	for _, entry := range strings.Split(value, ",") {
    28  		fields := strings.Split(entry, ":")
    29  		if len(fields) != 2 {
    30  			return errors.New("invalid entry: " + entry)
    31  		}
    32  		if len(fields[1]) != 1 {
    33  			return errors.New("invalid filetype: " + fields[1])
    34  		}
    35  		newMap[fields[0]] = rune(fields[1][0])
    36  	}
    37  	*m = newMap
    38  	return nil
    39  }