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  }