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 }