...

Source file src/github.com/clbanning/mxj/v2/remove.go

Documentation: github.com/clbanning/mxj/v2

     1  package mxj
     2  
     3  import "strings"
     4  
     5  // Removes the path.
     6  func (mv Map) Remove(path string) error {
     7  	m := map[string]interface{}(mv)
     8  	return remove(m, path)
     9  }
    10  
    11  func 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"
    25  func 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"
    33  func parentPath(path string) string {
    34  	keys := strings.Split(path, ".")
    35  	parentPath := strings.Join(keys[0:len(keys)-1], ".")
    36  	return parentPath
    37  }
    38  

View as plain text