Use the regexp frontend module (EJAB-921)
This commit is contained in:
parent
a3c58f2896
commit
ce7b008b8f
|
@ -146,30 +146,36 @@ do_sub(S, [{RegExp, New, Times} | T]) ->
|
||||||
do_sub(Result, T).
|
do_sub(Result, T).
|
||||||
|
|
||||||
do_sub(S, {RegExp, New}, Iter) ->
|
do_sub(S, {RegExp, New}, Iter) ->
|
||||||
case regexp:sub(S, RegExp, New) of
|
case ejabberd_regexp:run(S, RegExp) of
|
||||||
{ok, NewS, 0} ->
|
match ->
|
||||||
NewS;
|
case ejabberd_regexp:replace(S, RegExp, New) of
|
||||||
{ok, NewS, _} when Iter =< ?MAX_RECURSION ->
|
NewS when Iter =< ?MAX_RECURSION ->
|
||||||
do_sub(NewS, {RegExp, New}, Iter+1);
|
do_sub(NewS, {RegExp, New}, Iter+1);
|
||||||
{ok, _, _} when Iter > ?MAX_RECURSION ->
|
_NewS when Iter > ?MAX_RECURSION ->
|
||||||
erlang:error(max_substitute_recursion);
|
erlang:error(max_substitute_recursion)
|
||||||
_ ->
|
end;
|
||||||
erlang:error(bad_regexp)
|
nomatch ->
|
||||||
|
S;
|
||||||
|
_ ->
|
||||||
|
erlang:error(bad_regexp)
|
||||||
end;
|
end;
|
||||||
|
|
||||||
do_sub(S, {_, _, N}, _) when N<1 ->
|
do_sub(S, {_, _, N}, _) when N<1 ->
|
||||||
S;
|
S;
|
||||||
|
|
||||||
do_sub(S, {RegExp, New, Times}, Iter) ->
|
do_sub(S, {RegExp, New, Times}, Iter) ->
|
||||||
case regexp:sub(S, RegExp, New) of
|
case ejabberd_regexp:run(S, RegExp) of
|
||||||
{ok, NewS, 0} ->
|
match ->
|
||||||
NewS;
|
case ejabberd_regexp:replace(S, RegExp, New) of
|
||||||
{ok, NewS, _} when Iter < Times ->
|
NewS when Iter < Times ->
|
||||||
do_sub(NewS, {RegExp, New, Times}, Iter+1);
|
do_sub(NewS, {RegExp, New, Times}, Iter+1);
|
||||||
{ok, NewS, _} ->
|
NewS ->
|
||||||
NewS;
|
NewS
|
||||||
_ ->
|
end;
|
||||||
erlang:error(bad_regexp)
|
nomatch ->
|
||||||
|
S;
|
||||||
|
_ ->
|
||||||
|
erlang:error(bad_regexp)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
replace_amps(String) ->
|
replace_amps(String) ->
|
||||||
|
|
Loading…
Reference in New Issue