Files
promptkit/internal/observation/compose.go

20 lines
427 B
Go

package observation
// Compose copies and synchronously invokes non-nil observers in order.
func Compose[T any, F ~func(T)](observers ...F) F {
selected := make([]F, 0, len(observers))
for _, observer := range observers {
if observer != nil {
selected = append(selected, observer)
}
}
if len(selected) == 0 {
return nil
}
return func(event T) {
for _, observer := range selected {
observer(event)
}
}
}