Clean up root folder.
[enjoyable.git] / Categories / NSString+FixFilename.m
diff --git a/Categories/NSString+FixFilename.m b/Categories/NSString+FixFilename.m
new file mode 100644 (file)
index 0000000..06a837c
--- /dev/null
@@ -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