Merge pull request #7991 from EMQ-YangM/add_rule_engine_func
feat: add rule engine function float2str/2
This commit is contained in:
commit
5806d5107f
|
@ -28,6 +28,7 @@ File format:
|
||||||
* SSL closed error bug fixed for redis client.
|
* SSL closed error bug fixed for redis client.
|
||||||
* Fix mqtt-sn client disconnected due to re-send a duplicated qos2 message
|
* Fix mqtt-sn client disconnected due to re-send a duplicated qos2 message
|
||||||
* rule-engine function hexstr2bin/1 support half byte
|
* rule-engine function hexstr2bin/1 support half byte
|
||||||
|
* add rule-engine function float2str/2, user can specify the float output precision.
|
||||||
|
|
||||||
* Improved resilience against autocluster partitioning during cluster
|
* Improved resilience against autocluster partitioning during cluster
|
||||||
startup. [#7876]
|
startup. [#7876]
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
%% Unless you know what you are doing, DO NOT edit manually!!
|
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||||
{VSN,
|
{VSN,
|
||||||
[{"4.3.9",
|
[{"4.3.9",
|
||||||
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{add_module,emqx_rule_date},
|
{add_module,emqx_rule_date},
|
||||||
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
||||||
|
@ -10,7 +11,8 @@
|
||||||
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{"4.3.8",
|
{"4.3.8",
|
||||||
[{add_module,emqx_rule_date},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{add_module,emqx_rule_date},
|
||||||
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_cli,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_cli,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
|
@ -134,7 +136,8 @@
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]}]},
|
||||||
{<<".*">>,[]}],
|
{<<".*">>,[]}],
|
||||||
[{"4.3.9",
|
[{"4.3.9",
|
||||||
[{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_events,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_funcs,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_registry,brutal_purge,soft_purge,[]},
|
||||||
|
@ -142,7 +145,8 @@
|
||||||
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_api,brutal_purge,soft_purge,[]},
|
||||||
{delete_module,emqx_rule_date}]},
|
{delete_module,emqx_rule_date}]},
|
||||||
{"4.3.8",
|
{"4.3.8",
|
||||||
[{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
[{load_module,emqx_rule_utils,brutal_purge,soft_purge,[]},
|
||||||
|
{load_module,emqx_rule_maps,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_engine_cli,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_engine_cli,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_sqltester,brutal_purge,soft_purge,[]},
|
||||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||||
|
|
|
@ -93,6 +93,7 @@
|
||||||
, bool/1
|
, bool/1
|
||||||
, int/1
|
, int/1
|
||||||
, float/1
|
, float/1
|
||||||
|
, float2str/2
|
||||||
, map/1
|
, map/1
|
||||||
, bin2hexstr/1
|
, bin2hexstr/1
|
||||||
, hexstr2bin/1
|
, hexstr2bin/1
|
||||||
|
@ -537,6 +538,9 @@ int(Data) ->
|
||||||
float(Data) ->
|
float(Data) ->
|
||||||
emqx_rule_utils:float(Data).
|
emqx_rule_utils:float(Data).
|
||||||
|
|
||||||
|
float2str(Float, Precision) ->
|
||||||
|
emqx_rule_utils:float2str(Float, Precision).
|
||||||
|
|
||||||
map(Data) ->
|
map(Data) ->
|
||||||
emqx_rule_utils:map(Data).
|
emqx_rule_utils:map(Data).
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@
|
||||||
|
|
||||||
%% type converting
|
%% type converting
|
||||||
-export([ str/1
|
-export([ str/1
|
||||||
|
, float2str/2
|
||||||
, bin/1
|
, bin/1
|
||||||
, bool/1
|
, bool/1
|
||||||
, int/1
|
, int/1
|
||||||
|
@ -265,6 +266,9 @@ str(List) when is_list(List) ->
|
||||||
end;
|
end;
|
||||||
str(Data) -> error({invalid_str, Data}).
|
str(Data) -> error({invalid_str, Data}).
|
||||||
|
|
||||||
|
float2str(Float, Precision) when is_float(Float) and is_integer(Precision)->
|
||||||
|
float_to_binary(Float, [{decimals, Precision}, compact]).
|
||||||
|
|
||||||
utf8_bin(Str) when is_binary(Str); is_list(Str) ->
|
utf8_bin(Str) when is_binary(Str); is_list(Str) ->
|
||||||
unicode:characters_to_binary(Str);
|
unicode:characters_to_binary(Str);
|
||||||
utf8_bin(Str) ->
|
utf8_bin(Str) ->
|
||||||
|
|
|
@ -125,6 +125,13 @@ t_float(_) ->
|
||||||
?assertError({invalid_number, {a, v}}, emqx_rule_funcs:float({a, v})),
|
?assertError({invalid_number, {a, v}}, emqx_rule_funcs:float({a, v})),
|
||||||
?assertError(_, emqx_rule_funcs:float("a")).
|
?assertError(_, emqx_rule_funcs:float("a")).
|
||||||
|
|
||||||
|
|
||||||
|
t_float2str(_) ->
|
||||||
|
?assertEqual(<<"20.2">>, emqx_rule_funcs:float2str(20.2, 1)),
|
||||||
|
?assertEqual(<<"20.2">>, emqx_rule_funcs:float2str(20.2, 10)),
|
||||||
|
?assertEqual(<<"20.199999999999999">>, emqx_rule_funcs:float2str(20.2, 15)),
|
||||||
|
?assertEqual(<<"20.1999999999999993">>, emqx_rule_funcs:float2str(20.2, 16)).
|
||||||
|
|
||||||
t_map(_) ->
|
t_map(_) ->
|
||||||
?assertEqual(#{ver => <<"1.0">>, name => "emqx"}, emqx_rule_funcs:map([{ver, <<"1.0">>}, {name, "emqx"}])),
|
?assertEqual(#{ver => <<"1.0">>, name => "emqx"}, emqx_rule_funcs:map([{ver, <<"1.0">>}, {name, "emqx"}])),
|
||||||
?assertEqual(#{<<"a">> => 1}, emqx_rule_funcs:map(<<"{\"a\":1}">>)),
|
?assertEqual(#{<<"a">> => 1}, emqx_rule_funcs:map(<<"{\"a\":1}">>)),
|
||||||
|
|
Loading…
Reference in New Issue