add feed_var/3, join/1
This commit is contained in:
parent
201b7c414a
commit
0dd046840d
|
@ -32,7 +32,7 @@
|
|||
|
||||
-export([match/2, validate/1, triples/1, words/1, wildcard/1]).
|
||||
|
||||
-export([is_queue/1, systop/1]).
|
||||
-export([join/1, feed_var/3, is_queue/1, systop/1]).
|
||||
|
||||
%-type type() :: static | dynamic.
|
||||
|
||||
|
@ -187,3 +187,27 @@ systop(Name) when is_atom(Name) ->
|
|||
systop(Name) when is_binary(Name) ->
|
||||
list_to_binary(["$SYS/brokers/", atom_to_list(node()), "/", Name]).
|
||||
|
||||
-spec feed_var(binary(), binary(), binary()) -> binary().
|
||||
feed_var(Var, Val, Topic) ->
|
||||
feed_var(Var, Val, words(Topic), []).
|
||||
feed_var(_Var, _Val, [], Acc) ->
|
||||
join(lists:reverse(Acc));
|
||||
feed_var(Var, Val, [Var|Words], Acc) ->
|
||||
feed_var(Var, Val, Words, [Val|Acc]);
|
||||
feed_var(Var, Val, [W|Words], Acc) ->
|
||||
feed_var(Var, Val, Words, [W|Acc]).
|
||||
|
||||
-spec join(list(binary())) -> binary().
|
||||
join([]) ->
|
||||
<<>>;
|
||||
join([W]) ->
|
||||
bin(W);
|
||||
join(Words) ->
|
||||
{_, Bin} =
|
||||
lists:foldr(fun(W, {true, Tail}) ->
|
||||
{false, <<W/binary, Tail/binary>>};
|
||||
(W, {false, Tail}) ->
|
||||
{false, <<W/binary, "/", Tail/binary>>}
|
||||
end, {true, <<>>}, [bin(W) || W <- Words]),
|
||||
Bin.
|
||||
|
||||
|
|
Loading…
Reference in New Issue