From f556442cea26b950729d16ab047e7d540f5db597 Mon Sep 17 00:00:00 2001 From: Eric Slosser Date: Wed, 11 Nov 2015 13:03:32 -0500 Subject: [PATCH 1/5] add special character - horizontal ellipsis --- Example/BonMot.xcodeproj/project.pbxproj | 2 + Example/BonMot/BONSpecialGenerator.swift | 219 +++++++++++++++++++++++ Pod/Classes/BONSpecial.h | 2 + Pod/Classes/BONSpecial.m | 1 + scripts/BONSpecialGenerator.swift | 1 + 5 files changed, 225 insertions(+) create mode 100755 Example/BonMot/BONSpecialGenerator.swift diff --git a/Example/BonMot.xcodeproj/project.pbxproj b/Example/BonMot.xcodeproj/project.pbxproj index aaa3f20d..e3194371 100644 --- a/Example/BonMot.xcodeproj/project.pbxproj +++ b/Example/BonMot.xcodeproj/project.pbxproj @@ -155,6 +155,7 @@ CDFDF5501B51880D00A1AD42 /* NSDictionary+BONEquality.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+BONEquality.m"; sourceTree = ""; }; CDFDF5531B518F3900A1AD42 /* BONDictionaryEqualityTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BONDictionaryEqualityTestCase.m; sourceTree = ""; }; DC26879CFC50F3E9302E163B /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig"; sourceTree = ""; }; + E1A265CE1BF3B898003D4536 /* BONSpecialGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BONSpecialGenerator.swift; sourceTree = ""; }; EA798F8B87019E9A6673F5A3 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; F79B786068DF6EE81053EF09 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -240,6 +241,7 @@ 6003F594195388D20070C39A /* Supporting Files */ = { isa = PBXGroup; children = ( + E1A265CE1BF3B898003D4536 /* BONSpecialGenerator.swift */, CDFC93B61AE59FCA00C2B7C9 /* Fonts */, 6003F595195388D20070C39A /* BonMot-Info.plist */, 6003F596195388D20070C39A /* InfoPlist.strings */, diff --git a/Example/BonMot/BONSpecialGenerator.swift b/Example/BonMot/BONSpecialGenerator.swift new file mode 100755 index 00000000..dd3a3ac3 --- /dev/null +++ b/Example/BonMot/BONSpecialGenerator.swift @@ -0,0 +1,219 @@ +#!/usr/bin/env swift + +// +// BONSpecialGenerator.swift +// BonMot +// +// Created by Zev Eisenberg on 7/16/15. +// + +import Foundation +import AppKit + +// Please keep this array sorted +let specialCharacters: [unichar] = [ + 0x0009, + 0x000A, + 0x0020, + 0x00A0, + 0x2002, + 0x2003, + 0x2007, + 0x2009, + 0x200A, + 0x200B, + 0x2011, + 0x2012, + 0x2013, + 0x2014, + 0x2026, // HORIZONTAL ELLIPSIS + 0x2028, + 0x2029, + 0x202F, + 0x2060, + 0x2212, + unichar(NSAttachmentCharacter), // 0xFFFC +] + +// CFStringTransform doesn't do a good job of naming these characters, so override with custom names +let customMappings: [unichar: String] = [ + 0x0009: "Tab", + 0x000A: "Line Feed", + 0x0020: "Space", +] + +// These characters can't be represented with universal character syntax (@"\uXXXX"), +// so we use [NSString stringWithFormat:@"%C", BONCharacterFoo]. We don't do this with all +// characters, even though it would make the code look nicer, for performance reasons +let charactersRequiringFormatStrings: Set = [ + 0x0009, + 0x000A, + 0x0020, +] + +extension unichar { + var unicodeName: String { + get { + 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(), 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.. Character { + return self[startIndex.advancedBy(i)] + } + + subscript(range: Range) -> String { + return self[startIndex.advancedBy(range.startIndex).. String { + let components: [String] = self.characters.split{$0 == " " || $0 == "-"}.map(String.init) + var camelCaseComponents = components.map { $0.capitalizedString } + if !initialLetterCapitalized && camelCaseComponents.count > 0 { + camelCaseComponents[0] = camelCaseComponents[0].lowercaseString + } + return camelCaseComponents.joinWithSeparator("") + + } + + var methodName: String { + return self.camelCaseName(initialLetterCapitalized: false) + } + + var enumerationValueName: String { + let camelCaseName = self.camelCaseName(initialLetterCapitalized: true) + let fullName = "BONCharacter" + camelCaseName + return fullName + } +} + +// 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 + return path + } + } + } + + return "" +} + +// ****************************** +// * * +// * Real program starts here * +// * * +// ****************************** + +// Make sure specialCharacters is sorted +let sortedSpecialCharacters = specialCharacters.sort({$0 < $1}) +if sortedSpecialCharacters != specialCharacters { + print("ERROR: The specialCharacters array is not sorted, and it must be.") + exit(1) +} + +// Populate strings with the declaration and implementation of the methods +var headerEnumString = "typedef NS_ENUM(unichar, BONCharacter) {\n" +var headerCodeString = "" +var implementationCodeString = "" + +for theUnichar in specialCharacters { + let characterName = theUnichar.unicodeName + let methodName = characterName.methodName + let enumerationName = characterName.enumerationValueName + + let hexValueString = NSString(format:"%.4X", theUnichar) + let enumerationStatement = " \(enumerationName) = 0x\(hexValueString),\n" + headerEnumString += enumerationStatement + + let methodPrototype = "+ (NSString *)\(methodName)" + let methodInterface = methodPrototype + ";" + + let returnExpression: String + + if charactersRequiringFormatStrings.contains(theUnichar) { + returnExpression = NSString(format:"return [NSString stringWithFormat:@\"%%C\", %@];", enumerationName) as String + } + else { + returnExpression = NSString(format:"return @\"\\u%.4X\";", theUnichar) as String + } + + let methodImplementation = "\(methodPrototype) { \(returnExpression as String) }" + + headerCodeString += (methodInterface + "\n") + implementationCodeString += (methodImplementation + "\n") +} + +headerEnumString += "};" + +// Get the contents of the template files + +let currentDirectory = pathToFolderContainingThisScript() +let headerTemplatePath = (currentDirectory as NSString).stringByAppendingPathComponent("BONSpecial.h template.txt") +let implementationTemplatePath = (currentDirectory as NSString).stringByAppendingPathComponent("BONSpecial.m template.txt") + +var headerTemplateString: String! +var implementationTemplateString: String! + +do { + headerTemplateString = try! NSString(contentsOfFile: headerTemplatePath, encoding: NSUTF8StringEncoding) as String + implementationTemplateString = try! NSString(contentsOfFile: implementationTemplatePath, encoding: NSUTF8StringEncoding) as String +} + +// Replace the template regions of the template files with the generated code +let replacementString = "{{ contents }}" + +let fullHeaderString = headerEnumString + "\n\n" + headerCodeString + +let headerOutputString = headerTemplateString.stringByReplacingOccurrencesOfString(replacementString, withString: fullHeaderString) +let implementationOutputString = implementationTemplateString.stringByReplacingOccurrencesOfString(replacementString, withString: implementationCodeString) + +// Write the files out to the project directory + +let projectDirectory = (currentDirectory as NSString).stringByDeletingLastPathComponent +let classesDirectory = (projectDirectory as NSString).stringByAppendingPathComponent("Pod/Classes") + +let baseFileName = "BONSpecial" +let headerFileName = (baseFileName as NSString).stringByAppendingPathExtension("h")! +let implementationFileName = (baseFileName as NSString).stringByAppendingPathExtension("m")! +let headerFilePath = (classesDirectory as NSString).stringByAppendingPathComponent(headerFileName) +let implementationFilePath = (classesDirectory as NSString).stringByAppendingPathComponent(implementationFileName) + +do { + try! headerOutputString.writeToFile(headerFilePath, atomically: true, encoding: NSUTF8StringEncoding) + try! implementationOutputString.writeToFile(implementationFilePath, atomically: true, encoding: NSUTF8StringEncoding) + + print("Updated \(headerFileName) and \(implementationFileName) in \(classesDirectory)") + print("Please run `pod install` to update the headers in the example project.") +} diff --git a/Pod/Classes/BONSpecial.h b/Pod/Classes/BONSpecial.h index f37a9b09..a83591c6 100644 --- a/Pod/Classes/BONSpecial.h +++ b/Pod/Classes/BONSpecial.h @@ -26,6 +26,7 @@ typedef NS_ENUM(unichar, BONCharacter) { BONCharacterFigureDash = 0x2012, BONCharacterEnDash = 0x2013, BONCharacterEmDash = 0x2014, + BONCharacterHorizontalEllipsis = 0x2026, BONCharacterLineSeparator = 0x2028, BONCharacterParagraphSeparator = 0x2029, BONCharacterNarrowNoBreakSpace = 0x202F, @@ -48,6 +49,7 @@ typedef NS_ENUM(unichar, BONCharacter) { + (NSString *)figureDash; + (NSString *)enDash; + (NSString *)emDash; ++ (NSString *)horizontalEllipsis; + (NSString *)lineSeparator; + (NSString *)paragraphSeparator; + (NSString *)narrowNoBreakSpace; diff --git a/Pod/Classes/BONSpecial.m b/Pod/Classes/BONSpecial.m index d977a0f5..6d229111 100644 --- a/Pod/Classes/BONSpecial.m +++ b/Pod/Classes/BONSpecial.m @@ -25,6 +25,7 @@ + (NSString *)nonBreakingHyphen { return @"\u2011"; } + (NSString *)figureDash { return @"\u2012"; } + (NSString *)enDash { return @"\u2013"; } + (NSString *)emDash { return @"\u2014"; } ++ (NSString *)horizontalEllipsis { return @"\u2026"; } + (NSString *)lineSeparator { return @"\u2028"; } + (NSString *)paragraphSeparator { return @"\u2029"; } + (NSString *)narrowNoBreakSpace { return @"\u202F"; } diff --git a/scripts/BONSpecialGenerator.swift b/scripts/BONSpecialGenerator.swift index 08782500..dd3a3ac3 100755 --- a/scripts/BONSpecialGenerator.swift +++ b/scripts/BONSpecialGenerator.swift @@ -26,6 +26,7 @@ let specialCharacters: [unichar] = [ 0x2012, 0x2013, 0x2014, + 0x2026, // HORIZONTAL ELLIPSIS 0x2028, 0x2029, 0x202F, From e083e58efb85e880e7e4370133605c7850dac965 Mon Sep 17 00:00:00 2001 From: Eric Slosser Date: Wed, 11 Nov 2015 13:45:21 -0500 Subject: [PATCH 2/5] remove comment --- Example/BonMot/BONSpecialGenerator.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Example/BonMot/BONSpecialGenerator.swift b/Example/BonMot/BONSpecialGenerator.swift index dd3a3ac3..2b3c8ce8 100755 --- a/Example/BonMot/BONSpecialGenerator.swift +++ b/Example/BonMot/BONSpecialGenerator.swift @@ -26,7 +26,7 @@ let specialCharacters: [unichar] = [ 0x2012, 0x2013, 0x2014, - 0x2026, // HORIZONTAL ELLIPSIS + 0x2026, 0x2028, 0x2029, 0x202F, From 00ba7daafa0162c284c3b1cc9e02d6f63b6aa1e2 Mon Sep 17 00:00:00 2001 From: Eric Slosser Date: Wed, 11 Nov 2015 13:52:37 -0500 Subject: [PATCH 3/5] remove comment --- Example/BonMot.xcodeproj/project.pbxproj | 4 ++-- scripts/BONSpecialGenerator.swift | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Example/BonMot.xcodeproj/project.pbxproj b/Example/BonMot.xcodeproj/project.pbxproj index e3194371..f030c045 100644 --- a/Example/BonMot.xcodeproj/project.pbxproj +++ b/Example/BonMot.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ CDFDF5501B51880D00A1AD42 /* NSDictionary+BONEquality.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+BONEquality.m"; sourceTree = ""; }; CDFDF5531B518F3900A1AD42 /* BONDictionaryEqualityTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BONDictionaryEqualityTestCase.m; sourceTree = ""; }; DC26879CFC50F3E9302E163B /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig"; sourceTree = ""; }; - E1A265CE1BF3B898003D4536 /* BONSpecialGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BONSpecialGenerator.swift; sourceTree = ""; }; + E19B7EA11BF3C517002CD3D8 /* BONSpecialGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BONSpecialGenerator.swift; sourceTree = ""; }; EA798F8B87019E9A6673F5A3 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; F79B786068DF6EE81053EF09 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -241,7 +241,7 @@ 6003F594195388D20070C39A /* Supporting Files */ = { isa = PBXGroup; children = ( - E1A265CE1BF3B898003D4536 /* BONSpecialGenerator.swift */, + E19B7EA11BF3C517002CD3D8 /* BONSpecialGenerator.swift */, CDFC93B61AE59FCA00C2B7C9 /* Fonts */, 6003F595195388D20070C39A /* BonMot-Info.plist */, 6003F596195388D20070C39A /* InfoPlist.strings */, diff --git a/scripts/BONSpecialGenerator.swift b/scripts/BONSpecialGenerator.swift index dd3a3ac3..2b3c8ce8 100755 --- a/scripts/BONSpecialGenerator.swift +++ b/scripts/BONSpecialGenerator.swift @@ -26,7 +26,7 @@ let specialCharacters: [unichar] = [ 0x2012, 0x2013, 0x2014, - 0x2026, // HORIZONTAL ELLIPSIS + 0x2026, 0x2028, 0x2029, 0x202F, From 409c27491e7620d289102223ff96e9cc250fed1c Mon Sep 17 00:00:00 2001 From: Eric Slosser Date: Wed, 11 Nov 2015 14:14:57 -0500 Subject: [PATCH 4/5] kill duplicate --- Example/BonMot/BONSpecialGenerator.swift | 219 ----------------------- 1 file changed, 219 deletions(-) delete mode 100755 Example/BonMot/BONSpecialGenerator.swift diff --git a/Example/BonMot/BONSpecialGenerator.swift b/Example/BonMot/BONSpecialGenerator.swift deleted file mode 100755 index 2b3c8ce8..00000000 --- a/Example/BonMot/BONSpecialGenerator.swift +++ /dev/null @@ -1,219 +0,0 @@ -#!/usr/bin/env swift - -// -// BONSpecialGenerator.swift -// BonMot -// -// Created by Zev Eisenberg on 7/16/15. -// - -import Foundation -import AppKit - -// Please keep this array sorted -let specialCharacters: [unichar] = [ - 0x0009, - 0x000A, - 0x0020, - 0x00A0, - 0x2002, - 0x2003, - 0x2007, - 0x2009, - 0x200A, - 0x200B, - 0x2011, - 0x2012, - 0x2013, - 0x2014, - 0x2026, - 0x2028, - 0x2029, - 0x202F, - 0x2060, - 0x2212, - unichar(NSAttachmentCharacter), // 0xFFFC -] - -// CFStringTransform doesn't do a good job of naming these characters, so override with custom names -let customMappings: [unichar: String] = [ - 0x0009: "Tab", - 0x000A: "Line Feed", - 0x0020: "Space", -] - -// These characters can't be represented with universal character syntax (@"\uXXXX"), -// so we use [NSString stringWithFormat:@"%C", BONCharacterFoo]. We don't do this with all -// characters, even though it would make the code look nicer, for performance reasons -let charactersRequiringFormatStrings: Set = [ - 0x0009, - 0x000A, - 0x0020, -] - -extension unichar { - var unicodeName: String { - get { - 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(), 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.. Character { - return self[startIndex.advancedBy(i)] - } - - subscript(range: Range) -> String { - return self[startIndex.advancedBy(range.startIndex).. String { - let components: [String] = self.characters.split{$0 == " " || $0 == "-"}.map(String.init) - var camelCaseComponents = components.map { $0.capitalizedString } - if !initialLetterCapitalized && camelCaseComponents.count > 0 { - camelCaseComponents[0] = camelCaseComponents[0].lowercaseString - } - return camelCaseComponents.joinWithSeparator("") - - } - - var methodName: String { - return self.camelCaseName(initialLetterCapitalized: false) - } - - var enumerationValueName: String { - let camelCaseName = self.camelCaseName(initialLetterCapitalized: true) - let fullName = "BONCharacter" + camelCaseName - return fullName - } -} - -// 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 - return path - } - } - } - - return "" -} - -// ****************************** -// * * -// * Real program starts here * -// * * -// ****************************** - -// Make sure specialCharacters is sorted -let sortedSpecialCharacters = specialCharacters.sort({$0 < $1}) -if sortedSpecialCharacters != specialCharacters { - print("ERROR: The specialCharacters array is not sorted, and it must be.") - exit(1) -} - -// Populate strings with the declaration and implementation of the methods -var headerEnumString = "typedef NS_ENUM(unichar, BONCharacter) {\n" -var headerCodeString = "" -var implementationCodeString = "" - -for theUnichar in specialCharacters { - let characterName = theUnichar.unicodeName - let methodName = characterName.methodName - let enumerationName = characterName.enumerationValueName - - let hexValueString = NSString(format:"%.4X", theUnichar) - let enumerationStatement = " \(enumerationName) = 0x\(hexValueString),\n" - headerEnumString += enumerationStatement - - let methodPrototype = "+ (NSString *)\(methodName)" - let methodInterface = methodPrototype + ";" - - let returnExpression: String - - if charactersRequiringFormatStrings.contains(theUnichar) { - returnExpression = NSString(format:"return [NSString stringWithFormat:@\"%%C\", %@];", enumerationName) as String - } - else { - returnExpression = NSString(format:"return @\"\\u%.4X\";", theUnichar) as String - } - - let methodImplementation = "\(methodPrototype) { \(returnExpression as String) }" - - headerCodeString += (methodInterface + "\n") - implementationCodeString += (methodImplementation + "\n") -} - -headerEnumString += "};" - -// Get the contents of the template files - -let currentDirectory = pathToFolderContainingThisScript() -let headerTemplatePath = (currentDirectory as NSString).stringByAppendingPathComponent("BONSpecial.h template.txt") -let implementationTemplatePath = (currentDirectory as NSString).stringByAppendingPathComponent("BONSpecial.m template.txt") - -var headerTemplateString: String! -var implementationTemplateString: String! - -do { - headerTemplateString = try! NSString(contentsOfFile: headerTemplatePath, encoding: NSUTF8StringEncoding) as String - implementationTemplateString = try! NSString(contentsOfFile: implementationTemplatePath, encoding: NSUTF8StringEncoding) as String -} - -// Replace the template regions of the template files with the generated code -let replacementString = "{{ contents }}" - -let fullHeaderString = headerEnumString + "\n\n" + headerCodeString - -let headerOutputString = headerTemplateString.stringByReplacingOccurrencesOfString(replacementString, withString: fullHeaderString) -let implementationOutputString = implementationTemplateString.stringByReplacingOccurrencesOfString(replacementString, withString: implementationCodeString) - -// Write the files out to the project directory - -let projectDirectory = (currentDirectory as NSString).stringByDeletingLastPathComponent -let classesDirectory = (projectDirectory as NSString).stringByAppendingPathComponent("Pod/Classes") - -let baseFileName = "BONSpecial" -let headerFileName = (baseFileName as NSString).stringByAppendingPathExtension("h")! -let implementationFileName = (baseFileName as NSString).stringByAppendingPathExtension("m")! -let headerFilePath = (classesDirectory as NSString).stringByAppendingPathComponent(headerFileName) -let implementationFilePath = (classesDirectory as NSString).stringByAppendingPathComponent(implementationFileName) - -do { - try! headerOutputString.writeToFile(headerFilePath, atomically: true, encoding: NSUTF8StringEncoding) - try! implementationOutputString.writeToFile(implementationFilePath, atomically: true, encoding: NSUTF8StringEncoding) - - print("Updated \(headerFileName) and \(implementationFileName) in \(classesDirectory)") - print("Please run `pod install` to update the headers in the example project.") -} From 88bed5fc27ce921d499b4c39ac6c7147a755585e Mon Sep 17 00:00:00 2001 From: Eric Slosser Date: Wed, 11 Nov 2015 15:56:33 -0500 Subject: [PATCH 5/5] crazy Xcode --- Example/BonMot.xcodeproj/project.pbxproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Example/BonMot.xcodeproj/project.pbxproj b/Example/BonMot.xcodeproj/project.pbxproj index f030c045..b97a4f07 100644 --- a/Example/BonMot.xcodeproj/project.pbxproj +++ b/Example/BonMot.xcodeproj/project.pbxproj @@ -155,7 +155,7 @@ CDFDF5501B51880D00A1AD42 /* NSDictionary+BONEquality.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+BONEquality.m"; sourceTree = ""; }; CDFDF5531B518F3900A1AD42 /* BONDictionaryEqualityTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BONDictionaryEqualityTestCase.m; sourceTree = ""; }; DC26879CFC50F3E9302E163B /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Tests/Pods-Tests.debug.xcconfig"; sourceTree = ""; }; - E19B7EA11BF3C517002CD3D8 /* BONSpecialGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BONSpecialGenerator.swift; sourceTree = ""; }; + E19B7EA11BF3C517002CD3D8 /* BONSpecialGenerator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BONSpecialGenerator.swift; path = ../scripts/BONSpecialGenerator.swift; sourceTree = SOURCE_ROOT; }; EA798F8B87019E9A6673F5A3 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; F79B786068DF6EE81053EF09 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-BonMot.release.xcconfig"; path = "Pods/Target Support Files/Pods-BonMot/Pods-BonMot.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */