/* --------------------------------------------------------- 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 - ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: */