diff --git a/.travis.yml b/.travis.yml index 7937ff44..27d3eff1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ # * https://github.com/supermarin/xcpretty#usage language: objective-c -osx_image: xcode6.4 +osx_image: xcode7 # cache: cocoapods # podfile: Example/Podfile # before_install: diff --git a/Example/BonMot.xcodeproj/project.pbxproj b/Example/BonMot.xcodeproj/project.pbxproj index cce378eb..b8c07fdc 100644 --- a/Example/BonMot.xcodeproj/project.pbxproj +++ b/Example/BonMot.xcodeproj/project.pbxproj @@ -252,6 +252,7 @@ CD24988C1B30CBA90055F2A7 /* BONTrackingTestCase.m */, CD39D86D1B7FE1CB00336231 /* BONIndentSpacerTestCase.m */, CDFDF5531B518F3900A1AD42 /* BONDictionaryEqualityTestCase.m */, + CDB7D3581BC86FF8006B842F /* BONChainableTestCase.m */, CDAB918B1B5F2A410023E432 /* BONTextAlignmentConstraintTestCase.m */, 6003F5B6195388D20070C39A /* Supporting Files */, ); @@ -364,6 +365,7 @@ 6003F587195388D20070C39A /* Frameworks */, 6003F588195388D20070C39A /* Resources */, BE78F1BA6C5EE44EDEB3F0D1 /* Copy Pods Resources */, + 9A3EDE593CCFF3A23E681016 /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -383,6 +385,7 @@ 6003F5AB195388D20070C39A /* Frameworks */, 6003F5AC195388D20070C39A /* Resources */, 4B189F1C62BA8C46507CA25B /* Copy Pods Resources */, + F8E39F3EA9A6C644F3FCE452 /* Embed Pods Frameworks */, ); buildRules = ( ); @@ -489,6 +492,21 @@ shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests/Pods-Tests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 9A3EDE593CCFF3A23E681016 /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-BonMot/Pods-BonMot-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; BE78F1BA6C5EE44EDEB3F0D1 /* Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -519,6 +537,21 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; + F8E39F3EA9A6C644F3FCE452 /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-Tests/Pods-Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -554,6 +587,7 @@ CDB7D35B1BC88C05006B842F /* BONPropertyClobberingTestCase.m in Sources */, CDFDF5541B518F3900A1AD42 /* BONDictionaryEqualityTestCase.m in Sources */, CDFCA9E11B5078E0000E47DB /* BONBaseTestCase.m in Sources */, + CDB7D3591BC86FF8006B842F /* BONChainableTestCase.m in Sources */, CD39D86E1B7FE1CB00336231 /* BONIndentSpacerTestCase.m in Sources */, CD24988D1B30CBA90055F2A7 /* BONTrackingTestCase.m in Sources */, CDAB918C1B5F2A410023E432 /* BONTextAlignmentConstraintTestCase.m in Sources */, @@ -702,6 +736,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "BonMot/BonMot-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = BonMot; @@ -715,6 +750,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = "BonMot/BonMot-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; PRODUCT_NAME = BonMot; diff --git a/Example/BonMot.xcodeproj/xcshareddata/xcschemes/BonMot-Example.xcscheme b/Example/BonMot.xcodeproj/xcshareddata/xcschemes/BonMot-Example.xcscheme index 635a3e02..9404b11e 100644 --- a/Example/BonMot.xcodeproj/xcshareddata/xcschemes/BonMot-Example.xcscheme +++ b/Example/BonMot.xcodeproj/xcshareddata/xcschemes/BonMot-Example.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -48,15 +48,18 @@ ReferencedContainer = "container:BonMot.xcodeproj"> + + @@ -72,10 +75,10 @@ diff --git a/Example/BonMot/Cells/IndentationCell.m b/Example/BonMot/Cells/IndentationCell.m index c8a8f6e8..c74b9a0e 100644 --- a/Example/BonMot/Cells/IndentationCell.m +++ b/Example/BonMot/Cells/IndentationCell.m @@ -33,8 +33,8 @@ - (void)awakeFromNib BONChain *firstBaseTextChain = BONChain.new.fontNameAndSize(@"AvenirNextCondensed-Medium", 18.0f); BONChain *imageChain = firstBaseTextChain.image(image).indentSpacer(4.0f).baselineOffset(-6.0f); - imageChain.append(firstBaseTextChain.string(quote)) - .append(firstBaseTextChain.string(attribution)); + [imageChain appendLink:firstBaseTextChain.string(quote)]; + [imageChain appendLink:firstBaseTextChain.string(attribution)]; NSAttributedString *imageAttributedString = imageChain.attributedString; @@ -44,7 +44,7 @@ - (void)awakeFromNib NSString *secondQuote = @"You can also use strings (including emoji) for bullets as well, and they will still properly indent the appended text by the right amount."; BONChain *secondBaseTextChain = BONChain.new.fontNameAndSize(@"AvenirNextCondensed-Regular", 18.0f); BONChain *secondChain = secondBaseTextChain.string(@"🍑 →").indentSpacer(4.0f).textColor([UIColor orangeColor]); - secondChain.append(secondBaseTextChain.string(secondQuote).textColor([UIColor darkGrayColor])); + [secondChain appendLink:secondBaseTextChain.string(secondQuote).textColor([UIColor darkGrayColor])]; NSAttributedString *textAttributedString = secondChain.attributedString; self.stringPrefixLabel.attributedText = textAttributedString; diff --git a/Example/BonMot/Cells/InlineImagesCell.m b/Example/BonMot/Cells/InlineImagesCell.m index f0dad05a..9ecfbc24 100644 --- a/Example/BonMot/Cells/InlineImagesCell.m +++ b/Example/BonMot/Cells/InlineImagesCell.m @@ -40,15 +40,16 @@ - (void)awakeFromNib BONChain *spaceChain = BONChain.new.string(@" "); BONChain *wholeString = BONChain.new; - wholeString - .append(twoChain) - .appendWithSeparator(@" ", beeChain) - .appendWithSeparator(@" ", oarChain) - .appendWithSeparator(@" ", knotChain) + [wholeString appendLink:twoChain]; + [wholeString appendLink:beeChain separator:@" "]; + [wholeString appendLink:oarChain separator:@" "]; + [wholeString appendLink:knotChain separator:@" "]; + // you can also append the space and the chain separately if you prefer - .append(spaceChain) - .append(twoChain) - .appendWithSeparator(@" ", beeChain); + [wholeString appendLink:spaceChain]; + [wholeString appendLink:twoChain]; + + [wholeString appendLink:beeChain separator:@" "]; self.label.attributedText = wholeString.attributedString; diff --git a/Example/BonMot/Cells/SpecialCharactersCell.m b/Example/BonMot/Cells/SpecialCharactersCell.m index 9447ca97..0fa08b40 100644 --- a/Example/BonMot/Cells/SpecialCharactersCell.m +++ b/Example/BonMot/Cells/SpecialCharactersCell.m @@ -50,7 +50,7 @@ - (void)awakeFromNib UIImage *image = [UIImage imageNamed:imageNames[theIndex]]; NSAssert(image, @"Image must not be nil"); BONChain *chunk = baseImageChain.image(image); - chunk.appendWithSeparator(BONSpecial.noBreakSpace, baseTextChain.string(words[theIndex])); + [chunk appendLink:baseTextChain.string(words[theIndex]) separator:BONSpecial.noBreakSpace]; [chunks addObject:chunk.text]; } diff --git a/Example/Podfile.lock b/Example/Podfile.lock index e5a97779..00221364 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - BonMot (1.2) + - BonMot (1.2.2) DEPENDENCIES: - BonMot (from `../`) @@ -9,6 +9,6 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - BonMot: d712a7b8b9a7d29e5ca64cb56ab784f4c26f864b + BonMot: 3001d57d0ca8f49f039df79286fd3f14b360f3e1 -COCOAPODS: 0.38.2 +COCOAPODS: 0.39.0 diff --git a/Example/Pods/Headers/Private/BonMot/BONChainable.h b/Example/Pods/Headers/Private/BonMot/BONChainable.h new file mode 120000 index 00000000..df09463a --- /dev/null +++ b/Example/Pods/Headers/Private/BonMot/BONChainable.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/BONChainable.h \ No newline at end of file diff --git a/Example/Pods/Headers/Public/BonMot/BONChainable.h b/Example/Pods/Headers/Public/BonMot/BONChainable.h new file mode 120000 index 00000000..df09463a --- /dev/null +++ b/Example/Pods/Headers/Public/BonMot/BONChainable.h @@ -0,0 +1 @@ +../../../../../Pod/Classes/BONChainable.h \ No newline at end of file diff --git a/Example/Pods/Local Podspecs/BonMot.podspec.json b/Example/Pods/Local Podspecs/BonMot.podspec.json index 34fc433b..026aa9f1 100644 --- a/Example/Pods/Local Podspecs/BonMot.podspec.json +++ b/Example/Pods/Local Podspecs/BonMot.podspec.json @@ -1,6 +1,6 @@ { "name": "BonMot", - "version": "1.2", + "version": "1.2.2", "summary": "An Objective-C attributed string generation library.", "description": "BonMot removes all the mystery from creating beautiful, powerful attributed strings on iOS.", "homepage": "https://github.com/ZevEisenberg/BonMot", @@ -10,7 +10,7 @@ }, "source": { "git": "https://github.com/ZevEisenberg/BonMot.git", - "tag": "1.2" + "tag": "1.2.2" }, "social_media_url": "https://twitter.com/ZevEisenberg", "platforms": { diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index e5a97779..00221364 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - BonMot (1.2) + - BonMot (1.2.2) DEPENDENCIES: - BonMot (from `../`) @@ -9,6 +9,6 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - BonMot: d712a7b8b9a7d29e5ca64cb56ab784f4c26f864b + BonMot: 3001d57d0ca8f49f039df79286fd3f14b360f3e1 -COCOAPODS: 0.38.2 +COCOAPODS: 0.39.0 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index dff0afe5..3acde5f1 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,104 +7,107 @@ objects = { /* Begin PBXBuildFile section */ - 150841003DEEB4B7026CFB8A3D976842 /* Pods-BonMot-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 201CFC893F8B5F45B14C4C62ECA02D26 /* Pods-BonMot-dummy.m */; }; - 1D1A0E1124981CFB45461AC3315DAA9B /* BONTextAlignmentConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 239EFE6C42780D492CA014A019F673CC /* BONTextAlignmentConstraint.h */; }; - 244E91BB1599320BB475FC0E38F79EC6 /* BONTextAlignmentConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 35D1814773089093B0D6B0C9A25BB732 /* BONTextAlignmentConstraint.m */; }; - 3B3E1E2F10F39F48ADD9E35269BAF3A6 /* BONText.h in Headers */ = {isa = PBXBuildFile; fileRef = 3793B4E41B13FE775B8ACB9306DD95FF /* BONText.h */; }; - 3C9273C1460CC91EE129869AF05994FD /* UIImage+BonMotUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E35246296B2DD62CF8DB686CBC6809 /* UIImage+BonMotUtilities.h */; }; - 417086C1BA218AB8D4EC26F7F344F955 /* BONChain.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B22D1E88CC603C8C02CA6DD7725265 /* BONChain.m */; }; - 4294C2A8D75772BCD4B97452C5289252 /* Pods-Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FA633CDB1FE4680F08A9EEA19363582 /* Pods-Tests-dummy.m */; }; - 43383C439FC3EF5AE70E19B979DC4971 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DBBBB1CA734A75E4CEB8F369BECE3005 /* UIKit.framework */; }; - 4AD1808743B3F0D84287DCE338C2659D /* BONText.m in Sources */ = {isa = PBXBuildFile; fileRef = 47962BCF3935CD73BC9A8A154EB5C0FA /* BONText.m */; }; - 6AA2B339306F5E16FC6ECB2C30F975C3 /* BonMot.h in Headers */ = {isa = PBXBuildFile; fileRef = F2FBE601CD68193A507F1666F49374D6 /* BonMot.h */; }; - 721B706E57E883092B25D9A370017850 /* BONText_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = E828DF50191F37D0735D1DB39F10A0D5 /* BONText_Private.h */; }; - 76640E240D233D267566205C220C3809 /* BonMot-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C1CC0012EC6B8320D51E7C819B8BF32 /* BonMot-dummy.m */; }; - 78151EDF3D68DE3FD0CB705BF9CAA23F /* BONSpecial.h in Headers */ = {isa = PBXBuildFile; fileRef = 520E5E9FC39EB510BA48E2DFCC0BBCD1 /* BONSpecial.h */; }; - 7C523AC6C4CA6C6562BAA1EF562BF7AB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C479627B19C801C86988C2AC23D1A40E /* Foundation.framework */; }; - BF146E1B57E06019933F31A4B1BD229E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C479627B19C801C86988C2AC23D1A40E /* Foundation.framework */; }; - CCF79645DC30C53A72F47EB18D723443 /* BONChain.h in Headers */ = {isa = PBXBuildFile; fileRef = BB2123066B69DD22F36ED9462C9C046C /* BONChain.h */; }; - E012A0A428B3D13A93DED56A1F722BFF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C479627B19C801C86988C2AC23D1A40E /* Foundation.framework */; }; - E72A926E974F8A8BA97DBC2E29A1E1B4 /* UIImage+BonMotUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FD4E5A2025263D35B7F095F2E49D3D2C /* UIImage+BonMotUtilities.m */; }; - FD66F144C08360DA34DB55AA073044D8 /* BONSpecial.m in Sources */ = {isa = PBXBuildFile; fileRef = 503A44A5404E889CC219974F0F79441F /* BONSpecial.m */; }; + 043FC42A566A13B5E5B54035FE58652C /* BONText.m in Sources */ = {isa = PBXBuildFile; fileRef = 43CDAFA5EB71FCA3895589DA92749815 /* BONText.m */; }; + 06DA74DF3CA97CA4D0B83BE3F581CF5B /* BONText_Private.h in Headers */ = {isa = PBXBuildFile; fileRef = C043FBA4AA1BCC4F3CE67258B2CFC2C7 /* BONText_Private.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 14F09CB056FAFE5BA77E28F4AF903784 /* BONChainable.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFA85BED368070C2F507CCFE47BEAA5 /* BONChainable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1A6175631848CB9330263225E9326E32 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3B7BDF5CE5CB8F095FE12DA55D9A9BB /* UIKit.framework */; }; + 1DA986A1A3A5EBE3FB76055E916D65C9 /* BonMot.h in Headers */ = {isa = PBXBuildFile; fileRef = F2CD5FCCF564C23CEAA7E19659A6377D /* BonMot.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CE6F18DC6007F1ECA080663F08F487A /* Pods-Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C0DD8F1F459912BEDACF3A11C3E72CC /* Pods-Tests-dummy.m */; }; + 3FC16F64BDA4F5D1120930BDF49A5D40 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E7E5AF37923BFA48D6994B9BFC6535F /* Foundation.framework */; }; + 532335DFAA8A5BD5F2A230EAEF352DAF /* UIImage+BonMotUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C911B019F53792B92E95CDB380BC6C0 /* UIImage+BonMotUtilities.m */; }; + 79C89FF5FB4CEE8BC1D2900932D97EE0 /* BONChain.h in Headers */ = {isa = PBXBuildFile; fileRef = 008986A31E2A5F46B584286A61D64854 /* BONChain.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 82622120D66A4580C1DAE22014D69DB1 /* BONSpecial.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D5D499338C7077317435231CCB6DDD3 /* BONSpecial.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8695A1C128EE7CF7089FB980916AE202 /* Pods-BonMot-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BA21FB0B90D84D32DDCD016F2873126D /* Pods-BonMot-dummy.m */; }; + 87D656287C2BC9A1F524C39E73CE4C8B /* UIImage+BonMotUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = AB3615CDE4D5B8DE84F240C793EF82DE /* UIImage+BonMotUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8F2CB632E1F002E69D89650773A529FC /* BONTextAlignmentConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 4953C569CBAC1466D4C2FD36AAAE6762 /* BONTextAlignmentConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9BBCD3DE245F5839C5D012ED1CDDE027 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E7E5AF37923BFA48D6994B9BFC6535F /* Foundation.framework */; }; + 9EBA0CCCF43CEAEDBA7E8BE9A5E9196F /* BONSpecial.m in Sources */ = {isa = PBXBuildFile; fileRef = 51316E59A0C58872004C531434C7863D /* BONSpecial.m */; }; + A4D9EA9B721E080A7BF3476593319420 /* BonMot-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A73C243EAEFDE040E0BCB03FB601F3B3 /* BonMot-dummy.m */; }; + A926DA8F81E977F8A01043D65759269B /* BONTextAlignmentConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B5090FBFCD0F1B837E1D5BB67BE8C8C /* BONTextAlignmentConstraint.m */; }; + B376D4341C61F8338D1DF29AFABFAF6E /* BONChain.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBF76B85123B7C09FE242D0A3A14087 /* BONChain.m */; }; + C89860967C478A5B80BCA962228F340E /* BONText.h in Headers */ = {isa = PBXBuildFile; fileRef = E76D3C9537C7ECEB2F49BEB5A23665E7 /* BONText.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1A14B2FCC4438E940438B546E54678C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6E7E5AF37923BFA48D6994B9BFC6535F /* Foundation.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0524762949B12FAC591EFC2D16D0119E /* PBXContainerItemProxy */ = { + 6CED3EE64050FAD1B2F50A5D015C0163 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F3D270334877253CC8CF8110DF21C797; + remoteGlobalIDString = 5410D72EECF055B1A5710BAE3F1D8EF1; remoteInfo = BonMot; }; - C51CB2641995540AC9F308178AD05A23 /* PBXContainerItemProxy */ = { + 8226631CC54471B023DB9D56197A96A5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = F3D270334877253CC8CF8110DF21C797; + remoteGlobalIDString = 5410D72EECF055B1A5710BAE3F1D8EF1; remoteInfo = BonMot; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 16E30424B89E71218937F8FCF1AD3C86 /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BonMot.release.xcconfig"; sourceTree = ""; }; - 201CFC893F8B5F45B14C4C62ECA02D26 /* Pods-BonMot-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BonMot-dummy.m"; sourceTree = ""; }; - 20F85573E13DF43E011EBA51DB68D7DF /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.debug.xcconfig"; sourceTree = ""; }; - 239EFE6C42780D492CA014A019F673CC /* BONTextAlignmentConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONTextAlignmentConstraint.h; sourceTree = ""; }; - 34EE0247B39DA39F63BE283B5A4073EC /* BonMot-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BonMot-prefix.pch"; sourceTree = ""; }; - 35D1814773089093B0D6B0C9A25BB732 /* BONTextAlignmentConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONTextAlignmentConstraint.m; sourceTree = ""; }; - 3793B4E41B13FE775B8ACB9306DD95FF /* BONText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONText.h; sourceTree = ""; }; - 462F94A477BF32B99EC7C71C82B012F2 /* Pods-Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Tests-acknowledgements.plist"; sourceTree = ""; }; - 47962BCF3935CD73BC9A8A154EB5C0FA /* BONText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONText.m; sourceTree = ""; }; - 503A44A5404E889CC219974F0F79441F /* BONSpecial.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONSpecial.m; sourceTree = ""; }; - 520E5E9FC39EB510BA48E2DFCC0BBCD1 /* BONSpecial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONSpecial.h; sourceTree = ""; }; - 5228B26610570F6CDA6553DDBE6CE49C /* Pods-BonMot-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BonMot-acknowledgements.markdown"; sourceTree = ""; }; - 5FA633CDB1FE4680F08A9EEA19363582 /* Pods-Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Tests-dummy.m"; sourceTree = ""; }; - 602483FF69337FE9AACF162FEA146439 /* libPods-BonMot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BonMot.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 6B6852C6784A240A4B180E79A6D286FC /* Pods-BonMot-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BonMot-resources.sh"; sourceTree = ""; }; - 7C1CC0012EC6B8320D51E7C819B8BF32 /* BonMot-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BonMot-dummy.m"; sourceTree = ""; }; - 7EA6989C78A5811558489608125FC547 /* libPods-Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 85E35246296B2DD62CF8DB686CBC6809 /* UIImage+BonMotUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIImage+BonMotUtilities.h"; sourceTree = ""; }; - 95F197962A5843E749472156033E5B0F /* libBonMot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBonMot.a; sourceTree = BUILT_PRODUCTS_DIR; }; - 98FEDD28F62AFFB21EFC0DEC05D23BD9 /* Pods-Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Tests-resources.sh"; sourceTree = ""; }; + 008986A31E2A5F46B584286A61D64854 /* BONChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONChain.h; sourceTree = ""; }; + 0181B702EAB6E1B7FAF95A70D923AC50 /* Pods-BonMot-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BonMot-resources.sh"; sourceTree = ""; }; + 04EF79B38E49E1B174A83BA50ADC2194 /* Pods-BonMot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BonMot.debug.xcconfig"; sourceTree = ""; }; + 093D53CFD89C48A309AB81DFB7B149D7 /* Pods-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.release.xcconfig"; sourceTree = ""; }; + 1CDBA5088036629FE6856134EA58E7E3 /* Pods-Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Tests-acknowledgements.markdown"; sourceTree = ""; }; + 2C0DD8F1F459912BEDACF3A11C3E72CC /* Pods-Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Tests-dummy.m"; sourceTree = ""; }; + 3EBF76B85123B7C09FE242D0A3A14087 /* BONChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONChain.m; sourceTree = ""; }; + 43CDAFA5EB71FCA3895589DA92749815 /* BONText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONText.m; sourceTree = ""; }; + 4953C569CBAC1466D4C2FD36AAAE6762 /* BONTextAlignmentConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONTextAlignmentConstraint.h; sourceTree = ""; }; + 4D5D499338C7077317435231CCB6DDD3 /* BONSpecial.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONSpecial.h; sourceTree = ""; }; + 51316E59A0C58872004C531434C7863D /* BONSpecial.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONSpecial.m; sourceTree = ""; }; + 6E7E5AF37923BFA48D6994B9BFC6535F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 747EA054047CF3071723A593FF749B66 /* Pods-BonMot-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-BonMot-frameworks.sh"; sourceTree = ""; }; + 7FBA94404867E4D6EC5D6B1A5B1AFE66 /* Pods-Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Tests-acknowledgements.plist"; sourceTree = ""; }; + 8B5090FBFCD0F1B837E1D5BB67BE8C8C /* BONTextAlignmentConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONTextAlignmentConstraint.m; sourceTree = ""; }; + 9018A6C64852F1A79751E1828BCDA31C /* libPods-Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9C911B019F53792B92E95CDB380BC6C0 /* UIImage+BonMotUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIImage+BonMotUtilities.m"; sourceTree = ""; }; + 9FC421DCA4B4844606230BD6299C8833 /* BonMot-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "BonMot-prefix.pch"; sourceTree = ""; }; + A73C243EAEFDE040E0BCB03FB601F3B3 /* BonMot-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "BonMot-dummy.m"; sourceTree = ""; }; + A75A454EE3A6F09E60CE2E2FB5ABBE52 /* libPods-BonMot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-BonMot.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + A7E1002F878FE8D1C3658DABEFFD22CF /* libBonMot.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libBonMot.a; sourceTree = BUILT_PRODUCTS_DIR; }; + AB3615CDE4D5B8DE84F240C793EF82DE /* UIImage+BonMotUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "UIImage+BonMotUtilities.h"; sourceTree = ""; }; + AD96A95F5FA883588C8BFE643542CFF6 /* BonMot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BonMot.xcconfig; sourceTree = ""; }; + BA21FB0B90D84D32DDCD016F2873126D /* Pods-BonMot-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-BonMot-dummy.m"; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BB2123066B69DD22F36ED9462C9C046C /* BONChain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONChain.h; sourceTree = ""; }; - C479627B19C801C86988C2AC23D1A40E /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - D0B22D1E88CC603C8C02CA6DD7725265 /* BONChain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = BONChain.m; sourceTree = ""; }; - DBBBB1CA734A75E4CEB8F369BECE3005 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; - DD197818CEE36C5FD29F779076D594C3 /* BonMot-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "BonMot-Private.xcconfig"; sourceTree = ""; }; - E0F66EE50244031E320CBCD8EF27A548 /* BonMot.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = BonMot.xcconfig; sourceTree = ""; }; - E4E9CDBF6ED70514A8D41326CDD4225D /* Pods-Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Tests-acknowledgements.markdown"; sourceTree = ""; }; - E828DF50191F37D0735D1DB39F10A0D5 /* BONText_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONText_Private.h; sourceTree = ""; }; - EC98E877C61CA411BEE6A9D6563E5484 /* Pods-BonMot.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BonMot.debug.xcconfig"; sourceTree = ""; }; - F2FBE601CD68193A507F1666F49374D6 /* BonMot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BonMot.h; sourceTree = ""; }; - F83955BC6339968A754B740ECBAFE21E /* Pods-Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.release.xcconfig"; sourceTree = ""; }; - FC87243E82F5A727615E7653AB2958B5 /* Pods-BonMot-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BonMot-acknowledgements.plist"; sourceTree = ""; }; - FD4E5A2025263D35B7F095F2E49D3D2C /* UIImage+BonMotUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "UIImage+BonMotUtilities.m"; sourceTree = ""; }; + BCFA85BED368070C2F507CCFE47BEAA5 /* BONChainable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONChainable.h; sourceTree = ""; }; + BE4C9338E221726310CF05CDB73E731E /* Pods-BonMot.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-BonMot.release.xcconfig"; sourceTree = ""; }; + C043FBA4AA1BCC4F3CE67258B2CFC2C7 /* BONText_Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONText_Private.h; sourceTree = ""; }; + C2F05F9897ADDBC2B3F81FD48B418B89 /* Pods-Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Tests-frameworks.sh"; sourceTree = ""; }; + C3B7BDF5CE5CB8F095FE12DA55D9A9BB /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; }; + D94D22FE5684C97AAACB7DD0FC35F76B /* Pods-Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Tests-resources.sh"; sourceTree = ""; }; + E3F89FD3D4FD018EFA178D3F39E3BDC3 /* Pods-Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Tests.debug.xcconfig"; sourceTree = ""; }; + E76D3C9537C7ECEB2F49BEB5A23665E7 /* BONText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BONText.h; sourceTree = ""; }; + E81F59DD0FECFD90F7871946CB2F6606 /* Pods-BonMot-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-BonMot-acknowledgements.plist"; sourceTree = ""; }; + F2CD5FCCF564C23CEAA7E19659A6377D /* BonMot.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = BonMot.h; sourceTree = ""; }; + FB04319FEE0576920AB112C189DE129D /* Pods-BonMot-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-BonMot-acknowledgements.markdown"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 13C303487282FFD26C0339DF93C26261 /* Frameworks */ = { + 4AFDB3B5A599DB31FD6488D6221A8D91 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7C523AC6C4CA6C6562BAA1EF562BF7AB /* Foundation.framework in Frameworks */, + 3FC16F64BDA4F5D1120930BDF49A5D40 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 56C521DB8668637D0A35C6403F10DFD9 /* Frameworks */ = { + 9C0A8FE16B5495E8210C145707E5AC41 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - BF146E1B57E06019933F31A4B1BD229E /* Foundation.framework in Frameworks */, + 9BBCD3DE245F5839C5D012ED1CDDE027 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - ED8C2C4ED6EED6E88721D0691ECC45A7 /* Frameworks */ = { + C78B196FA2039E1E7777A78A5D3B9741 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E012A0A428B3D13A93DED56A1F722BFF /* Foundation.framework in Frameworks */, - 43383C439FC3EF5AE70E19B979DC4971 /* UIKit.framework in Frameworks */, + F1A14B2FCC4438E940438B546E54678C /* Foundation.framework in Frameworks */, + 1A6175631848CB9330263225E9326E32 /* UIKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -114,41 +117,50 @@ 00E39943C88CDCD96C7F43C8480DC9BE /* Development Pods */ = { isa = PBXGroup; children = ( - 7AFEFA2F381CCEEA327935CC56EE0291 /* BonMot */, + BDB475514232E0775A9D9BDFAA65678B /* BonMot */, ); name = "Development Pods"; sourceTree = ""; }; - 1D90FEF00FE60465B312D54C4CA7663C /* Targets Support Files */ = { + 071981B319E0E079F4A0A53F43E82501 /* Pod */ = { isa = PBXGroup; children = ( - 376C2C1DD0A43CC47BB9E1E2A3729214 /* Pods-BonMot */, - 485BAFB11C8C0FA7398C86EE61B790B8 /* Pods-Tests */, + F2CD5FCCF564C23CEAA7E19659A6377D /* BonMot.h */, + F93FE96E871793792F894775F6F9AC20 /* Classes */, ); - name = "Targets Support Files"; + path = Pod; sourceTree = ""; }; - 2D1C16A974134AC9709804E5E81C51A8 /* Support Files */ = { + 15031CF2CDB31A8350464DC09E82206F /* Support Files */ = { isa = PBXGroup; children = ( - E0F66EE50244031E320CBCD8EF27A548 /* BonMot.xcconfig */, - DD197818CEE36C5FD29F779076D594C3 /* BonMot-Private.xcconfig */, - 7C1CC0012EC6B8320D51E7C819B8BF32 /* BonMot-dummy.m */, - 34EE0247B39DA39F63BE283B5A4073EC /* BonMot-prefix.pch */, + AD96A95F5FA883588C8BFE643542CFF6 /* BonMot.xcconfig */, + A73C243EAEFDE040E0BCB03FB601F3B3 /* BonMot-dummy.m */, + 9FC421DCA4B4844606230BD6299C8833 /* BonMot-prefix.pch */, ); name = "Support Files"; path = "Example/Pods/Target Support Files/BonMot"; sourceTree = ""; }; - 376C2C1DD0A43CC47BB9E1E2A3729214 /* Pods-BonMot */ = { + 18340F12838DEE43507667CC74401EB1 /* iOS */ = { isa = PBXGroup; children = ( - 5228B26610570F6CDA6553DDBE6CE49C /* Pods-BonMot-acknowledgements.markdown */, - FC87243E82F5A727615E7653AB2958B5 /* Pods-BonMot-acknowledgements.plist */, - 201CFC893F8B5F45B14C4C62ECA02D26 /* Pods-BonMot-dummy.m */, - 6B6852C6784A240A4B180E79A6D286FC /* Pods-BonMot-resources.sh */, - EC98E877C61CA411BEE6A9D6563E5484 /* Pods-BonMot.debug.xcconfig */, - 16E30424B89E71218937F8FCF1AD3C86 /* Pods-BonMot.release.xcconfig */, + 6E7E5AF37923BFA48D6994B9BFC6535F /* Foundation.framework */, + C3B7BDF5CE5CB8F095FE12DA55D9A9BB /* UIKit.framework */, + ); + name = iOS; + sourceTree = ""; + }; + 2B4D786D97262B7275DD505C8E891EC0 /* Pods-BonMot */ = { + isa = PBXGroup; + children = ( + FB04319FEE0576920AB112C189DE129D /* Pods-BonMot-acknowledgements.markdown */, + E81F59DD0FECFD90F7871946CB2F6606 /* Pods-BonMot-acknowledgements.plist */, + BA21FB0B90D84D32DDCD016F2873126D /* Pods-BonMot-dummy.m */, + 747EA054047CF3071723A593FF749B66 /* Pods-BonMot-frameworks.sh */, + 0181B702EAB6E1B7FAF95A70D923AC50 /* Pods-BonMot-resources.sh */, + 04EF79B38E49E1B174A83BA50ADC2194 /* Pods-BonMot.debug.xcconfig */, + BE4C9338E221726310CF05CDB73E731E /* Pods-BonMot.release.xcconfig */, ); name = "Pods-BonMot"; path = "Target Support Files/Pods-BonMot"; @@ -157,33 +169,28 @@ 433CD3331B6C3787F473C941B61FC68F /* Frameworks */ = { isa = PBXGroup; children = ( - D0FB9306D21AF23A056944AE037CBFFF /* iOS */, + 18340F12838DEE43507667CC74401EB1 /* iOS */, ); name = Frameworks; sourceTree = ""; }; - 485BAFB11C8C0FA7398C86EE61B790B8 /* Pods-Tests */ = { + 6558104B3EC11ACEFD4B0D50CA31AAD0 /* Targets Support Files */ = { isa = PBXGroup; children = ( - E4E9CDBF6ED70514A8D41326CDD4225D /* Pods-Tests-acknowledgements.markdown */, - 462F94A477BF32B99EC7C71C82B012F2 /* Pods-Tests-acknowledgements.plist */, - 5FA633CDB1FE4680F08A9EEA19363582 /* Pods-Tests-dummy.m */, - 98FEDD28F62AFFB21EFC0DEC05D23BD9 /* Pods-Tests-resources.sh */, - 20F85573E13DF43E011EBA51DB68D7DF /* Pods-Tests.debug.xcconfig */, - F83955BC6339968A754B740ECBAFE21E /* Pods-Tests.release.xcconfig */, + 2B4D786D97262B7275DD505C8E891EC0 /* Pods-BonMot */, + 861CBCB321B02E43BAD913CE706715E4 /* Pods-Tests */, ); - name = "Pods-Tests"; - path = "Target Support Files/Pods-Tests"; + name = "Targets Support Files"; sourceTree = ""; }; - 7AFEFA2F381CCEEA327935CC56EE0291 /* BonMot */ = { + 7B28282059844C336511EC7789F277AB /* Products */ = { isa = PBXGroup; children = ( - 9E1F376F32230E90F7D250F3FEBE8E19 /* Pod */, - 2D1C16A974134AC9709804E5E81C51A8 /* Support Files */, + A7E1002F878FE8D1C3658DABEFFD22CF /* libBonMot.a */, + A75A454EE3A6F09E60CE2E2FB5ABBE52 /* libPods-BonMot.a */, + 9018A6C64852F1A79751E1828BCDA31C /* libPods-Tests.a */, ); - name = BonMot; - path = ../..; + name = Products; sourceTree = ""; }; 7DB346D0F39D3F0E887471402A8071AB = { @@ -192,53 +199,51 @@ BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */, 00E39943C88CDCD96C7F43C8480DC9BE /* Development Pods */, 433CD3331B6C3787F473C941B61FC68F /* Frameworks */, - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */, - 1D90FEF00FE60465B312D54C4CA7663C /* Targets Support Files */, + 7B28282059844C336511EC7789F277AB /* Products */, + 6558104B3EC11ACEFD4B0D50CA31AAD0 /* Targets Support Files */, ); sourceTree = ""; }; - 9E1F376F32230E90F7D250F3FEBE8E19 /* Pod */ = { + 861CBCB321B02E43BAD913CE706715E4 /* Pods-Tests */ = { isa = PBXGroup; children = ( - F2FBE601CD68193A507F1666F49374D6 /* BonMot.h */, - F6C8FFC77744E7838BDDAC12B9454572 /* Classes */, + 1CDBA5088036629FE6856134EA58E7E3 /* Pods-Tests-acknowledgements.markdown */, + 7FBA94404867E4D6EC5D6B1A5B1AFE66 /* Pods-Tests-acknowledgements.plist */, + 2C0DD8F1F459912BEDACF3A11C3E72CC /* Pods-Tests-dummy.m */, + C2F05F9897ADDBC2B3F81FD48B418B89 /* Pods-Tests-frameworks.sh */, + D94D22FE5684C97AAACB7DD0FC35F76B /* Pods-Tests-resources.sh */, + E3F89FD3D4FD018EFA178D3F39E3BDC3 /* Pods-Tests.debug.xcconfig */, + 093D53CFD89C48A309AB81DFB7B149D7 /* Pods-Tests.release.xcconfig */, ); - path = Pod; - sourceTree = ""; - }; - CCA510CFBEA2D207524CDA0D73C3B561 /* Products */ = { - isa = PBXGroup; - children = ( - 95F197962A5843E749472156033E5B0F /* libBonMot.a */, - 602483FF69337FE9AACF162FEA146439 /* libPods-BonMot.a */, - 7EA6989C78A5811558489608125FC547 /* libPods-Tests.a */, - ); - name = Products; + name = "Pods-Tests"; + path = "Target Support Files/Pods-Tests"; sourceTree = ""; }; - D0FB9306D21AF23A056944AE037CBFFF /* iOS */ = { + BDB475514232E0775A9D9BDFAA65678B /* BonMot */ = { isa = PBXGroup; children = ( - C479627B19C801C86988C2AC23D1A40E /* Foundation.framework */, - DBBBB1CA734A75E4CEB8F369BECE3005 /* UIKit.framework */, + 071981B319E0E079F4A0A53F43E82501 /* Pod */, + 15031CF2CDB31A8350464DC09E82206F /* Support Files */, ); - name = iOS; + name = BonMot; + path = ../..; sourceTree = ""; }; - F6C8FFC77744E7838BDDAC12B9454572 /* Classes */ = { + F93FE96E871793792F894775F6F9AC20 /* Classes */ = { isa = PBXGroup; children = ( - BB2123066B69DD22F36ED9462C9C046C /* BONChain.h */, - D0B22D1E88CC603C8C02CA6DD7725265 /* BONChain.m */, - 520E5E9FC39EB510BA48E2DFCC0BBCD1 /* BONSpecial.h */, - 503A44A5404E889CC219974F0F79441F /* BONSpecial.m */, - 3793B4E41B13FE775B8ACB9306DD95FF /* BONText.h */, - 47962BCF3935CD73BC9A8A154EB5C0FA /* BONText.m */, - 239EFE6C42780D492CA014A019F673CC /* BONTextAlignmentConstraint.h */, - 35D1814773089093B0D6B0C9A25BB732 /* BONTextAlignmentConstraint.m */, - E828DF50191F37D0735D1DB39F10A0D5 /* BONText_Private.h */, - 85E35246296B2DD62CF8DB686CBC6809 /* UIImage+BonMotUtilities.h */, - FD4E5A2025263D35B7F095F2E49D3D2C /* UIImage+BonMotUtilities.m */, + 008986A31E2A5F46B584286A61D64854 /* BONChain.h */, + 3EBF76B85123B7C09FE242D0A3A14087 /* BONChain.m */, + BCFA85BED368070C2F507CCFE47BEAA5 /* BONChainable.h */, + 4D5D499338C7077317435231CCB6DDD3 /* BONSpecial.h */, + 51316E59A0C58872004C531434C7863D /* BONSpecial.m */, + E76D3C9537C7ECEB2F49BEB5A23665E7 /* BONText.h */, + 43CDAFA5EB71FCA3895589DA92749815 /* BONText.m */, + C043FBA4AA1BCC4F3CE67258B2CFC2C7 /* BONText_Private.h */, + 4953C569CBAC1466D4C2FD36AAAE6762 /* BONTextAlignmentConstraint.h */, + 8B5090FBFCD0F1B837E1D5BB67BE8C8C /* BONTextAlignmentConstraint.m */, + AB3615CDE4D5B8DE84F240C793EF82DE /* UIImage+BonMotUtilities.h */, + 9C911B019F53792B92E95CDB380BC6C0 /* UIImage+BonMotUtilities.m */, ); path = Classes; sourceTree = ""; @@ -246,72 +251,73 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - B61B7ACA357D33ABE050B91EB30C7B3E /* Headers */ = { + 9022B436598D42ED346E8A875135F1CC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - CCF79645DC30C53A72F47EB18D723443 /* BONChain.h in Headers */, - 78151EDF3D68DE3FD0CB705BF9CAA23F /* BONSpecial.h in Headers */, - 3B3E1E2F10F39F48ADD9E35269BAF3A6 /* BONText.h in Headers */, - 1D1A0E1124981CFB45461AC3315DAA9B /* BONTextAlignmentConstraint.h in Headers */, - 721B706E57E883092B25D9A370017850 /* BONText_Private.h in Headers */, - 6AA2B339306F5E16FC6ECB2C30F975C3 /* BonMot.h in Headers */, - 3C9273C1460CC91EE129869AF05994FD /* UIImage+BonMotUtilities.h in Headers */, + 79C89FF5FB4CEE8BC1D2900932D97EE0 /* BONChain.h in Headers */, + 14F09CB056FAFE5BA77E28F4AF903784 /* BONChainable.h in Headers */, + 1DA986A1A3A5EBE3FB76055E916D65C9 /* BonMot.h in Headers */, + 82622120D66A4580C1DAE22014D69DB1 /* BONSpecial.h in Headers */, + C89860967C478A5B80BCA962228F340E /* BONText.h in Headers */, + 06DA74DF3CA97CA4D0B83BE3F581CF5B /* BONText_Private.h in Headers */, + 8F2CB632E1F002E69D89650773A529FC /* BONTextAlignmentConstraint.h in Headers */, + 87D656287C2BC9A1F524C39E73CE4C8B /* UIImage+BonMotUtilities.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 553553F2396CF6162FECFAF706FF7B73 /* Pods-BonMot */ = { + 5410D72EECF055B1A5710BAE3F1D8EF1 /* BonMot */ = { isa = PBXNativeTarget; - buildConfigurationList = 249637A0BD9F84603289D30C088A7B9D /* Build configuration list for PBXNativeTarget "Pods-BonMot" */; + buildConfigurationList = EBEC84CAC26EAA75542665F291164E52 /* Build configuration list for PBXNativeTarget "BonMot" */; buildPhases = ( - 27B5724D98B87FA301E166033A77B3B1 /* Sources */, - 56C521DB8668637D0A35C6403F10DFD9 /* Frameworks */, + CB10C013ED5813D688506528275627AD /* Sources */, + C78B196FA2039E1E7777A78A5D3B9741 /* Frameworks */, + 9022B436598D42ED346E8A875135F1CC /* Headers */, ); buildRules = ( ); dependencies = ( - C9B5032B211CF6560AA3553667C6A5E4 /* PBXTargetDependency */, ); - name = "Pods-BonMot"; - productName = "Pods-BonMot"; - productReference = 602483FF69337FE9AACF162FEA146439 /* libPods-BonMot.a */; + name = BonMot; + productName = BonMot; + productReference = A7E1002F878FE8D1C3658DABEFFD22CF /* libBonMot.a */; productType = "com.apple.product-type.library.static"; }; - 7015B3680F6FC4D0A4638AA1F71CFCBC /* Pods-Tests */ = { + 6DBE4BC901B86832247640F35453C509 /* Pods-BonMot */ = { isa = PBXNativeTarget; - buildConfigurationList = FECC0B7CD4D865A3002BAE337469A03E /* Build configuration list for PBXNativeTarget "Pods-Tests" */; + buildConfigurationList = 620C0EB7E18694F8E90FEFDE4E928920 /* Build configuration list for PBXNativeTarget "Pods-BonMot" */; buildPhases = ( - FB7560ED06038A7FBD522685AD33F106 /* Sources */, - 13C303487282FFD26C0339DF93C26261 /* Frameworks */, + 4297B54674B2ED1348703E35C0825FA9 /* Sources */, + 9C0A8FE16B5495E8210C145707E5AC41 /* Frameworks */, ); buildRules = ( ); dependencies = ( - 381CF9D40E5CBB6BEA55ED34010C4AB7 /* PBXTargetDependency */, + 04138967CE5DDF6FA6961BFA84C3B8C4 /* PBXTargetDependency */, ); - name = "Pods-Tests"; - productName = "Pods-Tests"; - productReference = 7EA6989C78A5811558489608125FC547 /* libPods-Tests.a */; + name = "Pods-BonMot"; + productName = "Pods-BonMot"; + productReference = A75A454EE3A6F09E60CE2E2FB5ABBE52 /* libPods-BonMot.a */; productType = "com.apple.product-type.library.static"; }; - F3D270334877253CC8CF8110DF21C797 /* BonMot */ = { + BC30A2DB34B7269DB5EF785E5E92A79B /* Pods-Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = 7116C6E8E58CEE4A32C8CBC2A4AE184F /* Build configuration list for PBXNativeTarget "BonMot" */; + buildConfigurationList = 70A1E71AD836DEB1FC1C07E1014720F4 /* Build configuration list for PBXNativeTarget "Pods-Tests" */; buildPhases = ( - ABEAEEE0339817111C0B35ACECD64F48 /* Sources */, - ED8C2C4ED6EED6E88721D0691ECC45A7 /* Frameworks */, - B61B7ACA357D33ABE050B91EB30C7B3E /* Headers */, + D3F49D5C0B58E2BFA2DC6025A1F8EF37 /* Sources */, + 4AFDB3B5A599DB31FD6488D6221A8D91 /* Frameworks */, ); buildRules = ( ); dependencies = ( + 0BE80E777AEB5B9E06BD02F655038026 /* PBXTargetDependency */, ); - name = BonMot; - productName = BonMot; - productReference = 95F197962A5843E749472156033E5B0F /* libBonMot.a */; + name = "Pods-Tests"; + productName = "Pods-Tests"; + productReference = 9018A6C64852F1A79751E1828BCDA31C /* libPods-Tests.a */; productType = "com.apple.product-type.library.static"; }; /* End PBXNativeTarget section */ @@ -331,119 +337,90 @@ en, ); mainGroup = 7DB346D0F39D3F0E887471402A8071AB; - productRefGroup = CCA510CFBEA2D207524CDA0D73C3B561 /* Products */; + productRefGroup = 7B28282059844C336511EC7789F277AB /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - F3D270334877253CC8CF8110DF21C797 /* BonMot */, - 553553F2396CF6162FECFAF706FF7B73 /* Pods-BonMot */, - 7015B3680F6FC4D0A4638AA1F71CFCBC /* Pods-Tests */, + 5410D72EECF055B1A5710BAE3F1D8EF1 /* BonMot */, + 6DBE4BC901B86832247640F35453C509 /* Pods-BonMot */, + BC30A2DB34B7269DB5EF785E5E92A79B /* Pods-Tests */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 27B5724D98B87FA301E166033A77B3B1 /* Sources */ = { + 4297B54674B2ED1348703E35C0825FA9 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 150841003DEEB4B7026CFB8A3D976842 /* Pods-BonMot-dummy.m in Sources */, + 8695A1C128EE7CF7089FB980916AE202 /* Pods-BonMot-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - ABEAEEE0339817111C0B35ACECD64F48 /* Sources */ = { + CB10C013ED5813D688506528275627AD /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 417086C1BA218AB8D4EC26F7F344F955 /* BONChain.m in Sources */, - FD66F144C08360DA34DB55AA073044D8 /* BONSpecial.m in Sources */, - 4AD1808743B3F0D84287DCE338C2659D /* BONText.m in Sources */, - 244E91BB1599320BB475FC0E38F79EC6 /* BONTextAlignmentConstraint.m in Sources */, - 76640E240D233D267566205C220C3809 /* BonMot-dummy.m in Sources */, - E72A926E974F8A8BA97DBC2E29A1E1B4 /* UIImage+BonMotUtilities.m in Sources */, + B376D4341C61F8338D1DF29AFABFAF6E /* BONChain.m in Sources */, + A4D9EA9B721E080A7BF3476593319420 /* BonMot-dummy.m in Sources */, + 9EBA0CCCF43CEAEDBA7E8BE9A5E9196F /* BONSpecial.m in Sources */, + 043FC42A566A13B5E5B54035FE58652C /* BONText.m in Sources */, + A926DA8F81E977F8A01043D65759269B /* BONTextAlignmentConstraint.m in Sources */, + 532335DFAA8A5BD5F2A230EAEF352DAF /* UIImage+BonMotUtilities.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FB7560ED06038A7FBD522685AD33F106 /* Sources */ = { + D3F49D5C0B58E2BFA2DC6025A1F8EF37 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 4294C2A8D75772BCD4B97452C5289252 /* Pods-Tests-dummy.m in Sources */, + 3CE6F18DC6007F1ECA080663F08F487A /* Pods-Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 381CF9D40E5CBB6BEA55ED34010C4AB7 /* PBXTargetDependency */ = { + 04138967CE5DDF6FA6961BFA84C3B8C4 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BonMot; - target = F3D270334877253CC8CF8110DF21C797 /* BonMot */; - targetProxy = 0524762949B12FAC591EFC2D16D0119E /* PBXContainerItemProxy */; + target = 5410D72EECF055B1A5710BAE3F1D8EF1 /* BonMot */; + targetProxy = 6CED3EE64050FAD1B2F50A5D015C0163 /* PBXContainerItemProxy */; }; - C9B5032B211CF6560AA3553667C6A5E4 /* PBXTargetDependency */ = { + 0BE80E777AEB5B9E06BD02F655038026 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = BonMot; - target = F3D270334877253CC8CF8110DF21C797 /* BonMot */; - targetProxy = C51CB2641995540AC9F308178AD05A23 /* PBXContainerItemProxy */; + target = 5410D72EECF055B1A5710BAE3F1D8EF1 /* BonMot */; + targetProxy = 8226631CC54471B023DB9D56197A96A5 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 4F1383523C8154E730B490576BAC1FDC /* Debug */ = { + 3AFAA7AE534996B00F188B06395C3A63 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 20F85573E13DF43E011EBA51DB68D7DF /* Pods-Tests.debug.xcconfig */; + baseConfigurationReference = AD96A95F5FA883588C8BFE643542CFF6 /* BonMot.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/BonMot/BonMot-prefix.pch"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; + PRIVATE_HEADERS_FOLDER_PATH = ""; PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; SDKROOT = iphoneos; SKIP_INSTALL = YES; }; name = Debug; }; - 641BC0BD78C6EF8ACA9EFBA875D7C9BB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 16E30424B89E71218937F8FCF1AD3C86 /* Pods-BonMot.release.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 68EF6F30AFE451298EE0E213E848A6A1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DD197818CEE36C5FD29F779076D594C3 /* BonMot-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/BonMot/BonMot-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Release; - }; - 9AD7BB2239ACD00846B8BB8E723766B8 /* Release */ = { + 7E0EDAF08D5B5FC9250348816E758BC5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F83955BC6339968A754B740ECBAFE21E /* Pods-Tests.release.xcconfig */; + baseConfigurationReference = BE4C9338E221726310CF05CDB73E731E /* Pods-BonMot.release.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = NO; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -454,22 +431,6 @@ }; name = Release; }; - 9D0A2885A33ADF85D7EE07FB494C0010 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = DD197818CEE36C5FD29F779076D594C3 /* BonMot-Private.xcconfig */; - buildSettings = { - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/BonMot/BonMot-prefix.pch"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - }; - name = Debug; - }; A70CDAD61F90AC503C7D04CC22DA2923 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -509,12 +470,13 @@ }; name = Debug; }; - AFEBCE5D41C8CBB6F3B0F779BEE6DE1E /* Debug */ = { + AA16F095BA13998504E4BA8C258AF32A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC98E877C61CA411BEE6A9D6563E5484 /* Pods-BonMot.debug.xcconfig */; + baseConfigurationReference = E3F89FD3D4FD018EFA178D3F39E3BDC3 /* Pods-Tests.debug.xcconfig */; buildSettings = { ENABLE_STRICT_OBJC_MSGSEND = YES; IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; MTL_ENABLE_DEBUG_INFO = YES; OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; @@ -525,6 +487,58 @@ }; name = Debug; }; + CA459AA114B8F2D97F4F6A0FA5CF59DA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 093D53CFD89C48A309AB81DFB7B149D7 /* Pods-Tests.release.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; + EC9175148822A3B9B935F0EE6769EC41 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04EF79B38E49E1B174A83BA50ADC2194 /* Pods-BonMot.debug.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACH_O_TYPE = staticlib; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + F51937B0A1299A15FFBECAC0BCA92FF0 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AD96A95F5FA883588C8BFE643542CFF6 /* BonMot.xcconfig */; + buildSettings = { + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/BonMot/BonMot-prefix.pch"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PRIVATE_HEADERS_FOLDER_PATH = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + PUBLIC_HEADERS_FOLDER_PATH = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + }; + name = Release; + }; FB45FFD90572718D82AB9092B750F0CA /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -562,38 +576,38 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 249637A0BD9F84603289D30C088A7B9D /* Build configuration list for PBXNativeTarget "Pods-BonMot" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - AFEBCE5D41C8CBB6F3B0F779BEE6DE1E /* Debug */, - 641BC0BD78C6EF8ACA9EFBA875D7C9BB /* Release */, + A70CDAD61F90AC503C7D04CC22DA2923 /* Debug */, + FB45FFD90572718D82AB9092B750F0CA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 620C0EB7E18694F8E90FEFDE4E928920 /* Build configuration list for PBXNativeTarget "Pods-BonMot" */ = { isa = XCConfigurationList; buildConfigurations = ( - A70CDAD61F90AC503C7D04CC22DA2923 /* Debug */, - FB45FFD90572718D82AB9092B750F0CA /* Release */, + EC9175148822A3B9B935F0EE6769EC41 /* Debug */, + 7E0EDAF08D5B5FC9250348816E758BC5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7116C6E8E58CEE4A32C8CBC2A4AE184F /* Build configuration list for PBXNativeTarget "BonMot" */ = { + 70A1E71AD836DEB1FC1C07E1014720F4 /* Build configuration list for PBXNativeTarget "Pods-Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D0A2885A33ADF85D7EE07FB494C0010 /* Debug */, - 68EF6F30AFE451298EE0E213E848A6A1 /* Release */, + AA16F095BA13998504E4BA8C258AF32A /* Debug */, + CA459AA114B8F2D97F4F6A0FA5CF59DA /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FECC0B7CD4D865A3002BAE337469A03E /* Build configuration list for PBXNativeTarget "Pods-Tests" */ = { + EBEC84CAC26EAA75542665F291164E52 /* Build configuration list for PBXNativeTarget "BonMot" */ = { isa = XCConfigurationList; buildConfigurations = ( - 4F1383523C8154E730B490576BAC1FDC /* Debug */, - 9AD7BB2239ACD00846B8BB8E723766B8 /* Release */, + 3AFAA7AE534996B00F188B06395C3A63 /* Debug */, + F51937B0A1299A15FFBECAC0BCA92FF0 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/BonMot.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/BonMot.xcscheme index 3c7d3e82..1e6fdd59 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/BonMot.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/BonMot.xcscheme @@ -7,17 +7,17 @@ buildImplicitDependencies = "YES"> + buildForArchiving = "YES"> + BuildableIdentifier = 'primary' + BlueprintIdentifier = '268CD0A1D03AF053B8B10E7E' + BlueprintName = 'BonMot' + ReferencedContainer = 'container:Pods.xcodeproj' + BuildableName = 'libBonMot.a'> @@ -29,28 +29,26 @@ buildConfiguration = "Debug"> - - + shouldUseLaunchSchemeArgsEnv = "YES"> diff --git a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-BonMot-BonMot-BonMot.xcscheme b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-BonMot-BonMot-BonMot.xcscheme index 963ace36..6b537a46 100644 --- a/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-BonMot-BonMot-BonMot.xcscheme +++ b/Example/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Pods-BonMot-BonMot-BonMot.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES"> + + + + + + + +@interface BONChainableTestCase : BONBaseTestCase + +@end + +@implementation BONChainableTestCase + +- (void)testConcatenation +{ + BONChain *chain = BONChain.new.string(@"Hello, "); + [chain appendLink:BONChain.new.string(@"world!")]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world!"); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 13): @{ + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +- (void)testConcatenationWithSeparator +{ + BONChain *chain = BONChain.new.string(@"Hello"); + [chain appendLink:BONChain.new.string(@"world!") separator:@", "]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world!"); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 13): @{ + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +- (void)testConcatenationWithNilSeparator +{ + BONChain *chain = BONChain.new.string(@"Hello, "); + [chain appendLink:BONChain.new.string(@"world!") separator:nil]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world!"); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 13): @{ + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +- (void)testConcatenationWithEmptySeparator +{ + BONChain *chain = BONChain.new.string(@"Hello, "); + [chain appendLink:BONChain.new.string(@"world!") separator:@""]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world!"); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 13): @{ + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +- (void)testConcatenationWithDifferentAttributes +{ + BONChain *chain = BONChain.new.string(@"Hello").textColor([UIColor redColor]); + [chain appendLink:BONChain.new.string(@"world!").textColor([UIColor blueColor]) separator:@", "]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world!"); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 7): @{ + NSForegroundColorAttributeName: [UIColor redColor], + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + BONValueFromRange(7, 6): @{ + NSForegroundColorAttributeName: [UIColor blueColor], + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +- (void)testMultipleConcatenations +{ + BONChain *chain = BONChain.new.string(@"Hello, "); + [chain appendLink:BONChain.new.string(@"world!")]; + [chain appendLink:BONChain.new.string(@"It really is a lovely day today.") separator:@" "]; + + NSAttributedString *attributedString = chain.attributedString; + + XCTAssertEqualObjects(attributedString.string, @"Hello, world! It really is a lovely day today."); + + NSParagraphStyle *defaultParagraphStyle = [[NSParagraphStyle alloc] init]; + + NSDictionary *controlAttributes = @{ + BONValueFromRange(0, 46): @{ + NSParagraphStyleAttributeName: defaultParagraphStyle, + }, + }; + + BONAssertAttributedStringHasAttributes(attributedString, controlAttributes); +} + +@end diff --git a/Example/Tests/BONIndentSpacerTestCase.m b/Example/Tests/BONIndentSpacerTestCase.m index 0bca9b36..731b5b0c 100644 --- a/Example/Tests/BONIndentSpacerTestCase.m +++ b/Example/Tests/BONIndentSpacerTestCase.m @@ -23,7 +23,7 @@ - (void)testIndentingWithImages BONChain *baseTextChain = BONChain.new.fontNameAndSize(@"AvenirNextCondensed-Medium", 18.0f); BONChain *imageChain = baseTextChain.image(image).indentSpacer(4.0f).baselineOffset(-6.0f); - imageChain.append(baseTextChain.string(quote)); + [imageChain appendLink:baseTextChain.string(quote)]; NSAttributedString *attributedString = imageChain.attributedString; @@ -36,7 +36,7 @@ - (void)testIndentingWithText NSString *secondQuote = @"You can also use strings (including emoji) for bullets as well, and they will still properly indent the appended text by the right amount."; BONChain *baseTextChain = BONChain.new.fontNameAndSize(@"AvenirNextCondensed-Regular", 18.0f); BONChain *secondChain = baseTextChain.string(@"🍑 →").indentSpacer(4.0f).textColor([UIColor orangeColor]); - secondChain.append(baseTextChain.string(secondQuote).textColor([UIColor darkGrayColor])); + [secondChain appendLink:baseTextChain.string(secondQuote).textColor([UIColor darkGrayColor])]; NSAttributedString *attributedString = secondChain.attributedString; @@ -50,9 +50,9 @@ - (void)testMultipleConcatenationIndentation UIImage *image = [UIImage imageNamed:@"robot" inBundle:[NSBundle bundleForClass:self.class] compatibleWithTraitCollection:nil]; BONChain *firstBaseTextChain = BONChain.new.fontNameAndSize(@"AvenirNextCondensed-Medium", 18.0f); BONChain *imageChain = firstBaseTextChain.copy; - imageChain.append(firstBaseTextChain.image(image).indentSpacer(4.0f).baselineOffset(-6.0f)) - .append(firstBaseTextChain.string(string1)) - .append(firstBaseTextChain.string(string2)); + [imageChain appendLink:firstBaseTextChain.image(image).indentSpacer(4.0f).baselineOffset(-6.0f)]; + [imageChain appendLink:firstBaseTextChain.string(string1)]; + [imageChain appendLink:firstBaseTextChain.string(string2)]; NSAttributedString *attributedString = imageChain.attributedString; diff --git a/Example/Tests/BONTextAlignmentConstraintTestCase.m b/Example/Tests/BONTextAlignmentConstraintTestCase.m index 98c21dde..d8145c46 100644 --- a/Example/Tests/BONTextAlignmentConstraintTestCase.m +++ b/Example/Tests/BONTextAlignmentConstraintTestCase.m @@ -53,7 +53,7 @@ - (void)testCapHeightConstraint toItem:right attribute:BONConstraintAttributeCapHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 7.854f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 8.1694f, kBONCGFloatEpsilon); } - (void)testXHeightConstraint @@ -67,7 +67,7 @@ - (void)testXHeightConstraint toItem:right attribute:BONConstraintAttributeXHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 14.355f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 14.05078f, kBONCGFloatEpsilon); } - (void)testTopToCapHeightConstraint @@ -81,7 +81,7 @@ - (void)testTopToCapHeightConstraint toItem:right attribute:BONConstraintAttributeCapHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 11.9f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 12.378f, kBONCGFloatEpsilon); } - (void)testCapHeightToTopConstraint @@ -95,7 +95,7 @@ - (void)testCapHeightToTopConstraint toItem:right attribute:BONConstraintAttributeTop]; - XCTAssertEqualWithAccuracy(constraint.constant, -4.046f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, -4.20850f, kBONCGFloatEpsilon); } - (void)testTopToXHeightConstraint @@ -109,7 +109,7 @@ - (void)testTopToXHeightConstraint toItem:right attribute:BONConstraintAttributeXHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 21.75f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 21.289f, kBONCGFloatEpsilon); } - (void)testXHeightToTopConstraint @@ -123,7 +123,7 @@ - (void)testXHeightToTopConstraint toItem:right attribute:BONConstraintAttributeTop]; - XCTAssertEqualWithAccuracy(constraint.constant, -7.395f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, -7.2382f, kBONCGFloatEpsilon); } - (void)testCapHeightToXHeightConstraint @@ -137,7 +137,7 @@ - (void)testCapHeightToXHeightConstraint toItem:right attribute:BONConstraintAttributeXHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 17.704f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 17.0806f, kBONCGFloatEpsilon); } - (void)testXHeightToCapHeightConstraint @@ -151,7 +151,7 @@ - (void)testXHeightToCapHeightConstraint toItem:right attribute:BONConstraintAttributeCapHeight]; - XCTAssertEqualWithAccuracy(constraint.constant, 4.505f, kBONCGFloatEpsilon); + XCTAssertEqualWithAccuracy(constraint.constant, 5.1396f, kBONCGFloatEpsilon); } - (void)testFirstBaselineConstraint diff --git a/Pod/Classes/BONChain.h b/Pod/Classes/BONChain.h index 504ba6fa..4a909fcf 100644 --- a/Pod/Classes/BONChain.h +++ b/Pod/Classes/BONChain.h @@ -24,12 +24,9 @@ typedef BONChain*(^BONChainFigureSpacing)(BONFigureSpacing figureSpacing); typedef BONChain*(^BONChainIndentSpacer)(CGFloat indentSpacer); typedef BONChain*(^BONChainString)(NSString *string); typedef BONChain*(^BONChainImage)(UIImage *image); -typedef BONChain*(^BONChainAppend)(id chainOrText); -typedef BONChain*(^BONChainAppendWithSeparator)(NSString *separator, id chainOrText); -@interface BONChain : NSObject +@interface BONChain : NSObject -@property (strong, nonatomic, readonly) BONText *text; @property (copy, nonatomic, readonly) NSAttributedString *attributedString; @property (copy, nonatomic, readonly) NSDictionary *attributes; @@ -56,13 +53,13 @@ typedef BONChain*(^BONChainAppendWithSeparator)(NSString *separator, id chainOrT @property (copy, nonatomic, readonly) BONChainString string; @property (copy, nonatomic, readonly) BONChainImage image; -// concatenation -@property (copy, nonatomic, readonly) BONChainAppend append; -@property (copy, nonatomic, readonly) BONChainAppendWithSeparator appendWithSeparator; - /** * Must be greater than 0. */ @property (copy, nonatomic, readonly) BONChainIndentSpacer indentSpacer; +// concatenation +- (void)appendLink:(id)link; +- (void)appendLink:(id)link separator:(NSString *)separator; + @end diff --git a/Pod/Classes/BONChain.m b/Pod/Classes/BONChain.m index 3162d04f..bc8ef394 100644 --- a/Pod/Classes/BONChain.m +++ b/Pod/Classes/BONChain.m @@ -13,7 +13,8 @@ @interface BONChain () -@property (strong, nonatomic) BONText *text; +@property (strong, nonatomic, readwrite) BONText *text; +@property (strong, nonatomic, readonly) BONChain *copyWithoutNextText; @end @@ -36,6 +37,13 @@ - (id)copyWithZone:(NSZone *)zone return chain; } +- (instancetype)copyWithoutNextText +{ + __typeof(self) copy = self.copy; + copy.text.nextText = nil; + return copy; +} + - (NSAttributedString *)attributedString { return self.text.attributedString; @@ -49,7 +57,7 @@ - (NSDictionary *)attributes - (BONChainFontNameAndSize)fontNameAndSize { BONChainFontNameAndSize fontNameAndSizeBlock = ^(NSString *fontName, CGFloat fontSize) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; UIFont *font = [UIFont fontWithName:fontName size:fontSize]; NSAssert(font, @"No font returned from [UIFont fontWithName:%@ size:%@]", fontName, @(fontSize)); newChain.text.font = font; @@ -62,7 +70,7 @@ - (BONChainFontNameAndSize)fontNameAndSize - (BONChainFont)font { BONChainFont fontBlock = ^(UIFont *font) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.font = font; return newChain; }; @@ -73,7 +81,7 @@ - (BONChainFont)font - (BONChainColor)textColor { BONChainColor colorBlock = ^(UIColor *color) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.textColor = color; return newChain; }; @@ -84,7 +92,7 @@ - (BONChainColor)textColor - (BONChainColor)backgroundColor { BONChainColor colorBlock = ^(UIColor *color) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.backgroundColor = color; return newChain; }; @@ -95,7 +103,7 @@ - (BONChainColor)backgroundColor - (BONChainAdobeTracking)adobeTracking { BONChainAdobeTracking adobeTrackingBlock = ^(NSInteger adobeTracking) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.adobeTracking = adobeTracking; return newChain; }; @@ -106,7 +114,7 @@ - (BONChainAdobeTracking)adobeTracking - (BONChainPointTracking)pointTracking { BONChainPointTracking pointTrackingBlock = ^(CGFloat pointTracking) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.pointTracking = pointTracking; return newChain; }; @@ -117,7 +125,7 @@ - (BONChainPointTracking)pointTracking - (BONChainLineHeight)lineHeightMultiple { BONChainLineHeight lineHeightMultipleBlock = ^(CGFloat lineHeightMultiple) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.lineHeightMultiple = lineHeightMultiple; return newChain; }; @@ -128,7 +136,7 @@ - (BONChainLineHeight)lineHeightMultiple - (BONChainBaselineOffset)baselineOffset { BONChainBaselineOffset baselineOffsetBlock = ^(CGFloat baselineOffset) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.baselineOffset = baselineOffset; return newChain; }; @@ -139,7 +147,7 @@ - (BONChainBaselineOffset)baselineOffset - (BONChainFigureCase)figureCase { BONChainFigureCase figureCaseBlock = ^(BONFigureCase figureCase) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.figureCase = figureCase; return newChain; }; @@ -150,7 +158,7 @@ - (BONChainFigureCase)figureCase - (BONChainFigureSpacing)figureSpacing { BONChainFigureSpacing figureSpacingBlock = ^(BONFigureSpacing figureSpacing) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.figureSpacing = figureSpacing; return newChain; }; @@ -161,7 +169,7 @@ - (BONChainFigureSpacing)figureSpacing - (BONChainString)string { BONChainString stringBlock = ^(NSString *string) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.string = string; return newChain; }; @@ -172,71 +180,52 @@ - (BONChainString)string - (BONChainImage)image { BONChainImage imageBlock = ^(UIImage *image) { - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.image = image; return newChain; }; - - return [imageBlock copy]; -} -- (BONChainAppend)append -{ - BONChainAppend appendBlock = ^(id chainOrText) { - BONText *textToAppend = nil; - if ( [chainOrText isKindOfClass:[BONChain class]] ) { - textToAppend = [(BONChain *)chainOrText text]; - } - else if ( [chainOrText isKindOfClass:[BONText class]] ) { - textToAppend = chainOrText; - } - else { - NSAssert(NO, @"Expected chainOrText to be of class BONChain or BONText, but it was of type %@: %@", [chainOrText class], chainOrText); - } - self.text.nextText = textToAppend.copy; - __typeof(self) newChain = [[self.class alloc] init]; - newChain.text = self.text.nextText; - return newChain; - }; - - return [appendBlock copy]; -} - -- (BONChainAppendWithSeparator)appendWithSeparator -{ - BONChainAppendWithSeparator appendBlock = ^(NSString *separator, id chainOrText) { - self.text.trailingString = separator; - self.text.internalIndentSpacer = nil; - BONText *textToAppend = nil; - if ( [chainOrText isKindOfClass:[BONChain class]] ) { - textToAppend = [(BONChain *)chainOrText text]; - } - else if ( [chainOrText isKindOfClass:[BONText class]] ) { - textToAppend = chainOrText; - } - else { - NSAssert(NO, @"Expected chainOrText to be of class BONChain or BONText, but it was of type %@: %@", [chainOrText class], chainOrText); - } - self.text.nextText = textToAppend.copy; - __typeof(self) newChain = [[self.class alloc] init]; - newChain.text = self.text.nextText; - return newChain; - }; - - return [appendBlock copy]; + return [imageBlock copy]; } - (BONChainIndentSpacer)indentSpacer { BONChainIndentSpacer indentSpacerBlock = ^(CGFloat indentSpacer) { NSAssert(indentSpacer > 0.0f, @"Indent spacer values must be greater than zero. Received %@", @(indentSpacer)); - typeof(self) newChain = self.copy; + typeof(self) newChain = self.copyWithoutNextText; newChain.text.indentSpacer = indentSpacer; - newChain.text.trailingString = nil; return newChain; }; return [indentSpacerBlock copy]; } +- (void)appendLink:(id)link +{ + [self appendLink:link separator:nil]; +} + +- (void)appendLink:(id)link separator:(NSString *)separator +{ + if (separator.length > 0) { + // Recursion! + [self appendLink:self.string(separator)]; // add the sparator, with the same properties as self, to the end of the chain. + } + + [self.class appendText:link.text toEndOfText:self.text]; +} + +#pragma mark - Private + ++ (void)appendText:(BONText *)suffix toEndOfText:(BONText *)prefix +{ + if (prefix.nextText) { + // Recursion! + [self appendText:suffix toEndOfText:prefix.nextText]; + } + else { + prefix.nextText = suffix; + } +} + @end diff --git a/Pod/Classes/BONChainable.h b/Pod/Classes/BONChainable.h new file mode 100644 index 00000000..de4a05b7 --- /dev/null +++ b/Pod/Classes/BONChainable.h @@ -0,0 +1,20 @@ +// +// BONChainable.h +// Pods +// +// Created by Zev Eisenberg on 10/9/15. +// +// + +@import Foundation; + +@class BONText; + +/** + * Objects conforming to this protocol can be used in BonMot chaining operations. + */ +@protocol BONChainable + +@property (strong, nonatomic, readonly) BONText *text; + +@end diff --git a/Pod/Classes/BONText.h b/Pod/Classes/BONText.h index 8b2fa9ee..ed70a56f 100644 --- a/Pod/Classes/BONText.h +++ b/Pod/Classes/BONText.h @@ -8,6 +8,8 @@ @import UIKit; +#import "BONChainable.h" + typedef NS_ENUM(NSUInteger, BONFigureCase) { BONFigureCaseDefault = 0, BONFigureCaseLining, @@ -22,11 +24,11 @@ typedef NS_ENUM(NSUInteger, BONFigureSpacing) { @class BONText; -@interface BONText : NSObject +@interface BONText : NSObject // Appending -@property (strong, nonatomic) BONText *nextText; +@property (copy, nonatomic) BONText *nextText; // Font Properties @@ -55,12 +57,7 @@ typedef NS_ENUM(NSUInteger, BONFigureSpacing) { @property (strong, nonatomic) UIImage *image; /** - * This string is appended, using the same attributes as @c self, if this text has another text appended to it. If this value is set, @c indentSpacer is unset. - */ -@property (copy, nonatomic) NSString *trailingString; - -/** - * Space, in points, to apply after a preceding image or string. A combination of @headIndent and tab stops is used to indent the whole leading edge of the paragram, except for the preceding image or string, by the same amount, so they line up vertically. Must be greater than 0. If this value is set, @c trailingString is unset. + * Space, in points, to apply after a preceding image or string. A combination of @headIndent and tab stops is used to indent the whole leading edge of the paragram, except for the preceding image or string, by the same amount, so they line up vertically. Must be greater than 0. */ @property (assign, nonatomic) CGFloat indentSpacer; @@ -76,7 +73,6 @@ typedef NS_ENUM(NSUInteger, BONFigureSpacing) { * * @param texts An array of @c BONText objects to join. * @param separator The @c BONText to interpose between the elements of the array. May be @c nil. - * @note the menuscripts’ @c trailingString property is ignored. * * @return An @c NSAttributedString object that is the result of interposing separator’s attributed string between the attributed strings of the elements of the array. If the array has no elements, returns an @c NSAttributedString object representing an empty string. */ diff --git a/Pod/Classes/BONText.m b/Pod/Classes/BONText.m index c2dc223e..26523735 100644 --- a/Pod/Classes/BONText.m +++ b/Pod/Classes/BONText.m @@ -75,12 +75,7 @@ - (NSAttributedString *)attributedStringLastConcatenant:(BOOL)lastConcatenant mutableAttributedString = [NSAttributedString attributedStringWithAttachment:attachment].mutableCopy; if (!lastConcatenant) { - if ( self.trailingString) { - [mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:self.trailingString attributes:self.attributes]]; - } - else if ( self.internalIndentSpacer ) { - [mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"\t" attributes:self.attributes]]; - } + [mutableAttributedString appendAttributedString:[[NSAttributedString alloc] initWithString:@"\t" attributes:self.attributes]]; } } @@ -95,11 +90,8 @@ - (NSAttributedString *)attributedStringLastConcatenant:(BOOL)lastConcatenant // tracking all the way through NSMutableString *stringToAppend = [NSMutableString string]; - // we aren't the last component, so append our trailing string using the same attributes as self - if ( self.trailingString ) { - [stringToAppend appendString:self.trailingString]; - } - else if ( self.internalIndentSpacer ) { + // we aren't the last component, so append a tab character if we have indent spacing + if ( self.internalIndentSpacer ) { [stringToAppend appendString:@"\t"]; } @@ -355,6 +347,13 @@ - (void)setImage:(UIImage *)image } } +#pragma mark - BONChainable + +- (BONText *)text +{ + return self; +} + #pragma mark - Utilities + (NSAttributedString *)joinAttributedStrings:(NSArray *)attributedStrings withSeparator:(BONText *)separator diff --git a/README.md b/README.md index 28bdd6ec..f8af27e2 100644 --- a/README.md +++ b/README.md @@ -116,11 +116,10 @@ You can also append texts directly to each other: ```objc NSString *commaSpace = @", "; BONChain *chain = BONChain.new; -chain -.append(BONChain.new.string(@"one fish")) -.appendWithSeparator(commaSpace, BONChain.new.string(@"two fish")) -.appendWithSeparator(commaSpace, BONChain.new.string(@"red fish").textColor([UIColor redColor])) -.appendWithSeparator(commaSpace, BONChain.new.string(@"blue fish").textColor([UIColor blueColor])); +[chain appendLink:BONChain.new.string(@"one fish")]; +[chain appendLink:BONChain.new.string(@"two fish") separator:commaSpace]; +[chain appendLink:BONChain.new.string(@"red fish").textColor([UIColor redColor]) separator:commaSpace]; +[chain appendLink:BONChain.new.string(@"blue fish").textColor([UIColor blueColor]) separator:commaSpace]; NSAttributedString *string = chain.attributedString; ```