Use the regexp frontend module (EJAB-921)

This commit is contained in:
Badlop 2011-12-23 11:33:33 +01:00
parent a3c58f2896
commit ce7b008b8f
1 changed files with 24 additions and 18 deletions

View File

@ -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) ->