[Xfce4-commits] <xfce4-terminal:master> Improve URL matching (bug #7959, bug #9800).
Nick Schermer
noreply at xfce.org
Thu Jul 25 13:04:01 CEST 2013
Updating branch refs/heads/master
to 2e1c32557bcb053c30e5c65eb6fe10929c5683d7 (commit)
from 17431207714a920978c656b38679d1e307e8d687 (commit)
commit 2e1c32557bcb053c30e5c65eb6fe10929c5683d7
Author: Jeff Shipley <jshipley at fastmail.fm>
Date: Tue Jul 23 13:20:42 2013 -0600
Improve URL matching (bug #7959, bug #9800).
- Add support for matching IPv6 addresses
- Fix URL parsing (bug #7959 and bug #9800)
- Add some characters for email address parsing
terminal/terminal-widget.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/terminal/terminal-widget.c b/terminal/terminal-widget.c
index d490994..5a7d266 100644
--- a/terminal/terminal-widget.c
+++ b/terminal/terminal-widget.c
@@ -40,17 +40,19 @@
-#define USERCHARS "-_+[:alnum:]"
+#define USERCHARS "-[:alnum:]\\Q_.+\\E"
#define USERCHARS_CLASS "[" USERCHARS "]"
#define PASSCHARS_CLASS "[-[:alnum:]\\Q,?;.:/!%$^*&~\"#'\\E]"
#define HOSTCHARS_CLASS "[-[:alnum:]]"
-#define HOST HOSTCHARS_CLASS "+(\\." HOSTCHARS_CLASS "+)*"
+#define HOSTNAME HOSTCHARS_CLASS "+(?:\\." HOSTCHARS_CLASS "+)*"
+#define IPV6ADDRESS "\\[(?:[[:xdigit:]]{0,4}:){2,7}[[:xdigit:]]{0,4}\\]"
+#define HOST "(?:" HOSTNAME "|" IPV6ADDRESS ")"
#define PORT "(?:\\:[[:digit:]]{1,5})?"
#define PATHCHARS_CLASS "[-[:alnum:]\\Q_$.+!*,;@&=?/:~#'%\\E]"
-#define PATHTERM_CLASS "[^\\Q]'.}>) \t\r\n,\"\\E]"
+#define PATHTERM_CLASS "[[:alnum:]\\Q_$+*@&=/~#%\\E]"
#define SCHEME "(?:news:|telnet:|nntp:|file:\\/|https?:|ftps?:|sftp:|webcal:|magnet:)"
#define USERPASS USERCHARS_CLASS "+(?:" PASSCHARS_CLASS "+)?"
-#define URLPATH "(?:(/"PATHCHARS_CLASS"+(?:[(]"PATHCHARS_CLASS"*[)])*"PATHCHARS_CLASS"*)*"PATHTERM_CLASS")?"
+#define URLPATH "(?:(?:\\(" PATHCHARS_CLASS "*\\)|" PATHCHARS_CLASS ")*(?:\\(" PATHCHARS_CLASS "*\\)|" PATHTERM_CLASS "))?"
@@ -78,7 +80,7 @@ TerminalRegexPattern;
static const TerminalRegexPattern regex_patterns[] =
{
{ SCHEME "//(?:" USERPASS "\\@)?" HOST PORT URLPATH, PATTERN_TYPE_FULL_HTTP },
- { "(?:www|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH, PATTERN_TYPE_HTTP },
+ { "(?:www[[:digit:]]{0,3}|ftp)" HOSTCHARS_CLASS "*\\." HOST PORT URLPATH, PATTERN_TYPE_HTTP },
{ "(?:mailto:)?" USERCHARS_CLASS "[" USERCHARS ".]*\\@" HOSTCHARS_CLASS "+\\." HOST, PATTERN_TYPE_EMAIL },
{ "news:[[:alnum:]\\Q^_{|}~!\"#$%&'()*+,./;:=?`\\E]+", PATTERN_TYPE_FULL_HTTP }
};
More information about the Xfce4-commits
mailing list