From d472dbd2c1d81d73e211151606ecb907cf1030ab Mon Sep 17 00:00:00 2001 From: dwetzel Date: Mon, 31 May 2010 06:34:28 +0000 Subject: [PATCH] added encodingNamed: git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30507 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 7 + .../GNUstepBase/NSString+GNUstepBase.h | 8 + Headers/Foundation/NSString.h | 8 + Source/Additions/NSString+GNUstepBase.m | 219 ++++++++++++++++++ Source/NSString.m | 183 +++++++++++++++ 5 files changed, 425 insertions(+) diff --git a/ChangeLog b/ChangeLog index ce563b959..a8989b884 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2010-05-30 David Wetzel + * Source/NSString.m + * Source/Additions/NSString+GNUstepBase.m + * Headers/Foundation/NSString.h + * Headers/Additions/GNUstepBase/NSString+GNUstepBase.h + added encodingNamed: + 2010-05-30 Richard Frith-Macdonald * Source/NSObject.h: diff --git a/Headers/Additions/GNUstepBase/NSString+GNUstepBase.h b/Headers/Additions/GNUstepBase/NSString+GNUstepBase.h index 09a64cfeb..a95cad535 100644 --- a/Headers/Additions/GNUstepBase/NSString+GNUstepBase.h +++ b/Headers/Additions/GNUstepBase/NSString+GNUstepBase.h @@ -93,6 +93,14 @@ extern "C" { */ - (NSString*) substringFromRange: (NSRange)aRange; +/** + * Returns an NSStringEncoding from the given name or + * GSUndefinedEncoding / 0 if not found. + */ + ++ (NSStringEncoding) encodingNamed:(NSString*) encName; + + @end #endif /* OS_API_VERSION */ diff --git a/Headers/Foundation/NSString.h b/Headers/Foundation/NSString.h index 429c8410d..44f8c145d 100644 --- a/Headers/Foundation/NSString.h +++ b/Headers/Foundation/NSString.h @@ -730,6 +730,14 @@ typedef NSUInteger NSStringEncodingConversionOptions; - (NSString*) stringByReplacingPercentEscapesUsingEncoding: (NSStringEncoding)e; - (NSString*) stringByTrimmingCharactersInSet: (NSCharacterSet*)aSet; - (const char *)UTF8String; + +/** + * Returns an NSStringEncoding from the given name or + * GSUndefinedEncoding / 0 if not found. + */ + ++ (NSStringEncoding) encodingNamed:(NSString*) encName; + #endif #if OS_API_VERSION(100300,GS_API_LATEST) diff --git a/Source/Additions/NSString+GNUstepBase.m b/Source/Additions/NSString+GNUstepBase.m index c970fc3fb..d87749b6c 100644 --- a/Source/Additions/NSString+GNUstepBase.m +++ b/Source/Additions/NSString+GNUstepBase.m @@ -227,4 +227,223 @@ return [self substringWithRange:range]; } +/** + * Returns an NSStringEncoding from the given name or + * GSUndefinedEncoding / 0 if not found. + * This code is used in GDL and GSWeb + * It is here to avoid copy+paste code. + */ + ++ (NSStringEncoding) encodingNamed:(NSString*) encName +{ + + if ((!encName) || ([encName length] < 18)) { + return 0; + } + + // the most common on top + if ([encName isEqual:@"NSUTF8StringEncoding"]) { + return NSUTF8StringEncoding; + } + + if ([encName isEqual:@"NSASCIIStringEncoding"]) { + return NSASCIIStringEncoding; + } + + if ([encName isEqual:@"NSNEXTSTEPStringEncoding"]) { + return NSNEXTSTEPStringEncoding; + } + + if ([encName isEqual:@"NSJapaneseEUCStringEncoding"]) { + return NSJapaneseEUCStringEncoding; + } + + if ([encName isEqual:@"NSISOLatin1StringEncoding"]) { + return NSISOLatin1StringEncoding; + } + + if ([encName isEqual:@"NSSymbolStringEncoding"]) { + return NSSymbolStringEncoding; + } + + if ([encName isEqual:@"NSNonLossyASCIIStringEncoding"]) { + return NSNonLossyASCIIStringEncoding; + } + + if ([encName isEqual:@"NSShiftJISStringEncoding"]) { + return NSShiftJISStringEncoding; + } + + if ([encName isEqual:@"NSUnicodeStringEncoding"]) { + return NSUnicodeStringEncoding; + } + + if ([encName isEqual:@"NSUTF16StringEncoding"]) { + return NSUTF16StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1251StringEncoding"]) { + return NSWindowsCP1251StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1252StringEncoding"]) { + return NSWindowsCP1252StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1253StringEncoding"]) { + return NSWindowsCP1253StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1254StringEncoding"]) { + return NSWindowsCP1254StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1250StringEncoding"]) { + return NSWindowsCP1250StringEncoding; + } + + if ([encName isEqual:@"NSISO2022JPStringEncoding"]) { + return NSISO2022JPStringEncoding; + } + + if ([encName isEqual:@"NSMacOSRomanStringEncoding"]) { + return NSMacOSRomanStringEncoding; + } + + // does anybody need NSProprietaryStringEncoding? + +#ifdef NSKOI8RStringEncoding + if ([encName isEqual:@"NSKOI8RStringEncoding"]) { + return NSKOI8RStringEncoding; + } +#endif + +#ifdef NSKOI8RStringEncoding + if ([encName isEqual:@"NSISOLatin3StringEncoding"]) { + return NSISOLatin3StringEncoding; + } +#endif + +#ifdef NSISOLatin4StringEncoding + if ([encName isEqual:@"NSISOLatin4StringEncoding"]) { + return NSISOLatin4StringEncoding; + } +#endif + +#ifdef NSISOCyrillicStringEncoding + if ([encName isEqual:@"NSISOCyrillicStringEncoding"]) { + return NSISOCyrillicStringEncoding; + } +#endif + +#ifdef NSISOArabicStringEncoding + if ([encName isEqual:@"NSISOArabicStringEncoding"]) { + return NSISOArabicStringEncoding; + } +#endif + +#ifdef NSISOGreekStringEncoding + if ([encName isEqual:@"NSISOGreekStringEncoding"]) { + return NSISOGreekStringEncoding; + } +#endif + +#ifdef NSISOHebrewStringEncoding + if ([encName isEqual:@"NSISOHebrewStringEncoding"]) { + return NSISOHebrewStringEncoding; + } +#endif + +#ifdef NSISOLatin5StringEncoding + if ([encName isEqual:@"NSISOLatin5StringEncoding"]) { + return NSISOLatin5StringEncoding; + } +#endif + +#ifdef NSISOLatin6StringEncoding + if ([encName isEqual:@"NSISOLatin6StringEncoding"]) { + return NSISOLatin6StringEncoding; + } +#endif + +#ifdef NSISOThaiStringEncoding + if ([encName isEqual:@"NSISOThaiStringEncoding"]) { + return NSISOThaiStringEncoding; + } +#endif + +#ifdef NSISOLatin7StringEncoding + if ([encName isEqual:@"NSISOLatin7StringEncoding"]) { + return NSISOLatin7StringEncoding; + } +#endif + +#ifdef NSISOLatin8StringEncoding + if ([encName isEqual:@"NSISOLatin8StringEncoding"]) { + return NSISOLatin8StringEncoding; + } +#endif + +#ifdef NSISOLatin9StringEncoding + if ([encName isEqual:@"NSISOLatin9StringEncoding"]) { + return NSISOLatin9StringEncoding; + } +#endif + +#ifdef NSGB2312StringEncoding + if ([encName isEqual:@"NSGB2312StringEncoding"]) { + return NSGB2312StringEncoding; + } +#endif + +#ifdef NSUTF7StringEncoding + if ([encName isEqual:@"NSUTF7StringEncoding"]) { + return NSUTF7StringEncoding; + } +#endif + +#ifdef NSGSM0338StringEncoding + if ([encName isEqual:@"NSGSM0338StringEncoding"]) { + return NSGSM0338StringEncoding; + } +#endif + +#ifdef NSBIG5StringEncoding + if ([encName isEqual:@"NSBIG5StringEncoding"]) { + return NSBIG5StringEncoding; + } +#endif + +#ifdef NSKoreanEUCStringEncoding + if ([encName isEqual:@"NSKoreanEUCStringEncoding"]) { + return NSKoreanEUCStringEncoding; + } +#endif + +#if OS_API_VERSION(100400,GS_API_LATEST) + + if ([encName isEqual:@"NSUTF16BigEndianStringEncoding"]) { + return NSUTF16BigEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF16LittleEndianStringEncoding"]) { + return NSUTF16LittleEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF32StringEncoding"]) { + return NSUTF32StringEncoding; + } + + if ([encName isEqual:@"NSUTF32BigEndianStringEncoding"]) { + return NSUTF32BigEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF32LittleEndianStringEncoding"]) { + return NSUTF32LittleEndianStringEncoding; + } + +#endif + return 0; +} + @end diff --git a/Source/NSString.m b/Source/NSString.m index c6c739d3b..496fc1f1b 100644 --- a/Source/NSString.m +++ b/Source/NSString.m @@ -5330,5 +5330,188 @@ static NSFileManager *fm = nil; [self replaceCharactersInRange: range withString: aString]; } +/** + * Returns an NSStringEncoding from the given name or + * GSUndefinedEncoding / 0 if not found. + * This code is used in GDL and GSWeb + * It is here to avoid copy+paste code. + */ + ++ (NSStringEncoding) encodingNamed:(NSString*) encName +{ + + if ((!encName) || ([encName length] < 18)) { + return 0; + } + + // the most common on top + if ([encName isEqual:@"NSUTF8StringEncoding"]) { + return NSUTF8StringEncoding; + } + + if ([encName isEqual:@"NSASCIIStringEncoding"]) { + return NSASCIIStringEncoding; + } + + if ([encName isEqual:@"NSNEXTSTEPStringEncoding"]) { + return NSNEXTSTEPStringEncoding; + } + + if ([encName isEqual:@"NSJapaneseEUCStringEncoding"]) { + return NSJapaneseEUCStringEncoding; + } + + if ([encName isEqual:@"NSISOLatin1StringEncoding"]) { + return NSISOLatin1StringEncoding; + } + + if ([encName isEqual:@"NSSymbolStringEncoding"]) { + return NSSymbolStringEncoding; + } + + if ([encName isEqual:@"NSNonLossyASCIIStringEncoding"]) { + return NSNonLossyASCIIStringEncoding; + } + + if ([encName isEqual:@"NSShiftJISStringEncoding"]) { + return NSShiftJISStringEncoding; + } + + if ([encName isEqual:@"NSUnicodeStringEncoding"]) { + return NSUnicodeStringEncoding; + } + + if ([encName isEqual:@"NSUTF16StringEncoding"]) { + return NSUTF16StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1251StringEncoding"]) { + return NSWindowsCP1251StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1252StringEncoding"]) { + return NSWindowsCP1252StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1253StringEncoding"]) { + return NSWindowsCP1253StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1254StringEncoding"]) { + return NSWindowsCP1254StringEncoding; + } + + if ([encName isEqual:@"NSWindowsCP1250StringEncoding"]) { + return NSWindowsCP1250StringEncoding; + } + + if ([encName isEqual:@"NSISO2022JPStringEncoding"]) { + return NSISO2022JPStringEncoding; + } + + if ([encName isEqual:@"NSMacOSRomanStringEncoding"]) { + return NSMacOSRomanStringEncoding; + } + + // does anybody need NSProprietaryStringEncoding? + + if ([encName isEqual:@"NSKOI8RStringEncoding"]) { + return NSKOI8RStringEncoding; + } + + if ([encName isEqual:@"NSISOLatin3StringEncoding"]) { + return NSISOLatin3StringEncoding; + } + + if ([encName isEqual:@"NSISOLatin4StringEncoding"]) { + return NSISOLatin4StringEncoding; + } + + if ([encName isEqual:@"NSISOCyrillicStringEncoding"]) { + return NSISOCyrillicStringEncoding; + } + + if ([encName isEqual:@"NSISOArabicStringEncoding"]) { + return NSISOArabicStringEncoding; + } + + if ([encName isEqual:@"NSISOGreekStringEncoding"]) { + return NSISOGreekStringEncoding; + } + + if ([encName isEqual:@"NSISOHebrewStringEncoding"]) { + return NSISOHebrewStringEncoding; + } + + if ([encName isEqual:@"NSISOLatin5StringEncoding"]) { + return NSISOLatin5StringEncoding; + } + + if ([encName isEqual:@"NSISOLatin6StringEncoding"]) { + return NSISOLatin6StringEncoding; + } + + if ([encName isEqual:@"NSISOThaiStringEncoding"]) { + return NSISOThaiStringEncoding; + } + + if ([encName isEqual:@"NSISOLatin7StringEncoding"]) { + return NSISOLatin7StringEncoding; + } + + if ([encName isEqual:@"NSISOLatin8StringEncoding"]) { + return NSISOLatin8StringEncoding; + } + + if ([encName isEqual:@"NSISOLatin9StringEncoding"]) { + return NSISOLatin9StringEncoding; + } + + if ([encName isEqual:@"NSGB2312StringEncoding"]) { + return NSGB2312StringEncoding; + } + + if ([encName isEqual:@"NSUTF7StringEncoding"]) { + return NSUTF7StringEncoding; + } + + if ([encName isEqual:@"NSGSM0338StringEncoding"]) { + return NSGSM0338StringEncoding; + } + + if ([encName isEqual:@"NSBIG5StringEncoding"]) { + return NSBIG5StringEncoding; + } + + if ([encName isEqual:@"NSKoreanEUCStringEncoding"]) { + return NSKoreanEUCStringEncoding; + } + +#if OS_API_VERSION(100400,GS_API_LATEST) + + if ([encName isEqual:@"NSUTF16BigEndianStringEncoding"]) { + return NSUTF16BigEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF16LittleEndianStringEncoding"]) { + return NSUTF16LittleEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF32StringEncoding"]) { + return NSUTF32StringEncoding; + } + + if ([encName isEqual:@"NSUTF32BigEndianStringEncoding"]) { + return NSUTF32BigEndianStringEncoding; + } + + if ([encName isEqual:@"NSUTF32LittleEndianStringEncoding"]) { + return NSUTF32LittleEndianStringEncoding; + } + +#endif + return 0; +} + @end