Observer registers an Observer. Multiple calls accumulate.
(when When, hookName string, sel Selector, fn Observer)
| 83 | |
| 84 | // Observer registers an Observer. Multiple calls accumulate. |
| 85 | func (b *Builder) Observer(when When, hookName string, sel Selector, fn Observer) *Builder { |
| 86 | if !b.validateHookName(hookName, "observer") { |
| 87 | return b |
| 88 | } |
| 89 | // Capture by value so the action closure doesn't share state with |
| 90 | // subsequent Observer() calls (Go ≥1.22 already gives each call |
| 91 | // its own copies of parameter values, but pinning is explicit). |
| 92 | w, n, s, f := when, hookName, sel, fn |
| 93 | b.actions = append(b.actions, func(r Registrar) { |
| 94 | r.Observe(w, n, s, f) |
| 95 | }) |
| 96 | return b |
| 97 | } |
| 98 | |
| 99 | // Wrap registers a Wrapper. Multiple calls accumulate; the host |
| 100 | // composes them in registration order (outermost first). |