adium-1.4 3587:94e9cae215e6: Implimenting fixes from http://hg.a...

commits at adium.im commits at adium.im
Wed Aug 10 04:13:07 UTC 2011


details:	http://hg.adium.im/adium-1.4/rev/94e9cae215e6
revision:	3587:94e9cae215e6
branch:		(none)
author:		Stephen Holt <sholt at adium.im>
date:		Tue Aug 09 21:12:54 2011 -0700

Implimenting fixes from http://hg.adium.im/adium/rev/70a376ec444c and http://hg.adium.im/adium/rev/bfe93b6db274 for adium-1.4

diffs (70 lines):

diff -r f2617cde9403 -r 94e9cae215e6 Frameworks/AutoHyperlinks Framework/Source/AHMarkedHyperlink.m
--- a/Frameworks/AutoHyperlinks Framework/Source/AHMarkedHyperlink.m	Fri Aug 05 02:10:01 2011 +0200
+++ b/Frameworks/AutoHyperlinks Framework/Source/AHMarkedHyperlink.m	Tue Aug 09 21:12:54 2011 -0700
@@ -102,7 +102,7 @@
 - (void)setURLFromString:(NSString *)inString
 {
 	NSString	*linkString, *preString;
-
+	
 	preString = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, 
 																					(CFStringRef)inString, 
 																					CFSTR(""), 
@@ -112,11 +112,33 @@
 																	 preString? (CFStringRef)preString : (CFStringRef)inString,
 																	 (CFStringRef)@"#[]",
 																	 NULL,
-																	 kCFStringEncodingUTF8); // kCFStringEncodingISOLatin1 );
-
+																	 kCFStringEncodingUTF8);
 	[linkURL release];
 	linkURL = [[NSURL alloc] initWithString:linkString];
-
+	// Because -[NSURL URLWithString:(NSString*)inString] fails creating a link with 2 fragment hashes, but we don't want to escape the first one, we esape all '#' to "%23" then unescape the first back to '#'.  rdar://9927055
+	if(!self.URL) {
+		[preString release]; preString = nil;
+		preString = (NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(kCFAllocatorDefault, 
+																						(CFStringRef)preString, 
+																						CFSTR(""), 
+																						kCFStringEncodingUTF8);
+		[linkString release]; linkString = nil;
+		linkString = (NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,
+																		 preString? (CFStringRef)preString : (CFStringRef)inString,
+																		 (CFStringRef)@"[]",
+																		 NULL,
+																		 kCFStringEncodingUTF8);
+		NSRange fragmentRange = [linkString rangeOfString:@"%23"];
+		NSMutableString *mutaLinkString = nil;
+		if (fragmentRange.location != NSNotFound) {
+			mutaLinkString = [linkString mutableCopy];
+			[mutaLinkString replaceOccurrencesOfString:@"%23" withString:@"#" options:0 range:fragmentRange];
+		}
+		[linkURL release];
+		linkURL = [[NSURL alloc] initWithString:linkString];
+		[mutaLinkString release];
+	}
+	
 	[linkString release];
 	if(preString) [preString release];
 }
diff -r f2617cde9403 -r 94e9cae215e6 Frameworks/AutoHyperlinks Framework/UnitTests/HyperlinkContextTest.m
--- a/Frameworks/AutoHyperlinks Framework/UnitTests/HyperlinkContextTest.m	Fri Aug 05 02:10:01 2011 +0200
+++ b/Frameworks/AutoHyperlinks Framework/UnitTests/HyperlinkContextTest.m	Tue Aug 09 21:12:54 2011 -0700
@@ -13,7 +13,7 @@
 	AHHyperlinkScanner	*scanner = [AHHyperlinkScanner hyperlinkScannerWithString:testString];
 	AHMarkedHyperlink	*link = [scanner nextURI];
 	
-	STAssertNotNil(link, @"-[SHHyperlinkScanner nextURL] found no URI in \"%@\"", testString);
+	STAssertNotNil([link URL], @"-[SHHyperlinkScanner nextURL] found no URI in \"%@\"", testString);
 	STAssertEqualObjects([[link parentString] substringWithRange:[link range]], URIString, @"in context: '%@'", testString);
 }
 
@@ -230,6 +230,8 @@
 	[self testLaxContext:@"%@" withURI:[NSString stringWithFormat:@"%@",@"http://example.com/hi%uthere"]]; //#11160
 	
 	[self testURIEscaping:[NSString stringWithFormat:@"%@",@"http://www.google.com/search?q=foo%20bar"]]; //#12850
+	
+	[self testLaxContext:@"%@ doesn't link." withURI:@"http://developer.apple.com/library/iOS/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/CocoaObjects.html#//apple_ref/doc/uid/TP40002974-CH4-SW3"];
 }
 
 - (void)testCompositeContext {




More information about the commits mailing list