github.com/alloyci/alloy-runner@v1.0.1-0.20180222164613-925503ccafd6/helpers/converter.go (about) 1 package helpers 2 3 import ( 4 "bufio" 5 "bytes" 6 "github.com/BurntSushi/toml" 7 "gopkg.in/yaml.v2" 8 ) 9 10 func ToYAML(src interface{}) string { 11 data, err := yaml.Marshal(src) 12 if err == nil { 13 return string(data) 14 } 15 return "" 16 } 17 18 func ToTOML(src interface{}) string { 19 var data bytes.Buffer 20 buffer := bufio.NewWriter(&data) 21 22 if err := toml.NewEncoder(buffer).Encode(src); err != nil { 23 return "" 24 } 25 26 if err := buffer.Flush(); err != nil { 27 return "" 28 } 29 30 return data.String() 31 } 32 33 func ToConfigMap(list interface{}) (map[string]interface{}, bool) { 34 x, ok := list.(map[string]interface{}) 35 if ok { 36 return x, ok 37 } 38 39 y, ok := list.(map[interface{}]interface{}) 40 if !ok { 41 return nil, false 42 } 43 44 result := make(map[string]interface{}) 45 for k, v := range y { 46 result[k.(string)] = v 47 } 48 49 return result, true 50 } 51 52 func GetMapKey(value map[string]interface{}, keys ...string) (result interface{}, ok bool) { 53 result = value 54 55 for _, key := range keys { 56 if stringMap, ok := result.(map[string]interface{}); ok { 57 if result, ok = stringMap[key]; ok { 58 continue 59 } 60 } else if interfaceMap, ok := result.(map[interface{}]interface{}); ok { 61 if result, ok = interfaceMap[key]; ok { 62 continue 63 } 64 } 65 return nil, false 66 } 67 68 return result, true 69 }