filter

package
v0.96.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2024 License: MIT Imports: 4 Imported by: 2

Documentation

Overview

Package filter 过滤器

包含了数据验证和数据修正两个功能。

各个类型之间的关系如下:

                           |---[Sanitize]
                           |
[Filter]---[Builder]----[Rule]
                           |
                           |---[Validator]

Sanitize 表示对数据的修正,其函数原型为:func(*T) 指针传入数据,实现方可以对指向的数据进行修改,可由 SSSMS 转换为 Rule

Validator 负责验证数据,其原型为:func(T)bool 返回值表示是否符合当前函数的需求,可由 VSVMV 转换为 Rule

webfilter 实现了一些常用的过滤器方法。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Test added in v0.88.0

func Test(exitAtError bool, p *localeutil.Printer, f ...Filter) map[string]string

Test 测试过滤器并返回错误信息

exitAtError 出现错误时是否直接跳过其它执行其它过滤器; p 用于转换错误信息的本地化信息;

func ToFieldError added in v0.93.0

func ToFieldError(f ...Filter) *config.FieldError

ToFieldError 将 Filter 返回的错误转换为 config.FieldError

若所有过滤器都没有返回错误信息,则此方法返回 nil。

Types

type Builder added in v0.88.0

type Builder[T any] func(name string, value *T) Filter

Builder 生成类型 T 的过滤器

name 字段名,对于切片等类型会返回带下标的字段名; v 必须是指针类型,否则无法对其内容进行修改;

当前函数的主要作用是将一个泛型函数转换为非泛型函数 Filter

func NewBuilder added in v0.88.0

func NewBuilder[T any](rule ...Rule[T]) Builder[T]

NewBuilder 声明 Builder

按参数的添加顺序依次执行。

type Filter added in v0.88.0

type Filter = func() (string, localeutil.Stringer)

Filter 过滤器函数类型

当前方法由 Builder 生成,验证的数据也由其提供, 但是只有在调用当前方法时才真正对数据进行验证。 如果符合要求返回 "", nil,否则返回字段名和错误信息。

func New

func New[T any](name string, value *T, rule ...Rule[T]) Filter

New 声明 Filter

name 和 value 为调用 Builder 的参数; rule 为声明 Builder 的参数;

type Rule added in v0.88.0

type Rule[T any] func(string, *T) (string, localeutil.Stringer)

Rule 对类型 T 的验证规则

传递参数为字段名与需要验证的值; 返回字段名和错误信息,如果验证成功,则返回两个空值;

func MS added in v0.88.0

func MS[M ~map[K]V, K comparable, V any](v func(*V)) Rule[M]

MS 将一组修正函数封装为 Rule 用以验证 map 的元素

func MV added in v0.88.0

func MV[M ~map[K]V, K comparable, V any](v func(V) bool, msg localeutil.Stringer) Rule[M]

MV 将验证器封装为 Rule 用以验证 map

v 用于验证键名和键值,两者可以有一个是空值,表示不需要验证,但不能都为空; msg 表示验证出错时的错误提示;

func S added in v0.88.0

func S[T any](f ...func(*T)) Rule[T]

S 将一组修正数据的函数封装为 Rule

func SS added in v0.88.0

func SS[S ~[]T, T any](f ...func(*T)) Rule[S]

SS 将一组修正函数封装为 Rule 用以验证切片的元素

func SV added in v0.88.0

func SV[S ~[]T, T any](v func(T) bool, msg localeutil.Stringer) Rule[S]

SV 将验证器封装为 Rule 用以验证切片元素

func V added in v0.88.0

func V[T any](f func(T) bool, msg localeutil.Stringer) Rule[T]

V 将验证器函数封装为 Rule

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL