anchor.diff:  escape_link([]) ->
       <<>>;
   escape_link(Text) ->
  -    case re:run(Text, "\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))", [{capture, first, index}, global]) of
  +    case re:run(Text,
  +            "\\b(([\\w-]+://?|www[.])[^\\s()<>]+(?:\\([\\w\\d]+\\)|([^[:punct:]\\s]|/)))",
  +            [{capture, first, index}, global])
  +    of
           {match, Matches} ->
               Matches1 = [ hd(M) || M <- Matches ],
               nl2br(iolist_to_binary(make_links1(0, Matches1, z_convert:to_list(Text), [])));
  
positive.code: sanitize_type_check(<<"list">>, V, Options) -> sanitize_list_check(V, Options);
  sanitize_type_check(<<"int">>, V, _Options) -> sanitize_int(V);
  sanitize_type_check(<<"unsafe">>, V, _Options) -> V;
  sanitize_type_check(_, V, _Options) -> escape_value_check(V).
  
  
  
negative.code: 
  ensure_protocol(<<>>) -> <<>>;
  ensure_protocol(<<"#", _/binary>> = Link) -> Link;
  ensure_protocol(<<"?", _/binary>> = Link) -> Link;
  ensure_protocol(<<"/", _/binary>> = Link) -> Link;
  ensure_protocol(<<"://", _/binary>> = Link) -> <<"http", Link/binary>>;
  ensure_protocol(<<"http:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"https:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"data:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"urn:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"ftp:", _/binary>> = Link) -> Link;
  ensure_protocol(<<"mailto:", Rest/binary>>) -> <<"mailto:", (z_string:trim(Rest))/binary>>;
  ensure_protocol(<<"www.", _/binary>> = Link) -> <<"https://", Link/binary>>;
  ensure_protocol(Link) when is_binary(Link) ->
      case binary:match(Link, <<":">>) of
          nomatch ->
              % If the first path element looks like a domain name then
              % make it a https: link. Otherwise add a '/' in front.
              [First|_] = binary:split(Link, <<"/">>),
              case binary:match(First, <<".">>) of
                  nomatch -> <<$/, Link/binary>>;
  