// ------------------------------------------------------------------------ // Project active2 // Active Thing (activething.com) git.activething.com/go // // File name errMeta.go // Created by DEV // Modified 24/03/2024 // // Copyright 2024 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 wrap import ( "bytes" "errs/erstr" "time" ) type ( Info struct { error Message string Info string Desc string Help string Link string Date time.Time } InfoFnc func (*Info) ) func WithInfo (err error) *Info { if err == nil { panic(G.ErrNilWrap.WithMessageF(errNilWrapMsg,"Info")) } return &Info{ error: err, Link: G.InfoLink, Date: time.Now(), } } func (e Info) Unwrap () error { return e.error } func (e Info) String () string { b := bytes.Buffer{} if len(e.Message) > 0 { b.WriteString(erstr.FormatLine(labelMessage,e.Message)) } if len(e.Info) > 0 { b.WriteString(erstr.FormatLine(labelInfo,e.Message)) } if len(e.Desc) > 0 { b.WriteString(erstr.FormatLine(labelDesc,e.Desc)) } if len(e.Link) > 0 { b.WriteString(erstr.FormatLine(labelLink,e.Link)) } if len(e.Help) > 0 { b.WriteString(erstr.FormatLine(labelHelp,e.Help)) } b.WriteString(erstr.FormatLine(labelDate,e.Date.String())) return b.String() }