github.com/WindomZ/go-commander@v1.2.2/result.go (about) 1 package commander 2 3 import "errors" 4 5 type _Result interface { 6 Code() int 7 Error() error 8 Break() bool 9 setBreak() 10 } 11 12 type _ResultCode struct { 13 code int 14 error error 15 _break bool 16 } 17 18 func (e _ResultCode) Code() int { 19 return e.code 20 } 21 22 func (e _ResultCode) Error() error { 23 return e.error 24 } 25 26 func (e _ResultCode) Break() bool { 27 return e._break || (e.error != nil) 28 } 29 30 func (e *_ResultCode) setBreak() { 31 e._break = true 32 } 33 34 func newResult(text string) _Result { 35 return &_ResultCode{error: errors.New(text)} 36 } 37 38 func newResultCode(code int, text ...string) _Result { 39 var err error 40 if len(text) != 0 { 41 err = errors.New(text[0]) 42 } 43 return &_ResultCode{ 44 code: code, 45 error: err, 46 } 47 } 48 49 func newResultError(err error, codes ...int) _Result { 50 var code int = 0 51 if len(codes) != 0 { 52 code = codes[0] 53 } 54 return &_ResultCode{ 55 code: code, 56 error: err, 57 } 58 } 59 60 func resultPass() _Result { 61 return &_ResultCode{} 62 } 63 64 func resultBreak() _Result { 65 return &_ResultCode{_break: true} 66 }