Compare commits

...

2 Commits

Author SHA1 Message Date
9f883b458f v0.0.513
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 4m55s
2024-09-16 15:27:32 +02:00
1f456c5134 v0.0.512
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 5m6s
2024-09-15 21:25:21 +02:00
3 changed files with 17 additions and 6 deletions

View File

@@ -38,6 +38,13 @@ func (ee *ExErr) Error() string {
// Unwrap must be implemented so that some error.XXX methods work
func (ee *ExErr) Unwrap() error {
if ee.OriginalError == nil {
if ee.WrappedErr != nil {
if werr, ok := ee.WrappedErr.(error); ok {
return werr
}
}
return nil // this is neccessary - otherwise we return a wrapped nil and the `x == nil` comparison fails (= panic in errors.Is and other failures)
}
return ee.OriginalError

View File

@@ -1,5 +1,5 @@
package goext
const GoextVersion = "0.0.511"
const GoextVersion = "0.0.513"
const GoextVersionTimestamp = "2024-09-15T18:22:07+0200"
const GoextVersionTimestamp = "2024-09-16T15:27:32+0200"

View File

@@ -788,7 +788,7 @@ FieldLoop:
if f.omitEmpty && isEmptyValue(fv) {
continue
} else if opts.filter != nil && !matchesJSONFilter(f.jsonfilter, *opts.filter) {
} else if !matchesJSONFilter(f.jsonfilter, opts.filter) {
continue
}
e.WriteByte(next)
@@ -808,16 +808,20 @@ FieldLoop:
}
}
func matchesJSONFilter(filter jsonfilter, value string) bool {
func matchesJSONFilter(filter jsonfilter, value *string) bool {
if len(filter) == 0 {
return true
return true // no filter in struct
}
if value == nil || *value == "" {
return false // no filter set, but struct has filter, return false
}
if len(filter) == 1 && filter[0] == "-" {
return false
}
if filter.Contains(value) {
if filter.Contains(*value) {
return true
}