 // from http://stackoverflow.com/a/31480534/255489
 func pathToFolderContainingThisScript() -> String {
     let cwd = NSFileManager.defaultManager().currentDirectoryPath
-    
+
     let script = Process.arguments[0];
-    
+
     if script.hasPrefix("/") { // absolute
         let path = (script as NSString).stringByDeletingLastPathComponent
         return path
     }
     else { // relative
         let urlCwd = NSURL(fileURLWithPath: cwd)
-        
+
         if let urlPath = NSURL(string: script, relativeToURL: urlCwd) {
             if let path = urlPath.path {
                 let path = (path as NSString).stringByDeletingLastPathComponent

    subscript(i: Int) -> Character {
        return self[startIndex.advancedBy(i)]
    }
    
    subscript(range: Range<Int>) -> String {
        return self[startIndex.advancedBy(range.startIndex)..<startIndex.advancedBy(range.endIndex)]
    }
    
    func camelCaseName(initialLetterCapitalized initialLetterCapitalized: Bool) -> String {
        let components: [String] = self.characters.split{$0 == " " || $0 == "-"}.map(String.init)
        var camelCaseComponents = components.map { $0.capitalizedString }

            if let customName = customMappings[self] {
                return customName // bail early!
            }

            let swiftCharacter = Character(UnicodeScalar(self))

            let theCFMutableString = NSMutableString(string: String(swiftCharacter)) as CFMutableString
            CFStringTransform(theCFMutableString, UnsafeMutablePointer<CFRange>(nil), kCFStringTransformToUnicodeName, false)

            let characterName = theCFMutableString as String
            var trimmedName = characterName

            if characterName != String(swiftCharacter) {
                // characterName will look like "\N{NO-BREAK SPACE}", so trim "\N{" and "}"
                trimmedName = characterName[3..<characterName.utf8.count - 1]
            }

            return trimmedName
        }
    }
