fix(placeholder): porting fix to support utf8 key in placeholder
This commit is contained in:
parent
7b3843f6a3
commit
7567d211da
|
@ -48,9 +48,13 @@
|
|||
|
||||
-define(PH_VAR_THIS, '$this').
|
||||
|
||||
-define(EX_PLACE_HOLDER, "(\\$\\{[a-zA-Z0-9\\._]+\\})").
|
||||
%% To match any pattern starts with '$' and followed by '{', and closed by a '}' char:
|
||||
%% e.g. for string "a${abc}bb", "${abc}" will be matched.
|
||||
%% Note this is non-greedy matching
|
||||
%% e.g. if "${{abc}}" is given, the "${{abc}" should be matched, NOT "${{abc}}".
|
||||
-define(EX_PLACE_HOLDER, "(\\$\\{[^}]+\\})").
|
||||
|
||||
-define(EX_PLACE_HOLDER_DOUBLE_QUOTE, "(\\$\\{[a-zA-Z0-9\\._]+\\}|\"\\$\\{[a-zA-Z0-9\\._]+\\}\")").
|
||||
-define(EX_PLACE_HOLDER_DOUBLE_QUOTE, "(\\$\\{[^}]+\\}|\"\\$\\{[^}]+\\}\")").
|
||||
|
||||
%% Space and CRLF
|
||||
-define(EX_WITHE_CHARS, "\\s").
|
||||
|
|
|
@ -206,3 +206,53 @@ t_preproc_tmpl_deep(_) ->
|
|||
#{<<"${a}">> => [<<"1">>, "c", 2, 3.0, '${d}', {[<<"1.0">>], 0}]},
|
||||
emqx_placeholder:proc_tmpl_deep(Tmpl1, Selected)
|
||||
).
|
||||
|
||||
t_proc_tmpl_arbitrary_var_name(_) ->
|
||||
Selected = #{
|
||||
<<"中"/utf8>> => <<"1">>,
|
||||
<<"中-1"/utf8>> => <<"1-1">>,
|
||||
<<"-_+=<>,/?:;\"'\\[]|">> => 1,
|
||||
<<"-_+=<>,">> => #{<<"/?:;\"'\\[]|">> => 2},
|
||||
<<"!@#$%^&*()">> => 1.0,
|
||||
<<"d">> => #{
|
||||
<<"$ff">> => <<"oo">>,
|
||||
<<"${f">> => <<"hi">>,
|
||||
<<"${f}">> => <<"qq">>
|
||||
}
|
||||
},
|
||||
Tks = emqx_placeholder:preproc_tmpl(
|
||||
<<
|
||||
"a:${中},a:${中-1},b:${-_+=<>,/?:;\"'\\[]|},"
|
||||
"b:${-_+=<>,./?:;\"'\\[]|},c:${!@#$%^&*()},d:${d.$ff},d1:${d.${f}}"/utf8
|
||||
>>
|
||||
),
|
||||
?assertEqual(
|
||||
<<"a:1,a:1-1,b:1,b:2,c:1.0,d:oo,d1:hi}">>,
|
||||
emqx_placeholder:proc_tmpl(Tks, Selected)
|
||||
).
|
||||
|
||||
t_proc_tmpl_arbitrary_var_name_double_quote(_) ->
|
||||
Selected = #{
|
||||
<<"中"/utf8>> => <<"1">>,
|
||||
<<"中-1"/utf8>> => <<"1-1">>,
|
||||
<<"-_+=<>,/?:;\"'\\[]|">> => 1,
|
||||
<<"-_+=<>,">> => #{<<"/?:;\"'\\[]|">> => 2},
|
||||
<<"!@#$%^&*()">> => 1.0,
|
||||
<<"d">> => #{
|
||||
<<"$ff">> => <<"oo">>,
|
||||
<<"${f">> => <<"hi">>,
|
||||
<<"${f}">> => <<"qq">>
|
||||
}
|
||||
},
|
||||
Tks = emqx_placeholder:preproc_tmpl(
|
||||
<<
|
||||
"a:\"${中}\",a:\"${中-1}\",b:\"${-_+=<>,/?:;\"'\\[]|}\","
|
||||
"b:\"${-_+=<>,./?:;\"'\\[]|}\",c:\"${!@#$%^&*()}\",d:\"${d.$ff}\",d1:\"${d.${f}\"}"/utf8
|
||||
>>,
|
||||
#{strip_double_quote => true}
|
||||
),
|
||||
ct:print("TKs:~p~n", [Tks]),
|
||||
?assertEqual(
|
||||
<<"a:1,a:1-1,b:1,b:2,c:1.0,d:oo,d1:hi}">>,
|
||||
emqx_placeholder:proc_tmpl(Tks, Selected)
|
||||
).
|
||||
|
|
Loading…
Reference in New Issue