package grconfig import ( "bytes" "errors" "gopkg.in/yaml.v2" "log" "strings" ) type ConfigerChannelYAML struct { tmp interface{} filename string adapter string } func (conf *ConfigerChannelYAML) String(item string) string { chunks := strings.SplitN(item, ".", 2) target := recursiveParse(chunks[1], conf.tmp) if str, ok := target.(string); ok { return str } return "" } func (conf *ConfigerChannelYAML) Item(item string, t interface{}) (err error) { chunks := strings.SplitN(item, ".", 2) if len(chunks) == 1 { chunks = append(chunks, "") } target := recursiveParse(chunks[1], conf.tmp) if target == nil { err = errors.New("item doesn't exists") return } out, _ := yaml.Marshal(target) err = yaml.Unmarshal(out, t) return } func parseYAML(buf bytes.Buffer) interface{} { var v interface{} if err := yaml.Unmarshal(buf.Bytes(), &v); err != nil { log.Println(err) panic(err) } return v }