diff --git a/src/TapkuLibrary/NSString+TKCategory.h b/src/TapkuLibrary/NSString+TKCategory.h index d4f01583..c8e06725 100755 --- a/src/TapkuLibrary/NSString+TKCategory.h +++ b/src/TapkuLibrary/NSString+TKCategory.h @@ -45,6 +45,8 @@ */ - (NSString*) URLEncode; +- (NSString*) URLDecode; + /** Returns a `NSString` that properly replaces HTML specific character sequences. @return An escaped HTML string. */ diff --git a/src/TapkuLibrary/NSString+TKCategory.m b/src/TapkuLibrary/NSString+TKCategory.m index 07f2eace..3f1f431f 100644 --- a/src/TapkuLibrary/NSString+TKCategory.m +++ b/src/TapkuLibrary/NSString+TKCategory.m @@ -63,6 +63,15 @@ - (NSString*) URLEncode{ } +- (NSString*) URLDecode{ + + NSString *decodedString = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding( + NULL, + (__bridge CFStringRef)self, + CFSTR(""), + kCFStringEncodingUTF8); + return decodedString; +} - (NSString *) escapeHTML{ NSMutableString *s = [NSMutableString string]; @@ -92,9 +101,6 @@ - (NSString *) escapeHTML{ case '"': [s appendString:@"""]; break; - // case '…': - // [s appendString:@"…"]; - // break; case '&': [s appendString:@"&"]; break; @@ -176,10 +182,6 @@ - (BOOL) hasString:(NSString*)substring{ return !([self rangeOfString:substring].location == NSNotFound); } - - - - - (NSString*) formattedPhoneNumberWithLastCharacterRemoved:(BOOL)deleteLastChar{ if(self.length<1) return @""; diff --git a/src/Tests/NSStringTests.m b/src/Tests/NSStringTests.m index ad4c1ce1..51cca401 100644 --- a/src/Tests/NSStringTests.m +++ b/src/Tests/NSStringTests.m @@ -57,6 +57,14 @@ - (void) testURLEncode{ STAssertEqualObjects([@"\"Aardvarks lurk, OK?\"" URLEncode], @"%22Aardvarks%20lurk%2C%20OK%3F%22", nil); } +- (void) testURLDecode { + NSString * originalString = @"?test ;"; + NSString* encoded = [originalString URLEncode]; + + STAssertEqualObjects(@"%3Ftest%20%3B", encoded, @"encode should work"); + STAssertEqualObjects(originalString, [encoded URLDecode], @"decode should work"); +} + - (void) testHasString{