diff --git a/apps/emqx_utils/src/emqx_variform_scan.xrl b/apps/emqx_utils/src/emqx_variform_scan.xrl index 63c9fba29..d28fbaf81 100644 --- a/apps/emqx_utils/src/emqx_variform_scan.xrl +++ b/apps/emqx_utils/src/emqx_variform_scan.xrl @@ -1,6 +1,6 @@ Definitions. %% Define regular expressions for tokens -IDENTIFIER = [a-zA-Z][a-zA-Z0-9_.]* +IDENTIFIER = [a-zA-Z][-a-zA-Z0-9_.]* SQ_STRING = \'[^\']*\' DQ_STRING = \"[^\"]*\" INTEGER = [+-]?[0-9]+ diff --git a/apps/emqx_utils/test/emqx_variform_tests.erl b/apps/emqx_utils/test/emqx_variform_tests.erl index 4437280ea..779ee6648 100644 --- a/apps/emqx_utils/test/emqx_variform_tests.erl +++ b/apps/emqx_utils/test/emqx_variform_tests.erl @@ -23,7 +23,7 @@ -define(SYNTAX_ERROR, {error, "syntax error before:" ++ _}). -redner_test_() -> +render_test_() -> [ {"direct var reference", fun() -> ?assertEqual({ok, <<"1">>}, render("a", #{a => 1})) end}, {"concat strings", fun() -> @@ -32,6 +32,15 @@ redner_test_() -> {"concat empty string", fun() -> ?assertEqual({ok, <<"">>}, render("concat([''])", #{})) end}, + {"identifier with hyphen", fun() -> + ?assertEqual( + {ok, <<"10">>}, + render( + "pub_props.Message-Expiry-Interval", + #{pub_props => #{'Message-Expiry-Interval' => 10}} + ) + ) + end}, {"tokens 1st", fun() -> ?assertEqual({ok, <<"a">>}, render("nth(1,tokens(var, ','))", #{var => <<"a,b">>})) end},