Require balanced parens in hyperlinks, otherwise exclude it. This makes links like "(http://foo/)" render more accurately, by skipping the parens the user placed around the link. Bug: GERRIT-163 Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java b/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java index 7bdd0db..4c61588 100644 --- a/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java +++ b/src/main/java/com/google/gwtexpui/safehtml/client/SafeHtml.java
@@ -71,7 +71,13 @@ /** Convert bare http:// and https:// URLs into <a href> tags. */ public SafeHtml linkify() { return replaceAll( - "(https?://[a-zA-Z0-9$_.+!*',%;:@&=?#/()-]{1,}[a-zA-Z0-9$_.+!*',%;:@&=?#/-])", + "(https?://" + + "[a-zA-Z0-9$_.+!*',%;:@&=?#/-]{2,}" + + "([(]" + + "[a-zA-Z0-9$_.+!*',%;:@&=?#/-]*" + + "[)])*" + + "[a-zA-Z0-9$_.+!*',%;:@&=?#/-]*" + + ")", "<a href=\"$1\">$1</a>"); }