Skip to content

Commit

Permalink
update README_zh.md
Browse files Browse the repository at this point in the history
  • Loading branch information
liangyaopei committed Apr 16, 2021
1 parent 6a1e8dc commit 86cab2f
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 28 deletions.
36 changes: 8 additions & 28 deletions README_zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ go get -u github.com/liangyaopei/checker
- `fieldExpr`为点(.)分割的字段,先按照`.`的层级关系取值,再校验。

按字段取值时,如果字段是指针,就取指针的值校验;如果是空指针,则视为没有通过校验。
如果需要判断空指针,可以使用特殊的规则`Nil`

来自`checker_test.go`的例子:
```go
Expand Down Expand Up @@ -71,6 +72,9 @@ itemChecker := NewChecker()
itemChecker.Add(rule, "wrong item")
```

上面的代码中的`rule`变量,构成一个规则树。
![rule tree](rule_tree.png)

## 规则
`Rule`是一个接口,它有很多的实现。`Rule`的实现可以分为复合规则和单个规则。

Expand Down Expand Up @@ -153,33 +157,7 @@ itemChecker.Add(rule, "wrong item")

#### 自定义规则

除了以上已有规则,用户还可以通过实现`Rule`接口,实现特殊的规则。

下面的例子来自`customized_rule_test.go`, 来校验`fieldExpr`是否为空指针(同样的功能可以使用`Nil`规则实现)。

```go
type customizedRule struct {
fieldExpr string

name string
}

func (r customizedRule) Check(param interface{}) (bool, string) {
exprValue, kind := fetchField(param, r.fieldExpr)
if kind == reflect.Invalid {
return false,
fmt.Sprintf("[%s]:'%s' cannot be found", r.name, r.fieldExpr)
}
if exprValue != nil {
return false,
fmt.Sprintf("[%s]:'%s' should not be nil", r.name, r.fieldExpr)
}
return true, ""
}

ch := NewChecker()
ch.Add(customRule, "invalid ptr")
```
除了以上已有规则,用户还可以使用把校验函数传给`Custom`,实现自定义规则,参考[例子](_example/custom/main.go).



Expand All @@ -188,4 +166,6 @@ ch.Add(customRule, "invalid ptr")
`Checker`是一个接口

- `Add(rule Rule, prompt string)`: 添加规则,和没有通过规则是的错误提示。
- `Check(param interface{}) (bool, string, string)`: 校验参数,依次返回是否通过校验,错误提示,错误日志。错误日志包含哪个字段没有通过哪个规则的信息。
- `Check(param interface{}) (bool, string, string)`: 校验参数,依次返回是否通过校验,错误提示,错误日志。错误日志包含哪个字段没有通过哪个规则的信息。

## 错误日志和自定义错误提示
Binary file added rule_tree.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 86cab2f

Please sign in to comment.