mirror of
https://github.com/rocky-linux/peridot.git
synced 2024-10-19 07:55:07 +00:00
38 lines
788 B
Go
38 lines
788 B
Go
|
package decor
|
||
|
|
||
|
// OnComplete returns decorator, which wraps provided decorator, with
|
||
|
// sole purpose to display provided message on complete event.
|
||
|
//
|
||
|
// `decorator` Decorator to wrap
|
||
|
//
|
||
|
// `message` message to display on complete event
|
||
|
//
|
||
|
func OnComplete(decorator Decorator, message string) Decorator {
|
||
|
d := &onCompleteWrapper{
|
||
|
Decorator: decorator,
|
||
|
msg: message,
|
||
|
}
|
||
|
if md, ok := decorator.(*mergeDecorator); ok {
|
||
|
d.Decorator, md.Decorator = md.Decorator, d
|
||
|
return md
|
||
|
}
|
||
|
return d
|
||
|
}
|
||
|
|
||
|
type onCompleteWrapper struct {
|
||
|
Decorator
|
||
|
msg string
|
||
|
}
|
||
|
|
||
|
func (d *onCompleteWrapper) Decor(s Statistics) string {
|
||
|
if s.Completed {
|
||
|
wc := d.GetConf()
|
||
|
return wc.FormatMsg(d.msg)
|
||
|
}
|
||
|
return d.Decorator.Decor(s)
|
||
|
}
|
||
|
|
||
|
func (d *onCompleteWrapper) Base() Decorator {
|
||
|
return d.Decorator
|
||
|
}
|