Skip to content

Make sse.PatchElement* sugars more generic#18

Open
michaeldebetaz wants to merge 1 commit into
starfederation:mainfrom
michaeldebetaz:patch-element-sugar
Open

Make sse.PatchElement* sugars more generic#18
michaeldebetaz wants to merge 1 commit into
starfederation:mainfrom
michaeldebetaz:patch-element-sugar

Conversation

@michaeldebetaz
Copy link
Copy Markdown

This PR add generic functions PatchElementRenderer (for Gostar or Gomponent) and PatchElementRendererWithContext (for Templ). Original PatchElementTempl and PatchElementGostar are kept but defined as convenience wrappers of those generic functions.

This allows to have more generic functions while keeping wrappers for named libraries which come and go.

Example for Templ:

// PatchElementRendererWithContext is a convenience adaptor of [sse.PatchElements] for [ElementRendererWithContext].
func (sse *ServerSentEventGenerator) PatchElementRendererWithContext(r ElementRendererWithContext, opts ...PatchElementOption) error {
	buf := bytebufferpool.Get()
	defer bytebufferpool.Put(buf)
	if err := r.Render(sse.Context(), buf); err != nil {
		return fmt.Errorf("failed to render element: %w", err)
	}
	if err := sse.PatchElements(buf.String(), opts...); err != nil {
		return fmt.Errorf("failed to patch element: %w", err)
	}
	return nil
}
// PatchElementTempl is a convenience adaptor of [sse.PatchElements] for [Templ] components.
//
// [Templ]: https://templ.guide/
func (sse *ServerSentEventGenerator) PatchElementTempl(r ElementRendererWithContext, opts ...PatchElementOption) error {
	return sse.PatchElementRendererWithContext(r, opts...)
}

@bencroker bencroker requested a review from delaneyj April 26, 2026 17:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant