improve fscript

This commit is contained in:
lixianjing 2020-12-10 15:57:12 +08:00
parent b901b67321
commit 4fa69ce0d9
4 changed files with 52 additions and 5 deletions

View File

@ -1,6 +1,7 @@
# 最新动态
2020/12/10
* 完善fscript增加函数seq。
* 增加函数fs\_file\_read\_line。
* 优化融合算法针对目标位图为非 cache 的情况(感谢智明提供补丁)
* 修改窗口设置字体管理器和图片管理器不正常的问题(感谢智明提供补丁)

View File

@ -196,6 +196,35 @@ print(join(",", a, b))
noop()
```
#### seq
> 把组合多条语句组合成一条语句。方便在if语句中执行多条语句。
----------------------------
##### 原型
```
seq(s1, s2, s3, ...)
```
示例
```js
if(
msg.topic == "eof",
seq(
print(msg.topic),
set(aborted, true),
#("文件读取完毕,关闭定时器"),
set(flow.timer.enable, false)
),
seq(
print(str(msg.payload, true)),
set(msg.payload, toupper(str(msg.payload, true)))
)
)
```
#### if
> 条件执行。如果第一个参数为 true执行第二个参数否则执行第三个参数。
@ -442,13 +471,16 @@ float("123")
##### 原型
```
str(var)
str(var [,force_pointer_as_str])
```
> force\_pointer\_as\_str 如果输入参数是POINTER类型是否将强制转换成字符串。
#### 示例
```
str(int(123))
str(msg.payload, true)
```
#### iformat

View File

@ -1073,9 +1073,22 @@ static ret_t func_float(fscript_t* fscript, fscript_args_t* args, value_t* resul
static ret_t func_str(fscript_t* fscript, fscript_args_t* args, value_t* result) {
str_t* str = &(fscript->str);
return_value_if_fail(args->size == 1, RET_BAD_PARAMS);
str_from_value(str, args->args);
value_set_str(result, str->str);
return_value_if_fail(args->size >= 1, RET_BAD_PARAMS);
if(args->args->type == VALUE_TYPE_POINTER) {
bool_t force_pointer_as_str = args->size == 2 && value_bool(args->args+1);
if(force_pointer_as_str) {
value_set_str(result, (const char*)value_pointer(args->args));
} else {
char buff[16];
tk_snprintf(buff, sizeof(buff)-1, "%p", value_pointer(args->args));
str_set(str, buff);
value_set_str(result, str->str);
}
} else {
str_from_value(str, args->args);
value_set_str(result, str->str);
}
return RET_OK;
}
@ -1668,6 +1681,7 @@ static const func_entry_t s_builtin_funcs[] = {
{"mul", func_mul, 2},
{"#", func_noop, 0},
{"noop", func_noop, 0},
{"seq", func_noop, 4},
{"not", func_not, 1},
{"or", func_or, 2},
{"random", func_random, 2},

View File

@ -22,7 +22,7 @@
BEGIN_C_DECLS
#define FSCRIPT_MAX_ARGS 8
#define FSCRIPT_MAX_ARGS 32
/**
* @class fscript_args_t