Skip to content

Commit

Permalink
feat: handle panic in Mask()
Browse files Browse the repository at this point in the history
  • Loading branch information
DavidCai1111 committed Jan 29, 2018
1 parent 89f92fa commit b7e9547
Showing 1 changed file with 22 additions and 3 deletions.
25 changes: 22 additions & 3 deletions jsonmask.go
Original file line number Diff line number Diff line change
@@ -1,16 +1,35 @@
package jsonmask

import (
"errors"
)

// Mask selects the specific parts of an object, according to the "mask".
func Mask(obj interface{}, mask string) (interface{}, error) {
func Mask(obj interface{}, mask string) (res interface{}, err error) {
defer func() {
if r := recover(); err != nil {
res = obj

switch r.(type) {
case error:
err = r.(error)
case string:
err = errors.New(r.(string))
default:
err = errors.New("json mask panic")
}
}
}()

compiledMask, err := compile(mask)
if err != nil {
return nil, err
}

filteredObj, err := filter(obj, compiledMask)
res, err = filter(obj, compiledMask)
if err != nil {
return nil, err
}

return filteredObj, nil
return res, nil
}

0 comments on commit b7e9547

Please sign in to comment.