summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2011-02-10 18:49:21 (GMT)
committerRemko Tronçon <git@el-tramo.be>2011-02-10 18:49:21 (GMT)
commit61f24ccd90d2b7c48b2d5091c11964f455e8e9a8 (patch)
tree7b4a3c98b00800bc6870723a09ab7844ab66bf8d
parent5ddef4042f9049e3f436b21b7b1d6d50789c5a1e (diff)
downloadswift-61f24ccd90d2b7c48b2d5091c11964f455e8e9a8.zip
swift-61f24ccd90d2b7c48b2d5091c11964f455e8e9a8.tar.bz2
Fixed linkification of URLs followed by newlines.
Resolves: #762
-rw-r--r--SwifTools/Linkify.cpp2
-rw-r--r--SwifTools/UnitTest/LinkifyTest.cpp18
2 files changed, 19 insertions, 1 deletions
diff --git a/SwifTools/Linkify.cpp b/SwifTools/Linkify.cpp
index 32428ec..822536e 100644
--- a/SwifTools/Linkify.cpp
+++ b/SwifTools/Linkify.cpp
@@ -21,7 +21,7 @@ String Linkify::linkify(const String& input) {
for (size_t i = 0; i < input.getUTF8Size(); ++i) {
char c = input[i];
if (inURL) {
- if (c != ' ' && c != '\t') {
+ if (c != ' ' && c != '\t' && c != '\n') {
currentURL.push_back(c);
}
else {
diff --git a/SwifTools/UnitTest/LinkifyTest.cpp b/SwifTools/UnitTest/LinkifyTest.cpp
index 60edc9b..a35a686 100644
--- a/SwifTools/UnitTest/LinkifyTest.cpp
+++ b/SwifTools/UnitTest/LinkifyTest.cpp
@@ -29,6 +29,8 @@ class LinkifyTest : public CppUnit::TestFixture {
CPPUNIT_TEST(testLinkify_At);
CPPUNIT_TEST(testLinkify_Amps);
CPPUNIT_TEST(testLinkify_UnicodeCharacter);
+ CPPUNIT_TEST(testLinkify_NewLine);
+ CPPUNIT_TEST(testLinkify_Tab);
CPPUNIT_TEST_SUITE_END();
public:
@@ -160,6 +162,22 @@ class LinkifyTest : public CppUnit::TestFixture {
String("<a href=\"http://\xe2\x98\x83.net\">http://\xe2\x98\x83.net</a>"),
result);
}
+
+ void testLinkify_NewLine() {
+ String result = Linkify::linkify("http://swift.im\nfoo");
+
+ CPPUNIT_ASSERT_EQUAL(
+ String("<a href=\"http://swift.im\">http://swift.im</a>\nfoo"),
+ result);
+ }
+
+ void testLinkify_Tab() {
+ String result = Linkify::linkify("http://swift.im\tfoo");
+
+ CPPUNIT_ASSERT_EQUAL(
+ String("<a href=\"http://swift.im\">http://swift.im</a>\tfoo"),
+ result);
+ }
};
CPPUNIT_TEST_SUITE_REGISTRATION(LinkifyTest);