指令

可以使用的指令格式说明,下文中带directive标识的都标识可支持使用新的完整指令列表。

每条指令格式下方数据作用域说明:

  • A' 读取值访问当前行
  • P' 读取值访问父级行,每一个 ' 往上访问一级
  • C' 读取值返回当前指令的结果数据
  • I' 读取值访问内部一值,如数组的每一个数据项
  • G' 读取值访问全局定义值

常量

常量值。

格式1:
<value>

格式2:
["#const", <value>]

读取值

读取当前数据值。

格式1:
$.<name>|<filter_name>
A'

格式2:
["$.<name>|<filter_name>", ":$.<child_name>"]
  A'          C'

父级数据访问

读取上层数据值。

格式1:
$$.<name>|<filter_name> /* 上一层数据 /*
P'

$$$.<name>|<filter_name> /* 上两层数据 /*
P''

/* n个$符号表示读取上n-1层数据 */

联表查询

格式1:
["$.<name>|<filter_name>", "&.<dabase_name>.<table_name>::<primary_key>", ":<child_directive>"]
A'                                                          C'

["$.<name>|<filter_name>", ["&.<dabase_name>.<table_name>::<primary_key>", {"<condition_name": "<condition_value>"}], ":<child_directive>"]
A'                                                                                                      C'

case条件分支

格式1:
{
    "#case": "<value_directive>",
    "<value>": "<child_directive>",
    ":<number>": "<child_directive>",
    "#end": "<child_directive>" #默认分支
}
A'

计算表达式

调用计算表达式,详细可用可看计算器一节,返回指令可选。

格式1:
["@<calculate_name>|<filter_name>", <args_directive...>, ":<child_directive>"]
                                    A'                    C'

make重构数据

重新构造数据结构,返回指令可选。


格式1:
["#make", "<value_directive>", ":<child_directive>"]
          A'                  C'

格式2:
["#make", {"<key_directive": "<value_directive>"}, ":<child_directive>"]
          A'                                      C'

格式3:
["#make", "[<value_directive...>]", ":<child_directive>"]
          A'                        C'

let通过值取值

读取key表达式的值,然后依据该值在当前数据读取值,返回指令可选。

格式1:
["#let", <key_directive>, ":<child_directive>"]
         A'                C'

yield迭代器

迭代器指令,可用于展开二级数组,当二级数组为空时即跳过改行数据,返回指令可选。

格式1:
["#yield", <value_directive>, ":<child_directive>"]
           A'                  C'

#value表达式返回一个数组,如果有child表达式,会对数组的每一项调用child表达式。

aggregate聚合计算

以key表达式的值进行分组聚合计算,其它值保留第一条数据的值。

格式1:
["#aggregate", <key_directive>, "<calculate_directive>"]
               A'               G'

#calculate表达式当前数据数据为以key表达式分组的全局值,当前行值为父级值,计算后值自动回写回全局值。

call自定义表达式

调用全局defines里定义好的指令,相同value值不会重复计算,返回指令可选。

格式1:
["#call", <define_name>, <value_directive>, ":<child_directive>"]
                         A'                  C'

assign全局变量赋值

读取全集variables里的值用于计算并回写回全局,例如全局序号生成,返回指令可选。

格式1:
["#assign", <variable_name>, <calculate_directive>, ":<child_directive>"]
                             G'                     C'

#注意:calculate表达式的输入值为全局变量值,当前行值为父级值。

lambda表达式

格式1:
["#lambda", <directive>]
            I'

foreach循环

选好value表达式返回数组,每一项输入calculate表达式返回填入新的数组,返回指令可选。

格式1:
["#foreach", <value_directive>, <calculate_directive>, ":<child_directive>"]
             A'                 I'                     C'

break跳出循环

在foreach的calculate指令中用于跳出,如果返回指令返回有效值则保留该值。

格式1:
["#break", ":<child_directive>"]
           A'

continue继续循环

在foreach的calculate指令中用于跳过,如果返回指令返回有效值则保留该值。

格式1:
["#continue", ":<child_directive>"]
              A'

if条件判断

if判断分支指令,返回指令可选。

格式1:
["#if", <value_directive>, "<true_directive>", "<false_directive>", ":<child_directive>"]
        A'                 A'                  A'                   C'

match匹配表达式

匹配指令,可以使用正则表达式匹配。

格式1:
{
    "#match": "<value_directive>",
    "/<regex>/": "<child_directive>",
    "#end": "<child_directive>" #默认分支
}
A'

state 引用当前状态值

引用状态管理器当前状态的值。

格式1:
["#state", "<calcucate_directive>", "<default_directive>", ":<return_directive>"]
A'         G'                       G'                     C'

cache 缓存操作

缓存操作,有缓存则加载缓存,没有则从执行加载语句,支持本地缓存和redis缓存。

格式1:
["#cache", "<cache_name>", "<key_directive>", "<calcucate_directive>", ":<return_directive>"]
A'                         A'                 A'                       C'