You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
145 lines
2.4 KiB
145 lines
2.4 KiB
/*
|
|
---------------------------------------------------------
|
|
Project activething
|
|
Active Thing (activething.com) git.activething.com/go
|
|
|
|
File name err_list.go
|
|
Created by DEV
|
|
Modified 23/10/2023
|
|
|
|
Copyright 2023 activething.com
|
|
---------------------------------------------------------
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
*/
|
|
|
|
package errs
|
|
|
|
type ErrList []error
|
|
|
|
|
|
|
|
func (l ErrList) Clean() ErrList {
|
|
for _, e := range l {
|
|
if e == nil {
|
|
return l.clean()
|
|
}
|
|
}
|
|
return l
|
|
}
|
|
|
|
|
|
func (l ErrList) clean() ErrList {
|
|
rs := make([]error, 0, len(l))
|
|
for _, e := range l {
|
|
if e != nil {
|
|
rs = append(rs, e)
|
|
}
|
|
}
|
|
return rs
|
|
}
|
|
|
|
|
|
func (l ErrList) GetFirst() error {
|
|
for _, er := range l {
|
|
if er != nil {
|
|
return er
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
|
|
func (l ErrList) GetLast() error {
|
|
for i := len(l) - 1; i >= 0; i-- {
|
|
if l[i] != nil {
|
|
return l[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
|
|
func (l ErrList) Any() bool {
|
|
return l.count(true) > 0 }
|
|
|
|
|
|
func (l ErrList) Count() int {
|
|
return _errorsCount(false, l) }
|
|
|
|
|
|
func (l ErrList) count(ext bool) int {
|
|
rs := 0
|
|
for _, er := range l {
|
|
if er != nil {
|
|
if ext {
|
|
return 1
|
|
}
|
|
rs++
|
|
}
|
|
}
|
|
return rs
|
|
}
|
|
|
|
|
|
func (l ErrList) Stack() StackTrace {
|
|
for _, er := range l {
|
|
if er != nil {
|
|
st := getStackTrace(er)
|
|
if st != nil {
|
|
return st
|
|
}
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
|
|
func (l ErrList) ToError() error {
|
|
switch _errorsCount(false, l) {
|
|
case 0:
|
|
return nil
|
|
case 1:
|
|
return l.GetFirst()
|
|
default:
|
|
return ErrGroup(l)
|
|
}
|
|
}
|
|
|
|
|
|
func _errorsCount(exitOnAny bool, els []error) int {
|
|
rs := 0
|
|
for _, er := range els {
|
|
if er != nil {
|
|
rs++
|
|
if exitOnAny {
|
|
break
|
|
}
|
|
}
|
|
}
|
|
return rs
|
|
}
|
|
|
|
/*
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
I HAVE NO DESIRE TO WALK ON WATER," SAID SIDDHARTA.
|
|
"LET THE OLD SHRAMANAS SATISFY THEMSELVES WITH SUCH SKILLS.
|
|
|
|
SIDDHARTA
|
|
- HERMANN HESSE -
|
|
|
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
*/
|