Documentation
¶
Overview ¶
Package internal provides shared helpers used by api/rest and api/events. It is not part of the public API and must not be imported by any non-api package.
Template variable parsing ¶
ParseTemplateVars parses `{varName}` placeholders from a path or topic template and returns the set of variable names. Used by builders to validate [PathParam] and [TopicParam] names against the template at [Register] time.
StripTemplateVars replaces `{varName}` placeholders with `x` before builder-level codec validation — ensuring constraints work correctly on parameterised templates.
BuildFromTemplate substitutes concrete variable values into a template, validating each value against its registered codec. Used by [BuildPath] and [BuildTopic].
Index ¶
Constants ¶
This section is empty.
Variables ¶
var TemplateVarRe = regexp.MustCompile(`\{([^}]+)\}`)
TemplateVarRe matches {varName} placeholders in path or topic templates.
Functions ¶
func BuildFromTemplate ¶
func BuildFromTemplate( template string, vars map[string]string, paramCodecs map[string]*codex.Codec[string], wrapMissing func(name string) error, wrapErr func(name, value string, err error) error, ) (string, error)
from vars, validating each against the corresponding codec in paramCodecs. wrapMissing is called to produce a typed error when a template variable has no entry in vars. wrapErr is called to produce a typed error when codec validation fails.
func ParseTemplateVars ¶
ParseTemplateVars returns the set of variable names (without braces) found in a path or topic template such as "/users/{id}/posts/{postId}".
func StripTemplateVars ¶ added in v0.5.0
StripTemplateVars replaces each {varName} placeholder in template with the literal segment placeholder (the single character "x"). The result has the same structural shape as the template but contains no brace syntax.
This is used internally to make path/topic codec validation template-transparent: constraints run on the shape of the path/topic, not on the literal {varName} tokens.
Types ¶
This section is empty.