diff --git a/jsonpatch.go b/jsonpatch.go index 295f260..a735643 100644 --- a/jsonpatch.go +++ b/jsonpatch.go @@ -136,7 +136,7 @@ func matchesValue(av, bv interface{}) bool { var rfc6901Encoder = strings.NewReplacer("~", "~0", "/", "~1") -func makePath(path string, newPart interface{}) string { +func MakePath(path string, newPart interface{}) string { key := rfc6901Encoder.Replace(fmt.Sprintf("%v", newPart)) if path == "" { return "/" + key @@ -150,7 +150,7 @@ func makePath(path string, newPart interface{}) string { // diff returns the (recursive) difference between a and b as an array of JsonPatchOperations. func diff(a, b map[string]interface{}, path string, patch []JsonPatchOperation) ([]JsonPatchOperation, error) { for key, bv := range b { - p := makePath(path, key) + p := MakePath(path, key) av, ok := a[key] // value was added if !ok { @@ -173,7 +173,7 @@ func diff(a, b map[string]interface{}, path string, patch []JsonPatchOperation) for key := range a { _, found := b[key] if !found { - p := makePath(path, key) + p := MakePath(path, key) patch = append(patch, NewPatch("remove", p, nil)) } @@ -205,7 +205,7 @@ func handleValues(av, bv interface{}, p string, patch []JsonPatchOperation) ([]J } else { for i := range bt { - patch, err = handleValues(at[i], bt[i], makePath(p, i), patch) + patch, err = handleValues(at[i], bt[i], MakePath(p, i), patch) if err != nil { return nil, err } @@ -236,7 +236,7 @@ func compareArray(av, bv []interface{}, p string) []JsonPatchOperation { } } if !found { - retval = append(retval, NewPatch("remove", makePath(p, i), nil)) + retval = append(retval, NewPatch("remove", MakePath(p, i), nil)) } } @@ -249,7 +249,7 @@ func compareArray(av, bv []interface{}, p string) []JsonPatchOperation { } } if !found { - retval = append(retval, NewPatch("add", makePath(p, i), v)) + retval = append(retval, NewPatch("add", MakePath(p, i), v)) } }