语法

数据源引用

操作符:&

在配置文件中input或ouput字段指定输入输出数据源,或在schema中做join查询时指定关联数据源信息。

例:
input: "&.json.order.json::id" /* 从数据库json定义的目录中读入order.json文件内容 */

output: "&.json.order.json::id" /* 数据输出到数据库json定义的目录的order.json文件中 */

output: "&.stdio.&1::id" /* 控制台输出 */

schema: {
    order_fee: ["$.order_id", "&.order.order_table::order_id", ":$.order_fee"] /* 用order_id关联查询order数据库的order_table,读取order_fee /*
}

指令调用

操作符:#

可用格式:
#<cmd>
[#<cmd>, <arg1>, <arg2>]
[#<cmd>, <arg1>, <arg2>, :<return_cmd>]

例:
#break /* foreach指令中中断循环 */
[#if, $.a, 1, 2] /* if指令,如果a的值为真则当前值为1, 否则为2 */
[#make, {"a": 1}, ":$.a"] /*构造一个hasb对象,并且返回key为a的值 */

详细可用指令列表及指令使用方式请看“指令格式”段落。

值读取

操作符:$

读取当前对象的属性值,当前对象可以是hash对象,也可以是数组。

例:
$.a /* 读取a的值 */
$.a.b /* 读取a的值,然后再读取a的b的值 */
$.a.:0 /* 读取a的值,然后读取数组a的索引0值 */
$.a|int /* 读取a的值,然后尝试转换为数字类型 */
$.* /* 读取当前整个值 */

返回值

操作符::

在指令调用中标识返回值或指令信息。

["$.a|int", "&.mysql.test::id", ":$.id"] /* 读取a的值关联查询mysql的test表id字段,然后返回test表的id的值 */
["$.a", ":$.:0"] /* 读取a的值,然后返回数组a的第一项值 */
["@add", 1, "$.a", [":@mul", "$.*", 4]] /* 读取a的值然后和1相加,接着再乘于4 */
["#foreach", "$.*|array", ["#make", {"a": "$.a"}], [
    ":@sum", "$.*|array", "a""
]] /* 循环当前数据然后构造一个{"a": "$.a"}的数组,最后求数组sum加和  */ 

预处理

操作符:%

在加载配置文件过程中用source配置中的相同名称的文件内容替换标啥。

过滤器

操作符:|

用于取值或计算表达式对结果进行格式化。

例:
$.a|int /* 读取a的值并格式化为数字 */
$.a.:0|string /* 读取值并格式化为字符串 */
["@add|string", 1, 2] /* 计算1+2并且把结果格式化为字符串 */
["$.a|int", "&.mysql.test::id", "$.created_at|datetime"] /* 读取a的值转化为数字后关联mysql的test表的id字段查询,然后读取查询结果的created_at并格式化为datetime */

详细可用指令列表及指令使用方式请看“过滤器”段落。

计算表达式

操作符:@

调用函数计算结果。

例:
["@add", 1, 2] /* 计算1+2 */
["@sum", "$.*|array", "num", [":@add", "$.*|int", 3]] /* 对数组求sum和,然后加3 */

引用输入参数

操作符:?

引用外部输入参数arguments的值,不在arguments声明则添加一个,运行时被替换。

例:
["?update_time__gte"] /* 引用update_time__gte */
["?status|int"] /* 引用status,类型时int型 */