2022-07-04 18:08:10 +08:00
|
|
|
// Package filter ...
|
|
|
|
//
|
|
|
|
// Description : filter ...
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 2022-07-04 18:02
|
|
|
|
package filter
|
|
|
|
|
2022-07-05 15:07:54 +08:00
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"git.zhangdeman.cn/zhangdeman/util"
|
|
|
|
)
|
2022-07-05 14:13:28 +08:00
|
|
|
|
2022-07-04 18:08:10 +08:00
|
|
|
// jsonNode json语法树节点定义
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 18:06 2022/7/4
|
|
|
|
type jsonNode struct {
|
2022-07-05 14:13:28 +08:00
|
|
|
Name string // 节点名称
|
|
|
|
Parent *jsonNode // 父节点
|
|
|
|
Son *jsonNode // 子节点
|
|
|
|
PreBrother *jsonNode // 前一个兄弟节点
|
|
|
|
NextBrother *jsonNode // 下一个兄弟节点
|
|
|
|
Val interface{} // 节点的值
|
2022-07-05 17:02:53 +08:00
|
|
|
Type string // 数据类型
|
2022-07-04 18:08:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// lexicalNode 词法分析的节点
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 18:02 2022/7/4
|
|
|
|
type lexicalNode struct {
|
2022-07-05 15:07:54 +08:00
|
|
|
Val interface{} // 词法分析出来的词
|
|
|
|
Type string // 值得类型
|
|
|
|
Show bool // 这个值是否对外呈现
|
|
|
|
IsToken bool // 是否为关键字
|
|
|
|
OutputFormat string // 对外输出的格式
|
2022-07-05 14:13:28 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// ValStr 值转为字符串
|
|
|
|
//
|
|
|
|
// Author : go_developer@163.com<白茶清欢>
|
|
|
|
//
|
|
|
|
// Date : 14:10 2022/7/5
|
|
|
|
func (l *lexicalNode) ValStr() string {
|
2022-07-05 15:07:54 +08:00
|
|
|
if l.Type == "number" {
|
|
|
|
var str string
|
|
|
|
_ = util.ConvertAssign(&str, l.Val)
|
|
|
|
return str
|
|
|
|
}
|
2022-07-05 14:13:28 +08:00
|
|
|
return fmt.Sprintf("%v", l.Val)
|
2022-07-04 18:08:10 +08:00
|
|
|
}
|
2022-07-05 17:02:53 +08:00
|
|
|
|
|
|
|
const (
|
|
|
|
// NodeTypeNumber 数据类型
|
|
|
|
NodeTypeNumber = "number"
|
|
|
|
// NodeTypeBool bool 类型
|
|
|
|
NodeTypeBool = "bool"
|
|
|
|
// NodeTypeString 字符串类型
|
|
|
|
NodeTypeString = "string"
|
|
|
|
// NodeTypeObject kv 对象类型
|
|
|
|
NodeTypeObject = "object"
|
|
|
|
// NodeTypeList list类型
|
|
|
|
NodeTypeList = "list"
|
|
|
|
)
|