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.
|
||||
* Fix mqtt-sn client disconnected due to re-send a duplicated qos2 message
|
||||
* 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
|
||||
startup. [#7876]
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
%% Unless you know what you are doing, DO NOT edit manually!!
|
||||
{VSN,
|
||||
[{"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,[]},
|
||||
{add_module,emqx_rule_date},
|
||||
{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_api,brutal_purge,soft_purge,[]}]},
|
||||
{"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_engine_cli,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,[]}]},
|
||||
{<<".*">>,[]}],
|
||||
[{"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_maps,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,[]},
|
||||
{delete_module,emqx_rule_date}]},
|
||||
{"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_sqltester,brutal_purge,soft_purge,[]},
|
||||
{load_module,emqx_rule_runtime,brutal_purge,soft_purge,[]},
|
||||
|
|
|
@ -93,6 +93,7 @@
|
|||
, bool/1
|
||||
, int/1
|
||||
, float/1
|
||||
, float2str/2
|
||||
, map/1
|
||||
, bin2hexstr/1
|
||||
, hexstr2bin/1
|
||||
|
@ -537,6 +538,9 @@ int(Data) ->
|
|||
float(Data) ->
|
||||
emqx_rule_utils:float(Data).
|
||||
|
||||
float2str(Float, Precision) ->
|
||||
emqx_rule_utils:float2str(Float, Precision).
|
||||
|
||||
map(Data) ->
|
||||
emqx_rule_utils:map(Data).
|
||||
|
||||
|
|
|
@ -32,6 +32,7 @@
|
|||
|
||||
%% type converting
|
||||
-export([ str/1
|
||||
, float2str/2
|
||||
, bin/1
|
||||
, bool/1
|
||||
, int/1
|
||||
|
@ -265,6 +266,9 @@ str(List) when is_list(List) ->
|
|||
end;
|
||||
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) ->
|
||||
unicode:characters_to_binary(Str);
|
||||
utf8_bin(Str) ->
|
||||
|
|
|
@ -125,6 +125,13 @@ t_float(_) ->
|
|||
?assertError({invalid_number, {a, v}}, emqx_rule_funcs:float({a, v})),
|
||||
?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(_) ->
|
||||
?assertEqual(#{ver => <<"1.0">>, name => "emqx"}, emqx_rule_funcs:map([{ver, <<"1.0">>}, {name, "emqx"}])),
|
||||
?assertEqual(#{<<"a">> => 1}, emqx_rule_funcs:map(<<"{\"a\":1}">>)),
|
||||
|
|
Loading…
Reference in New Issue