Changeset 3548
- Timestamp:
- 01/08/07 23:10:31 (2 years ago)
- Files:
-
- trunk/Additions/NSStringAdditions.m (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/Additions/NSStringAdditions.m
r3546 r3548 238 238 239 239 - (NSString *) stringByEncodingXMLSpecialCharactersAsEntities { 240 NSCharacterSet *special = [NSCharacterSet characterSetWithCharactersInString:@"&<>\"'"]; 241 NSRange range = [self rangeOfCharacterFromSet:special options:NSLiteralSearch]; 242 if( range.location == NSNotFound ) 243 return self; 244 240 245 NSMutableString *result = [self mutableCopyWithZone:nil]; 241 246 [result encodeXMLSpecialCharactersAsEntities]; … … 244 249 245 250 - (NSString *) stringByDecodingXMLSpecialCharacterEntities { 251 NSRange range = [self rangeOfString:@"&" options:NSLiteralSearch]; 252 if( range.location == NSNotFound ) 253 return self; 254 246 255 NSMutableString *result = [self mutableCopyWithZone:nil]; 247 256 [result decodeXMLSpecialCharacterEntities]; … … 252 261 253 262 - (NSString *) stringByEscapingCharactersInSet:(NSCharacterSet *) set { 263 NSRange range = [self rangeOfCharacterFromSet:set]; 264 if( range.location == NSNotFound ) 265 return self; 266 254 267 NSMutableString *result = [self mutableCopyWithZone:nil]; 255 268 [result escapeCharactersInSet:set]; … … 270 283 271 284 - (NSString *) stringByStrippingIllegalXMLCharacters { 285 NSMutableCharacterSet *illegalSet = [[NSCharacterSet characterSetWithRange:NSMakeRange( 0, 0x1f )] mutableCopyWithZone:nil]; 286 [illegalSet addCharactersInRange:NSMakeRange( 0x7f, 1 )]; 287 [illegalSet addCharactersInRange:NSMakeRange( 0xfffe, 1 )]; 288 [illegalSet addCharactersInRange:NSMakeRange( 0xffff, 1 )]; 289 290 NSRange range = [self rangeOfCharacterFromSet:illegalSet]; 291 [illegalSet release]; 292 293 if( range.location == NSNotFound ) 294 return self; 295 272 296 NSMutableString *result = [self mutableCopyWithZone:nil]; 273 297 [result stripIllegalXMLCharacters]; … … 297 321 @implementation NSMutableString (NSMutableStringAdditions) 298 322 - (void) encodeXMLSpecialCharactersAsEntities { 323 NSCharacterSet *special = [NSCharacterSet characterSetWithCharactersInString:@"&<>\"'"]; 324 NSRange range = [self rangeOfCharacterFromSet:special options:NSLiteralSearch]; 325 if( range.location == NSNotFound ) 326 return; 327 299 328 [self replaceOccurrencesOfString:@"&" withString:@"&" options:NSLiteralSearch range:NSMakeRange( 0, [self length] )]; 300 329 [self replaceOccurrencesOfString:@"<" withString:@"<" options:NSLiteralSearch range:NSMakeRange( 0, [self length] )]; … … 305 334 306 335 - (void) decodeXMLSpecialCharacterEntities { 336 NSRange range = [self rangeOfString:@"&" options:NSLiteralSearch]; 337 if( range.location == NSNotFound ) 338 return; 339 307 340 [self replaceOccurrencesOfString:@"<" withString:@"<" options:NSLiteralSearch range:NSMakeRange( 0, [self length] )]; 308 341 [self replaceOccurrencesOfString:@">" withString:@">" options:NSLiteralSearch range:NSMakeRange( 0, [self length] )]; … … 315 348 316 349 - (void) escapeCharactersInSet:(NSCharacterSet *) set { 350 NSRange range = [self rangeOfCharacterFromSet:set]; 351 if( range.location == NSNotFound ) 352 return; 353 317 354 NSScanner *scanner = [[NSScanner allocWithZone:nil] initWithString:self]; 318 355 … … 342 379 343 380 - (void) stripIllegalXMLCharacters { 344 NSMutableCharacterSet *illegalSet = [[ [NSCharacterSet characterSetWithRange:NSMakeRange( 0, 0x1f )] mutableCopyWithZone:nil] autorelease];381 NSMutableCharacterSet *illegalSet = [[NSCharacterSet characterSetWithRange:NSMakeRange( 0, 0x1f )] mutableCopyWithZone:nil]; 345 382 [illegalSet addCharactersInRange:NSMakeRange( 0x7f, 1 )]; 346 383 [illegalSet addCharactersInRange:NSMakeRange( 0xfffe, 1 )]; … … 352 389 range = [self rangeOfCharacterFromSet:illegalSet]; 353 390 } 391 392 [illegalSet release]; 354 393 } 355 394 @end
