(value any, pos gojsondiff.Position, deltas *[]gojsondiff.Delta)
| 650 | } |
| 651 | |
| 652 | func filterDeltaRegexp(value any, pos gojsondiff.Position, deltas *[]gojsondiff.Delta) *int { |
| 653 | for i, delta := range *deltas { |
| 654 | if delta, ok := delta.(gojsondiff.PostDelta); !ok || delta.PostPosition() != pos { |
| 655 | continue |
| 656 | } |
| 657 | |
| 658 | matched := false |
| 659 | switch delta := delta.(type) { |
| 660 | case *gojsondiff.Object: |
| 661 | filterObjectMatchedByRegexp(value.(map[string]any), &delta.Deltas) |
| 662 | case *gojsondiff.Array: |
| 663 | filterArrayMatchedByRegexp(value.([]any), &delta.Deltas) |
| 664 | case *gojsondiff.Modified: |
| 665 | matched = matchesRegex(delta.OldValue, delta.NewValue) |
| 666 | case *gojsondiff.TextDiff: |
| 667 | matched = matchesRegex(delta.OldValue, delta.NewValue) |
| 668 | } |
| 669 | |
| 670 | if matched { |
| 671 | return &i |
| 672 | } |
| 673 | } |
| 674 | |
| 675 | return nil |
| 676 | } |
| 677 | |
| 678 | func matchesRegex(regex any, value any) bool { |
| 679 | var r *regexp.Regexp |
no test coverage detected