diff options
author | Vitaly Minko <vitaly.minko@gmail.com> | 2010-11-01 23:55:00 +0800 |
---|---|---|
committer | Vitaly Minko <vitaly.minko@gmail.com> | 2010-11-01 23:55:00 +0800 |
commit | 6f6c118815634fa3ddbd62df46e7447341a81f5b (patch) | |
tree | c7f7c3dc343aff7c88649678bb295954dc123170 | |
parent | 68e5dfaa9c4e5ee49efa13421eb9fc4dfdb04077 (diff) | |
download | gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar.gz gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar.bz2 gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar.lz gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar.xz gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.tar.zst gsoc2013-empathy-6f6c118815634fa3ddbd62df46e7447341a81f5b.zip |
String parser is changed in order not to break URLs at apostrophes.
-rw-r--r-- | libempathy-gtk/empathy-string-parser.c | 12 | ||||
-rw-r--r-- | tests/empathy-parser-test.c | 6 |
2 files changed, 11 insertions, 7 deletions
diff --git a/libempathy-gtk/empathy-string-parser.c b/libempathy-gtk/empathy-string-parser.c index 45ae6a720..3bb6a82be 100644 --- a/libempathy-gtk/empathy-string-parser.c +++ b/libempathy-gtk/empathy-string-parser.c @@ -27,14 +27,14 @@ #include "empathy-ui-utils.h" #define SCHEMES "([a-zA-Z\\+]+)" -#define INVALID_CHARS "\\s\"'" -#define INVALID_CHARS_EXT INVALID_CHARS "\\[\\]<>(){},;:?" -#define BODY "([^"INVALID_CHARS"]+)" -#define BODY_END "([^"INVALID_CHARS"]*)[^"INVALID_CHARS_EXT".]" -#define BODY_STRICT "([^"INVALID_CHARS_EXT"]+)" +#define INVALID_CHARS "\\s\"<>" +#define INVALID_CHARS_EXT INVALID_CHARS "\\[\\](){},;:" +#define INVALID_CHARS_FULL INVALID_CHARS_EXT "?'" +#define BODY "([^"INVALID_CHARS_FULL"])([^"INVALID_CHARS_EXT"]*)" +#define BODY_END "([^"INVALID_CHARS"]*)[^"INVALID_CHARS_FULL".]" #define URI_REGEX "("SCHEMES"://"BODY_END")" \ "|((www|ftp)\\."BODY_END")" \ - "|((mailto:)?"BODY_STRICT"@"BODY"\\."BODY_END")" + "|((mailto:)?"BODY"@"BODY"\\."BODY_END")" static GRegex * uri_regex_dup_singleton (void) diff --git a/tests/empathy-parser-test.c b/tests/empathy-parser-test.c index 5713d967c..a79a7a287 100644 --- a/tests/empathy-parser-test.c +++ b/tests/empathy-parser-test.c @@ -44,6 +44,8 @@ test_parsers (void) "http://foo.com; bar", "[http://foo.com]; bar", "http://foo.com: bar", "[http://foo.com]: bar", "http://foo.com:bar", "[http://foo.com:bar]", + "http://apos'foo.com", "[http://apos'foo.com]", + "mailto:bar'?user@server.com", "[mailto:bar'?user@server.com]", /* They are not links! */ "http://", "http[:/]/", /* Hm... */ @@ -54,7 +56,7 @@ test_parsers (void) "mailto:user@.com", "mailto:user@.com", "user@.com", "user@.com", - /* Links inside (), {}, [], <> or "" */ + /* Links inside (), {}, [], <>, "" or '' */ /* FIXME: How to test if the ending ] is matched or not? */ "Foo (www.foo.com)", "Foo ([www.foo.com])", "Foo {www.foo.com}", "Foo {[www.foo.com]}", @@ -68,6 +70,8 @@ test_parsers (void) "Foo [user@server.com]", "Foo [[user@server.com]]", "Foo <user@server.com>", "Foo <[user@server.com]>", "Foo \"user@server.com\"", "Foo "[user@server.com]"", + "<a href='http://apos'foo.com'>bar</a>", "<a href='[http://apos'foo.com]'>bar</a>", + "Foo 'bar'?user@server.com'", "Foo '[bar'?user@server.com]'", /* Basic smileys */ "a:)b", "a[:)]b", |