Documentation
¶
Overview ¶
templateval is a comprehensive Go library for validating template variables with strong typing support.
It provides flexible validation for all Go types including basic types, structs, interfaces, functions, slices, maps, and more.
Index ¶
- func InterfaceType[T any](sample T) reflect.Type
- func TypeOf[T any](sample T) reflect.Type
- type FieldRule
- type TemplateRegistry
- func (r *TemplateRegistry) Clear()
- func (r *TemplateRegistry) GetValidator(name string) (*TemplateValidator, bool)
- func (r *TemplateRegistry) HasTemplate(name string) bool
- func (r *TemplateRegistry) ListTemplates() []string
- func (r *TemplateRegistry) Register(name string, validator *TemplateValidator)
- func (r *TemplateRegistry) Unregister(name string)
- func (r *TemplateRegistry) Validate(name string, variables map[string]any) error
- func (r *TemplateRegistry) ValidatePartial(name string, variables map[string]any) error
- type TemplateValidator
- func (v *TemplateValidator) AddRule(fieldName string, fieldType reflect.Type, required bool, ...) *TemplateValidator
- func (v *TemplateValidator) Clone() *TemplateValidator
- func (v *TemplateValidator) GetRule(fieldName string) (FieldRule, bool)
- func (v *TemplateValidator) HasRule(fieldName string) bool
- func (v *TemplateValidator) ListFields() []string
- func (v *TemplateValidator) Optional(fieldName string, fieldType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalBool(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalChan(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalFunc(fieldName string, funcType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalInt(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalInterface(fieldName string, interfaceType reflect.Type, ...) *TemplateValidator
- func (v *TemplateValidator) OptionalMap(fieldName string, keyType, valueType reflect.Type, ...) *TemplateValidator
- func (v *TemplateValidator) OptionalOf(fieldName string, sample any, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalPointer(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalSlice(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalString(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) OptionalStruct(fieldName string, structType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RemoveRule(fieldName string) *TemplateValidator
- func (v *TemplateValidator) Required(fieldName string, fieldType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredBool(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredChan(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredFunc(fieldName string, funcType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredInt(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredInterface(fieldName string, interfaceType reflect.Type, ...) *TemplateValidator
- func (v *TemplateValidator) RequiredMap(fieldName string, keyType, valueType reflect.Type, ...) *TemplateValidator
- func (v *TemplateValidator) RequiredOf(fieldName string, sample any, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredPointer(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredSlice(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredString(fieldName string, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) RequiredStruct(fieldName string, structType reflect.Type, customValidator ...func(any) error) *TemplateValidator
- func (v *TemplateValidator) Validate(variables map[string]any) error
- func (v *TemplateValidator) ValidatePartial(variables map[string]any) error
- type ValidationError
- type ValidationErrors
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func InterfaceType ¶
Helper function to create interface type
Types ¶
type FieldRule ¶
type FieldRule struct {
Type reflect.Type // Type of the field.
Required bool // Whether this field is required or not
Validator func(any) error // Optional custom validator function
}
FieldRule defines validation rules for a template variable
type TemplateRegistry ¶
type TemplateRegistry struct {
// contains filtered or unexported fields
}
TemplateRegistry manages validators for multiple templates
func (*TemplateRegistry) Clear ¶
func (r *TemplateRegistry) Clear()
Clear removes all registered validators
func (*TemplateRegistry) GetValidator ¶
func (r *TemplateRegistry) GetValidator(name string) (*TemplateValidator, bool)
GetValidator returns the validator for a template
func (*TemplateRegistry) HasTemplate ¶
func (r *TemplateRegistry) HasTemplate(name string) bool
HasTemplate checks if a template is registered
func (*TemplateRegistry) ListTemplates ¶
func (r *TemplateRegistry) ListTemplates() []string
ListTemplates returns all registered template names
func (*TemplateRegistry) Register ¶
func (r *TemplateRegistry) Register(name string, validator *TemplateValidator)
Register adds a validator for a template. If template is an empty string, it will panic. if validator is nil, no registration will happen.
func (*TemplateRegistry) Unregister ¶
func (r *TemplateRegistry) Unregister(name string)
Unregister removes a validator for a template
func (*TemplateRegistry) Validate ¶
func (r *TemplateRegistry) Validate(name string, variables map[string]any) error
Validate validates variables for a specific template
func (*TemplateRegistry) ValidatePartial ¶
func (r *TemplateRegistry) ValidatePartial(name string, variables map[string]any) error
ValidatePartial validates variables partially for a specific template
type TemplateValidator ¶
type TemplateValidator struct {
// contains filtered or unexported fields
}
TemplateValidator validates template variables against defined rules
func NewValidator ¶
func NewValidator() *TemplateValidator
NewValidator creates a new template validator
func (*TemplateValidator) AddRule ¶
func (v *TemplateValidator) AddRule(fieldName string, fieldType reflect.Type, required bool, customValidator ...func(any) error) *TemplateValidator
AddRule adds a validation rule for a field with optional custom validator
func (*TemplateValidator) Clone ¶
func (v *TemplateValidator) Clone() *TemplateValidator
Clone creates a deep copy of the validator
func (*TemplateValidator) GetRule ¶
func (v *TemplateValidator) GetRule(fieldName string) (FieldRule, bool)
GetRule returns the rule for a field
func (*TemplateValidator) HasRule ¶
func (v *TemplateValidator) HasRule(fieldName string) bool
HasRule checks if a rule exists for the given field
func (*TemplateValidator) ListFields ¶
func (v *TemplateValidator) ListFields() []string
ListFields returns all field names that have rules
func (*TemplateValidator) Optional ¶
func (v *TemplateValidator) Optional(fieldName string, fieldType reflect.Type, customValidator ...func(any) error) *TemplateValidator
Optional adds an optional field rule for any type
func (*TemplateValidator) OptionalBool ¶
func (v *TemplateValidator) OptionalBool(fieldName string, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalChan ¶
func (v *TemplateValidator) OptionalChan(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalFunc ¶
func (v *TemplateValidator) OptionalFunc(fieldName string, funcType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalInt ¶
func (v *TemplateValidator) OptionalInt(fieldName string, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalInterface ¶
func (v *TemplateValidator) OptionalInterface(fieldName string, interfaceType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalMap ¶
func (v *TemplateValidator) OptionalMap(fieldName string, keyType, valueType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalOf ¶
func (v *TemplateValidator) OptionalOf(fieldName string, sample any, customValidator ...func(any) error) *TemplateValidator
OptionalOf adds an optional field rule using a sample value to infer type
func (*TemplateValidator) OptionalPointer ¶
func (v *TemplateValidator) OptionalPointer(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalSlice ¶
func (v *TemplateValidator) OptionalSlice(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalString ¶
func (v *TemplateValidator) OptionalString(fieldName string, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) OptionalStruct ¶
func (v *TemplateValidator) OptionalStruct(fieldName string, structType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RemoveRule ¶
func (v *TemplateValidator) RemoveRule(fieldName string) *TemplateValidator
RemoveRule removes a validation rule for a field
func (*TemplateValidator) Required ¶
func (v *TemplateValidator) Required(fieldName string, fieldType reflect.Type, customValidator ...func(any) error) *TemplateValidator
Required adds a required field rule for any type
func (*TemplateValidator) RequiredBool ¶
func (v *TemplateValidator) RequiredBool(fieldName string, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredChan ¶
func (v *TemplateValidator) RequiredChan(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredFunc ¶
func (v *TemplateValidator) RequiredFunc(fieldName string, funcType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredInt ¶
func (v *TemplateValidator) RequiredInt(fieldName string, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredInterface ¶
func (v *TemplateValidator) RequiredInterface(fieldName string, interfaceType reflect.Type, customValidator ...func(any) error) *TemplateValidator
Type-specific methods with validation
func (*TemplateValidator) RequiredMap ¶
func (v *TemplateValidator) RequiredMap(fieldName string, keyType, valueType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredOf ¶
func (v *TemplateValidator) RequiredOf(fieldName string, sample any, customValidator ...func(any) error) *TemplateValidator
RequiredOf adds a required field rule using a sample value to infer type
func (*TemplateValidator) RequiredPointer ¶
func (v *TemplateValidator) RequiredPointer(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredSlice ¶
func (v *TemplateValidator) RequiredSlice(fieldName string, elementType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) RequiredString ¶
func (v *TemplateValidator) RequiredString(fieldName string, customValidator ...func(any) error) *TemplateValidator
Convenience methods for common types
func (*TemplateValidator) RequiredStruct ¶
func (v *TemplateValidator) RequiredStruct(fieldName string, structType reflect.Type, customValidator ...func(any) error) *TemplateValidator
func (*TemplateValidator) Validate ¶
func (v *TemplateValidator) Validate(variables map[string]any) error
Validate checks the provided variables against the defined rules
func (*TemplateValidator) ValidatePartial ¶
func (v *TemplateValidator) ValidatePartial(variables map[string]any) error
ValidatePartial validates only the provided variables, ignoring missing required fields Useful for partial updates or progressive validation
type ValidationError ¶
type ValidationError struct {
Field string // Field name failing the calidation
Message string // Error message
}
ValidationError represents a validation failure
func (ValidationError) Error ¶
func (e ValidationError) Error() string
Implements the error interface.
type ValidationErrors ¶
type ValidationErrors []ValidationError
ValidationErrors is a collection of validation errors
func (ValidationErrors) Error ¶
func (ve ValidationErrors) Error() string
Implements the error interface.
func (ValidationErrors) GetFieldErrors ¶
func (ve ValidationErrors) GetFieldErrors(field string) []ValidationError
GetFieldErrors returns all errors for a specific field
func (ValidationErrors) HasField ¶
func (ve ValidationErrors) HasField(field string) bool
HasField checks if a specific field has validation errors