Documentation
¶
Index ¶
- Variables
- func NewDataDictTranslator(resolver mold.DataDictResolver) mold.Translator
- func NewTransformer(fieldTransformers []mold.FieldTransformer, ...) mold.Transformer
- func NewTranslateTransformer(translators []mold.Translator) mold.FieldTransformer
- type DataDictTranslator
- type ErrInvalidTag
- type ErrInvalidTransformValue
- type ErrInvalidTransformation
- type ErrUndefinedTag
- type MoldFieldLevel
- type MoldStructLevel
- type MoldTransformer
- func (t *MoldTransformer) Field(ctx context.Context, v any, tags string) error
- func (t *MoldTransformer) Register(tag string, fn mold.Func)
- func (t *MoldTransformer) RegisterAlias(alias, tags string)
- func (t *MoldTransformer) RegisterInterceptor(fn mold.InterceptorFunc, types ...any)
- func (t *MoldTransformer) RegisterStructLevel(fn mold.StructLevelFunc, types ...any)
- func (t *MoldTransformer) Struct(ctx context.Context, v any) error
- type TranslateTransformer
Constants ¶
This section is empty.
Variables ¶
var ( // ErrInvalidDive describes an invalid dive tag configuration. ErrInvalidDive = errors.New("invalid dive tag configuration") // ErrUndefinedKeysTag describes an undefined keys tag when endkeys tag is defined. ErrUndefinedKeysTag = errors.New("'" + endKeysTag + "' tag encountered without a corresponding '" + keysTag + "' tag") // ErrInvalidKeysTag describes a misuse of the keys tag. ErrInvalidKeysTag = errors.New("'" + keysTag + "' tag must be immediately preceded by the '" + diveTag + "' tag") )
var ( // ErrTranslatedFieldNotFound is returned when the target translated field (e.g., StatusName) is not found. ErrTranslatedFieldNotFound = errors.New("target translated field not found") // ErrTranslationKindEmpty is returned when the translation kind parameter is missing. ErrTranslationKindEmpty = errors.New("translation kind parameter is empty") // ErrTranslatedFieldNotSettable is returned when the target translated field cannot be set. ErrTranslatedFieldNotSettable = errors.New("target translated field is not settable") // ErrNoTranslatorSupportsKind is returned when no translator supports the given kind. ErrNoTranslatorSupportsKind = errors.New("no translator supports the given kind") // ErrUnsupportedFieldType is returned when the field type is not supported for translation. ErrUnsupportedFieldType = errors.New("unsupported field type for translation") )
var ErrDataDictResolverNotConfigured = errors.New("data dictionary resolver is not configured, please provide one in the container")
ErrDataDictResolverNotConfigured is returned when DataDictResolver is not provided.
var Module = fx.Module( "vef:mold", fx.Decorate( fx.Annotate( func(loader mold.DataDictLoader, bus event.Subscriber) mold.DataDictResolver { if loader == nil { return nil } return mold.NewCachedDataDictResolver(loader, bus) }, fx.ParamTags(`optional:"true"`), ), ), fx.Provide( fx.Annotate( NewTransformer, fx.ParamTags(`group:"vef:mold:field_transformers"`, `group:"vef:mold:struct_transformers"`, `group:"vef:mold:interceptors"`), ), fx.Annotate( NewTranslateTransformer, fx.ParamTags(`group:"vef:mold:translators"`), fx.ResultTags(`group:"vef:mold:field_transformers"`), ), fx.Annotate( NewDataDictTranslator, fx.ParamTags(`optional:"true"`), fx.ResultTags(`group:"vef:mold:translators"`), ), ), )
Module defines the fx module for the transformer package.
Functions ¶
func NewDataDictTranslator ¶
func NewDataDictTranslator(resolver mold.DataDictResolver) mold.Translator
NewDataDictTranslator creates a data dictionary translator instance.
func NewTransformer ¶
func NewTransformer(fieldTransformers []mold.FieldTransformer, structTransformers []mold.StructTransformer, interceptors []mold.Interceptor) mold.Transformer
NewTransformer creates a new transformer instance, integrating all registered transformers and interceptors.
func NewTranslateTransformer ¶
func NewTranslateTransformer(translators []mold.Translator) mold.FieldTransformer
NewTranslateTransformer creates a translate transformer instance.
Types ¶
type DataDictTranslator ¶
type DataDictTranslator struct {
// contains filtered or unexported fields
}
DataDictTranslator is a data dictionary translator that converts code values to readable names.
func (*DataDictTranslator) Supports ¶
func (*DataDictTranslator) Supports(kind string) bool
type ErrInvalidTag ¶
type ErrInvalidTag struct {
// contains filtered or unexported fields
}
ErrInvalidTag defines a bad value for a tag being used.
func (*ErrInvalidTag) Error ¶
func (e *ErrInvalidTag) Error() string
type ErrInvalidTransformValue ¶
type ErrInvalidTransformValue struct {
// contains filtered or unexported fields
}
ErrInvalidTransformValue describes an invalid argument passed to Struct or Field.
func (*ErrInvalidTransformValue) Error ¶
func (e *ErrInvalidTransformValue) Error() string
type ErrInvalidTransformation ¶
type ErrInvalidTransformation struct {
// contains filtered or unexported fields
}
ErrInvalidTransformation describes an invalid argument passed to Struct or Field.
func (*ErrInvalidTransformation) Error ¶
func (e *ErrInvalidTransformation) Error() string
type ErrUndefinedTag ¶
type ErrUndefinedTag struct {
// contains filtered or unexported fields
}
ErrUndefinedTag defines a tag that does not exist.
func (*ErrUndefinedTag) Error ¶
func (e *ErrUndefinedTag) Error() string
type MoldFieldLevel ¶
type MoldFieldLevel struct {
// contains filtered or unexported fields
}
func (MoldFieldLevel) Field ¶
func (f MoldFieldLevel) Field() reflect.Value
func (MoldFieldLevel) Name ¶
func (f MoldFieldLevel) Name() string
func (MoldFieldLevel) Param ¶
func (f MoldFieldLevel) Param() string
func (MoldFieldLevel) Parent ¶
func (f MoldFieldLevel) Parent() reflect.Value
func (MoldFieldLevel) SiblingField ¶
func (f MoldFieldLevel) SiblingField(name string) (reflect.Value, bool)
func (MoldFieldLevel) Transformer ¶
func (f MoldFieldLevel) Transformer() mold.Transformer
type MoldStructLevel ¶
type MoldStructLevel struct {
// contains filtered or unexported fields
}
func (MoldStructLevel) Parent ¶
func (s MoldStructLevel) Parent() reflect.Value
func (MoldStructLevel) Struct ¶
func (s MoldStructLevel) Struct() reflect.Value
func (MoldStructLevel) Transformer ¶
func (s MoldStructLevel) Transformer() mold.Transformer
type MoldTransformer ¶
type MoldTransformer struct {
// contains filtered or unexported fields
}
MoldTransformer is the base controlling object which contains all necessary information.
func New ¶
func New() *MoldTransformer
New creates a new Transform object with default tag name of 'mold'.
func (*MoldTransformer) Register ¶
func (t *MoldTransformer) Register(tag string, fn mold.Func)
Register adds a transformation with the given tag.
NOTE: This method is not thread-safe; register all transformations before use.
func (*MoldTransformer) RegisterAlias ¶
func (t *MoldTransformer) RegisterAlias(alias, tags string)
RegisterAlias registers a mapping of a single transform tag that defines a common or complex set of transformations.
NOTE: This method is not thread-safe; register all aliases before use.
func (*MoldTransformer) RegisterInterceptor ¶
func (t *MoldTransformer) RegisterInterceptor(fn mold.InterceptorFunc, types ...any)
RegisterInterceptor registers interceptor functions against one or more types. InterceptorFunc allows intercepting incoming values to redirect modifications to an inner type/value.
func (*MoldTransformer) RegisterStructLevel ¶
func (t *MoldTransformer) RegisterStructLevel(fn mold.StructLevelFunc, types ...any)
RegisterStructLevel registers a StructLevelFunc against a number of types.
NOTE: This method is not thread-safe; register all struct-level functions before use.
type TranslateTransformer ¶
type TranslateTransformer struct {
// contains filtered or unexported fields
}
TranslateTransformer is a translator-based transformer that converts values to readable names Supports multiple translators and delegates to the appropriate one based on translation kind (from tag parameters).
func (*TranslateTransformer) Tag ¶
func (*TranslateTransformer) Tag() string
Tag returns the transformer tag name "translate".
func (*TranslateTransformer) Transform ¶
func (t *TranslateTransformer) Transform(ctx context.Context, fl mold.FieldLevel) error
Transform executes translation transformation logic Gets translation kind from tag parameter and field value, then converts through appropriate translator.