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([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.
|
%-type type() :: static | dynamic.
|
||||||
|
|
||||||
|
@ -187,3 +187,27 @@ systop(Name) when is_atom(Name) ->
|
||||||
systop(Name) when is_binary(Name) ->
|
systop(Name) when is_binary(Name) ->
|
||||||
list_to_binary(["$SYS/brokers/", atom_to_list(node()), "/", 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