X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=NSString%2BFixFilename.m;h=06a837cea725a31668764ec28465d96e9fc8f963;hp=fc8ba57fe4de788c353e3461c416350a4680184c;hb=56d825ba259066d847a9fc3f9c8c0c0a362a1507;hpb=b8c30e0c06effb8f4a937378e5c4cf8a22f40c59 diff --git a/NSString+FixFilename.m b/NSString+FixFilename.m index fc8ba57..06a837c 100644 --- a/NSString+FixFilename.m +++ b/NSString+FixFilename.m @@ -8,19 +8,28 @@ #import "NSString+FixFilename.h" +@implementation NSCharacterSet (FixFilename) + ++ (NSCharacterSet *)invalidPathComponentCharacterSet { + return [NSCharacterSet characterSetWithCharactersInString:@"\"\\/:*?<>|"]; +} + +@end + @implementation NSString (FixFilename) - (NSString *)stringByFixingPathComponent { - static NSCharacterSet *invalid; - if (!invalid) - invalid = [NSCharacterSet characterSetWithCharactersInString:@"/:"]; + NSCharacterSet *invalid = NSCharacterSet.invalidPathComponentCharacterSet; + NSCharacterSet *whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet; NSArray *parts = [self componentsSeparatedByCharactersInSet:invalid]; - NSString *newName = [parts componentsJoinedByString:@""]; - if (!newName.length) + NSString *name = [parts componentsJoinedByString:@"_"]; + name = [name stringByTrimmingCharactersInSet:whitespace]; + if (!name.length) return @"_"; - if ([newName characterAtIndex:0] == '.') - newName = [@"_" stringByAppendingString:newName]; - return newName; + unichar first = [name characterAtIndex:0]; + if (first == '.' || first == '-') + name = [@"_" stringByAppendingString:name]; + return name; } @end