package
1.0.4
Repository: https://github.com/jmniu/workflow.git
Documentation: pkg.go.dev

# README

expression 表达式解析模块

使用说明


    import (
        "github.com/jmniu/workflow/expression"
    )
    // db 为已经初始化后的数据库连接
    sql.Reg(db)

    exp := expression.CreateExecer("")
    // sql 表示成当前目录下开始导入 sql/sql.ql脚本,如果
    exp.ScriptImportAlias("sql/sql.ql", "sql")

    // 这样就可以在脚本中使用 sql.Query(query,args...) sql.Count(query,args...) sql.One(query,args...) 三个函数
    // 也可以使用sqlctx.QueryDB(ctx,db,query,args) sqlctx.CountDB(ctx,db,query,args) sqlctx.OneDB(ctx,db,query,args)
    // 也可以使用sqlctx.Query(ctx,query,args) sqlctx.Count(ctx,query,args) sqlctx.One(ctx,query,args)


	exp.PredefinedJson("global", map[string]interface{}{
		"test_1": 1,
		"test_a": "a",
	})
	exp.PredefinedVar("fun1", `fn(a ) {
		return 1==a
	}`)
	exp.PredefinedVar("fun2", `fn(a ) {
		return 1==a
    }`)

    ectx := expression.CreateExpContext(context.Background())

	ectx.AddVar("ctx_10", 10)
	ectx.AddVar("ctx_a", "a")

	out, err :=exp.Exec(ectx, "1+1")
	if err != nil {
        //return 0, err
        // TODO
    }
    // 打印输出2
    fmt.Println(out.Int())

    out, err :=exp.Exec(ectx, "ctx_10*10")
    if err != nil {
        //return 0, err
        // TODO
    }

    // 打印输出10
    fmt.Println(out.Int())

    out, err =exp.Exec(ectx, `sql.Count("select * from table")`)
    if err != nil {
        //return 0, err
        // TODO
    }

    // 打印输出查询到的表记录数量
    fmt.Println(out.Int())

    out, err:=exp.Exec(ectx, `SliceStr(sql.Query("select name from table"),"name")`)
    if err != nil {
        //return 0, err
        // TODO
    }

    // 打印输出查询到的表记录数量
    fmt.Println(out.SliceStr())
    out, err:=exp.Exec(ectx, `sql.querySliceStr("select name from table","name")`)
    if err != nil {
        //return 0, err
        // TODO
    }

    // 打印输出查询到的表记录数量
    fmt.Println(out.SliceStr())

# Packages

No description provided by the author
No description provided by the author

# Functions

Bool 返回布尔值.
CreateExecer 创建表达式执行器.
CreateExpContext 创建一个ExpContext 实现了context.Context接口.
CreateExpContextByDB 创建含有DB的ctx.
Exec 执行表达式.
ExecBool 执行表达式返回布尔值.
ExecParam 执行表达式.
ExecParamBool 执行表达式 返回布尔型.
ExecParamSliceStr 执行表达式,返回字符串切片.
ExecPredefineVar 执行表达式,传入预编译参数.
ExecPredefineVarBool 执行表达式,传入预编译参数 返回布尔值.
ExecPredefineVarSliceStr 执行表达式,传入预编译参数 返回字符串切片.
FromExpContextForDB 从ctx中获取*sql.DB.
GlobalImport 全局导入模块扩展 同一模块只能被导入一次,多次导入会导致panic.
ScriptImport 设置导入脚本模块.
ScriptImportAlias 设置导入脚本模块 并定义别名.
SetLibs 修改默认脚本库目录.
SliceStr 返回字符串切片.

# Structs

OutData 输出数据.

# Interfaces

Execer 表达式执行器.
ExpContext 表达式上下文 ,实现 context.Context接口.
No description provided by the author