1package mxj 2 3import "strings" 4 5// Removes the path. 6func (mv Map) Remove(path string) error { 7 m := map[string]interface{}(mv) 8 return remove(m, path) 9} 10 11func remove(m interface{}, path string) error { 12 val, err := prevValueByPath(m, path) 13 if err != nil { 14 return err 15 } 16 17 lastKey := lastKey(path) 18 delete(val, lastKey) 19 20 return nil 21} 22 23// returns the last key of the path. 24// lastKey("a.b.c") would had returned "c" 25func lastKey(path string) string { 26 keys := strings.Split(path, ".") 27 key := keys[len(keys)-1] 28 return key 29} 30 31// returns the path without the last key 32// parentPath("a.b.c") whould had returned "a.b" 33func parentPath(path string) string { 34 keys := strings.Split(path, ".") 35 parentPath := strings.Join(keys[0:len(keys)-1], ".") 36 return parentPath 37} 38