filter

package
v0.80.1 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2023 License: MIT Imports: 3 Imported by: 14

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

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]

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳