Documentation
¶
Overview ¶
Package filter 过滤器
包中的各个功能之间的关系如下:
|---[Sanitize] | [FilterFunc]---[FilterFuncOf]-|---[RuleFuncOf]-|---[localeutil.LocaleStringer] | |---[Validator]
调用者可以提前声明 FilterFuncOf 实例,在需要时调用 FilterFuncOf 实例, 生成一个类型无关的方法 FilterFunc 传递给 [server.FilterProblem]。 这样可以绕过 Go 不支持泛型方法的尴尬。
Sanitize ¶
数据修正发生成数据验证之前,其函数原型为:
func(*T)
指针传入数据,实现方可以对指向的数据进行修改。 sanitizer 提供了一些通用的实现;
Validator ¶
验证器只负责验证数据,其原型为:
func(T)bool
返回值表示是否符合当前函数的需求。 validator 提供了一些通用的实现;
Rule ¶
这是验证器与提示信息的结合,当不符合当前规则所包含的验证器需求时,返回对应的错误信息。
Index ¶
- type FilterFunc
- type FilterFuncOf
- func New[T any](rule RulerFuncOf[T], s ...func(*T)) FilterFuncOf[T]
- func NewFromVS[T any](msg localeutil.LocaleStringer, v func(T) bool, s ...func(*T)) FilterFuncOf[T]
- func NewMap[K comparable, V any, M ~map[K]V](rule RulerFuncOf[M], s ...func(*V)) FilterFuncOf[M]
- func NewSlice[T any, S ~[]T](rule RulerFuncOf[S], s ...func(*T)) FilterFuncOf[S]
- type RulerFuncOf
- func NewMapRule[K comparable, V any, M ~map[K]V](v func(V) bool, msg localeutil.LocaleStringer) RulerFuncOf[M]
- func NewMapRules[K comparable, V any, M ~map[K]V](r ...RulerFuncOf[V]) RulerFuncOf[M]
- func NewRule[T any](v func(T) bool, msg localeutil.LocaleStringer) RulerFuncOf[T]
- func NewRules[T any](r ...RulerFuncOf[T]) RulerFuncOf[T]
- func NewSliceRule[T any, S ~[]T](v func(T) bool, msg localeutil.LocaleStringer) RulerFuncOf[S]
- func NewSliceRules[T any, S ~[]T](r ...RulerFuncOf[T]) RulerFuncOf[S]
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FilterFunc ¶
type FilterFunc func() (string, localeutil.LocaleStringer)
FilterFunc 过滤器
当前方法由 FilterFuncOf 生成,验证的数据也有其提供, 但是只有在调用当前方法时才真正对数据进行验证。 如果符合要求返回 "", nil,否则返回字段名和错误信息。
type FilterFuncOf ¶ added in v0.76.0
type FilterFuncOf[T any] func(name string, v *T) FilterFunc
FilterFuncOf 生成某类型的过滤器
name 字段名,对于切片等类型会返回带下标的字段名; v 必须是指针类型,否则无法对其内容进行修改;
func New ¶
func New[T any](rule RulerFuncOf[T], s ...func(*T)) FilterFuncOf[T]
New 返回生成 FilterFunc 的方法
s 表示对字段 v 的一些清理,比如去除空白字符等,如果指定了此参数,会在 rule 之前执行;
func NewFromVS ¶ added in v0.76.0
func NewFromVS[T any](msg localeutil.LocaleStringer, v func(T) bool, s ...func(*T)) FilterFuncOf[T]
NewFromVS 返回生成 FilterFunc 的方法
msg 和 v 组成验证规则; s 表示对字段 v 的一些清理,比如去除空白字符等,如果指定了此参数,会在 rule 之前执行;
func NewMap ¶ added in v0.80.0
func NewMap[K comparable, V any, M ~map[K]V](rule RulerFuncOf[M], s ...func(*V)) FilterFuncOf[M]
NewSlice 针对 map 键值的过滤器
func NewSlice ¶ added in v0.80.0
func NewSlice[T any, S ~[]T](rule RulerFuncOf[S], s ...func(*T)) FilterFuncOf[S]
NewSlice 针对切片元素的过滤器
type RulerFuncOf ¶
type RulerFuncOf[T any] func(string, T) (string, localeutil.LocaleStringer)
RulerFuncOf 数据验证规则
这是验证器与错误信息的组合。
传递参数为字段名与需要验证的值; 返回字段名和错误信息,如果验证成功,则返回两个空值;
func NewMapRule ¶
func NewMapRule[K comparable, V any, M ~map[K]V](v func(V) bool, msg localeutil.LocaleStringer) RulerFuncOf[M]
NewMapRule 声明验证 map 元素的规则
func NewMapRules ¶
func NewMapRules[K comparable, V any, M ~map[K]V](r ...RulerFuncOf[V]) RulerFuncOf[M]
func NewRule ¶
func NewRule[T any](v func(T) bool, msg localeutil.LocaleStringer) RulerFuncOf[T]
func NewRules ¶
func NewRules[T any](r ...RulerFuncOf[T]) RulerFuncOf[T]
NewRules 将多个规则合并为一个
按顺序依次验证,直接碰到第一个验证不过的。
func NewSliceRule ¶
func NewSliceRule[T any, S ~[]T](v func(T) bool, msg localeutil.LocaleStringer) RulerFuncOf[S]
NewSliceRule 声明用于验证切片元素的规则
func NewSliceRules ¶
func NewSliceRules[T any, S ~[]T](r ...RulerFuncOf[T]) RulerFuncOf[S]