--- /dev/null
+//
+// 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