X-Git-Url: https://git.yukkurigames.com/?p=enjoyable.git;a=blobdiff_plain;f=Categories%2FNSString%2BFixFilename.m;fp=Categories%2FNSString%2BFixFilename.m;h=06a837cea725a31668764ec28465d96e9fc8f963;hp=0000000000000000000000000000000000000000;hb=0064c1fbff36795885a9724081af2a17d83c20a3;hpb=56d825ba259066d847a9fc3f9c8c0c0a362a1507 diff --git a/Categories/NSString+FixFilename.m b/Categories/NSString+FixFilename.m new file mode 100644 index 0000000..06a837c --- /dev/null +++ b/Categories/NSString+FixFilename.m @@ -0,0 +1,35 @@ +// +// NSString+FixFilename.m +// Enjoyable +// +// Created by Joe Wreschnig on 3/7/13. +// +// + +#import "NSString+FixFilename.h" + +@implementation NSCharacterSet (FixFilename) + ++ (NSCharacterSet *)invalidPathComponentCharacterSet { + return [NSCharacterSet characterSetWithCharactersInString:@"\"\\/:*?<>|"]; +} + +@end + +@implementation NSString (FixFilename) + +- (NSString *)stringByFixingPathComponent { + NSCharacterSet *invalid = NSCharacterSet.invalidPathComponentCharacterSet; + NSCharacterSet *whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet; + NSArray *parts = [self componentsSeparatedByCharactersInSet:invalid]; + NSString *name = [parts componentsJoinedByString:@"_"]; + name = [name stringByTrimmingCharactersInSet:whitespace]; + if (!name.length) + return @"_"; + unichar first = [name characterAtIndex:0]; + if (first == '.' || first == '-') + name = [@"_" stringByAppendingString:name]; + return name; +} + +@end