From 1de96cfe61aafef43aeeb8086a54aa2684e18dc6 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:39:41 +0700 Subject: [PATCH 01/13] Update dependencies --- Draftsman.podspec | 4 +- Example/Podfile | 2 +- Example/Podfile.lock | 20 +- .../Builder/Builder/Classes/Buildable.swift | 12 - .../Builder/Builder/Classes/Builder.swift | 4 +- .../Builder/Builder/Classes/Protocols.swift | 18 + Example/Pods/Builder/README.md | 33 +- .../Clavier/Classes/ClavierGlobalConfig.swift | 12 + .../Clavier/Clavier/Classes/Extensions.swift | 20 +- Example/Pods/Clavier/README.md | 16 +- .../Local Podspecs/Draftsman.podspec.json | 8 +- Example/Pods/Manifest.lock | 20 +- Example/Pods/Pods.xcodeproj/project.pbxproj | 1783 +++++++++-------- .../Builder/Builder-Info.plist | 2 +- .../Clavier/Clavier-Info.plist | 2 +- .../Draftsman/Draftsman-Info.plist | 2 +- Package.resolved | 8 +- Package.swift | 4 +- 18 files changed, 1044 insertions(+), 926 deletions(-) delete mode 100644 Example/Pods/Builder/Builder/Classes/Buildable.swift create mode 100644 Example/Pods/Builder/Builder/Classes/Protocols.swift create mode 100644 Example/Pods/Clavier/Clavier/Classes/ClavierGlobalConfig.swift diff --git a/Draftsman.podspec b/Draftsman.podspec index 285c454..0a3a68b 100644 --- a/Draftsman.podspec +++ b/Draftsman.podspec @@ -38,7 +38,7 @@ Pod::Spec.new do |s| # s.public_header_files = 'Pod/Classes/**/*.h' # s.frameworks = 'UIKit', 'MapKit' - s.dependency 'Clavier', '~> 2.0.1' - s.dependency 'Builder', '~> 1.0.4' + s.dependency 'Clavier', '~> 2.0.3' + s.dependency 'Builder', '~> 1.1.0' s.swift_version = '5.5' end diff --git a/Example/Podfile b/Example/Podfile index 1091036..3636cdd 100644 --- a/Example/Podfile +++ b/Example/Podfile @@ -4,7 +4,7 @@ platform :ios, '12.0' target 'Draftsman_Example' do pod 'Draftsman', :path => '../' - pod 'Builder', '~> 1.0.3' + pod 'Builder', '~> 1.1.0' target 'Draftsman_Tests' do inherit! :search_paths diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 661110e..6d83198 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,14 +1,14 @@ PODS: - - Builder (1.0.4) - - Clavier (2.0.1) - - Draftsman (3.0.6): - - Builder (~> 1.0.4) - - Clavier (~> 2.0.1) + - Builder (1.1.0) + - Clavier (2.0.3) + - Draftsman (3.0.7): + - Builder (~> 1.1.0) + - Clavier (~> 2.0.3) - Nimble (10.0.0) - Quick (5.0.1) DEPENDENCIES: - - Builder (~> 1.0.3) + - Builder (~> 1.1.0) - Draftsman (from `../`) - Nimble (~> 10.0.0) - Quick (~> 5.0.1) @@ -25,12 +25,12 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - Builder: 9ac1a38cfe5e84ef85ba7c56613046eae34f8f1b - Clavier: 7458ac5d634bc424c38de23cc484bcf69595a9ec - Draftsman: fe416d9ec7af0fa9a29b78acb2dca539f8b335fc + Builder: ff3e1eaccb18e8fcd9f02a90c90a4ed7eb6a0e7b + Clavier: 485f4d379f7ee2fea8d5cf7d10fe2ec3e89b479c + Draftsman: 3fd01c6d11e1aa2b0cd4729a7dff2cf71f334672 Nimble: 5316ef81a170ce87baf72dd961f22f89a602ff84 Quick: 749aa754fd1e7d984f2000fe051e18a3a9809179 -PODFILE CHECKSUM: 7a970c8ab798864f6bc417cdee1122164b8b9942 +PODFILE CHECKSUM: 22ee20e964edf626f63289a8f406ffe4d5f3d7f7 COCOAPODS: 1.11.3 diff --git a/Example/Pods/Builder/Builder/Classes/Buildable.swift b/Example/Pods/Builder/Builder/Classes/Buildable.swift deleted file mode 100644 index dc17784..0000000 --- a/Example/Pods/Builder/Builder/Classes/Buildable.swift +++ /dev/null @@ -1,12 +0,0 @@ -// -// GlobalFunction.swift -// Builder -// -// Created by Nayanda Haberty on 16/08/21. -// - -import Foundation - -public protocol Buildable { - init() -} diff --git a/Example/Pods/Builder/Builder/Classes/Builder.swift b/Example/Pods/Builder/Builder/Classes/Builder.swift index 48cb0b8..5825177 100644 --- a/Example/Pods/Builder/Builder/Classes/Builder.swift +++ b/Example/Pods/Builder/Builder/Classes/Builder.swift @@ -7,7 +7,7 @@ import Foundation -public func builder(_ type: B.Type) -> Builder { +public func builder(_ type: B.Type) -> Builder { Builder(type) } @@ -61,7 +61,7 @@ public final class Builder: Maker { public func build() -> Object { underlyingObject } } -public extension Builder where Object: Buildable { +public extension Builder where Object: Initializable { convenience init(_ type: Object.Type) { self.init(.init()) } diff --git a/Example/Pods/Builder/Builder/Classes/Protocols.swift b/Example/Pods/Builder/Builder/Classes/Protocols.swift new file mode 100644 index 0000000..6514881 --- /dev/null +++ b/Example/Pods/Builder/Builder/Classes/Protocols.swift @@ -0,0 +1,18 @@ +// +// Protocols.swift +// Builder +// +// Created by Nayanda Haberty on 16/08/21. +// + +import Foundation + +public protocol Buildable { } + +public protocol Initializable: Buildable { + init() +} + +extension Buildable { + public var bld: Builder { builder(self) } +} diff --git a/Example/Pods/Builder/README.md b/Example/Pods/Builder/README.md index bcdd83c..8405ca5 100644 --- a/Example/Pods/Builder/README.md +++ b/Example/Pods/Builder/README.md @@ -1,3 +1,7 @@ +

+ +

+ # Builder Builder is Swift builder pattern library that utilize dynamicCallable and dynamicMemberLookup as its core. @@ -31,14 +35,14 @@ To run the example project, clone the repo, and run `pod install` from the Examp Builder is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile: ```ruby -pod 'Builder', '~> 1.0.4' +pod 'Builder', '~> 1.1.0' ``` ### Swift Package Manager from XCode - Add it using XCode menu **File > Swift Package > Add Package Dependency** - Add **https://github.com/hainayanda/Builder.git** as Swift Package URL -- Set rules at **version**, with **Up to Next Major** option and put **1.0.4** as its version +- Set rules at **version**, with **Up to Next Major** option and put **1.1.0** as its version - Click next and wait ### Swift Package Manager from Package.swift @@ -47,7 +51,7 @@ Add as your target dependency in **Package.swift** ```swift dependencies: [ - .package(url: "https://github.com/hainayanda/Builder.git", .upToNextMajor(from: "1.0.4")) + .package(url: "https://github.com/hainayanda/Builder.git", .upToNextMajor(from: "1.1.0")) ] ``` @@ -110,10 +114,25 @@ let myObject: MyObject = builder(MyObject()) ## Buildable -There's a protocol named Buildable which declared like this: +There's a protocol named Buildable that allowed your object to have a `bld` computed property that will return a Builder object for you to use: + +```swift +let myObject: MyObject = MyBuildable().bld + .string("some string") + .int(10) + .double(1.2) + .subObject.string("some string") + .subObject.int(10) + .subObject.double(1.2) + .build() +``` + +## Initializable + +There's a protocol named Initializable which declared like this: ```swift -public protocol Buildable { +public protocol Initializable { init() } ``` @@ -121,13 +140,15 @@ public protocol Buildable { its just to ensure you can call builder global function by only passing its `Type`: ```swift -let view: MyObjectImplementBuildable = builder(MyObjectImplementBuildable.self) +let view: MyObjectImplementInitializable = builder(MyObjectImplementInitializable.self) .string("some string") .int(10) .double(1.2) .build() ``` +Initializable is implementing Buildable by default + ## Error Handling Sometimes you can mistakenly try to assigning property that immutable. By default you can always see the debugPrint output like this: diff --git a/Example/Pods/Clavier/Clavier/Classes/ClavierGlobalConfig.swift b/Example/Pods/Clavier/Clavier/Classes/ClavierGlobalConfig.swift new file mode 100644 index 0000000..d949402 --- /dev/null +++ b/Example/Pods/Clavier/Clavier/Classes/ClavierGlobalConfig.swift @@ -0,0 +1,12 @@ +// +// ClavierGlobalConfig.swift +// Clavier +// +// Created by Nayanda Haberty on 13/1/23. +// + +import Foundation + +public class ClavierGlobalConfig { + public static var useAppleKeyboardLayoutGuideIfAvailable: Bool = true +} diff --git a/Example/Pods/Clavier/Clavier/Classes/Extensions.swift b/Example/Pods/Clavier/Clavier/Classes/Extensions.swift index b33e239..44e7366 100644 --- a/Example/Pods/Clavier/Clavier/Classes/Extensions.swift +++ b/Example/Pods/Clavier/Clavier/Classes/Extensions.swift @@ -9,7 +9,25 @@ import Foundation #if canImport(UIKit) import UIKit +private var useAppleKeyboardLayoutGuideKey: String = "usingAppleKeyboardLayoutGuideIfAvailableKey" + extension UIView { + + public var useAppleKeyboardLayoutGuideIfAvailable: Bool { + get { + (objc_getAssociatedObject(self, &useAppleKeyboardLayoutGuideKey) as? Bool) + ?? ClavierGlobalConfig.useAppleKeyboardLayoutGuideIfAvailable + } + set { + objc_setAssociatedObject( + self, + &useAppleKeyboardLayoutGuideKey, + newValue, + .OBJC_ASSOCIATION_RETAIN + ) + } + } + public var clavierLayoutGuide: UILayoutGuide { return clavierLayoutGuideFactory(usingSafeArea: false) } @@ -19,7 +37,7 @@ extension UIView { } func clavierLayoutGuideFactory(usingSafeArea: Bool) -> UILayoutGuide { - guard #available(iOS 15.0, *) else { + guard #available(iOS 15.0, *), useAppleKeyboardLayoutGuideIfAvailable else { return oldiOSKeyboardLayoutGuide(usingSafeArea) } return iOS15KeyboardLayoutGuide(usingSafeArea) diff --git a/Example/Pods/Clavier/README.md b/Example/Pods/Clavier/README.md index a633d88..aaaad27 100644 --- a/Example/Pods/Clavier/README.md +++ b/Example/Pods/Clavier/README.md @@ -32,14 +32,14 @@ Clavier is available through [CocoaPods](https://cocoapods.org). To install it, simply add the following line to your Podfile: ```ruby -pod 'Clavier', '~> 2.0.1' +pod 'Clavier', '~> 2.0.3' ``` ### Swift Package Manager from XCode - Add it using XCode menu **File > Swift Package > Add Package Dependency** - Add **https://github.com/hainayanda/Clavier.git** as Swift Package URL -- Set rules at **version**, with **Up to Next Major** option and put **2.0.1** as its version +- Set rules at **version**, with **Up to Next Major** option and put **2.0.3** as its version - Click next and wait ### Swift Package Manager from Package.swift @@ -48,7 +48,7 @@ Add as your target dependency in **Package.swift** ```swift dependencies: [ - .package(url: "https://github.com/hainayanda/Clavier.git", .upToNextMajor(from: "2.0.1")) + .package(url: "https://github.com/hainayanda/Clavier.git", .upToNextMajor(from: "2.0.3")) ] ``` @@ -117,6 +117,16 @@ let frameIntersectWithKeyboard: CGRect = view.safeClavierLayoutGuide.layoutFrame On iOS 15, Clavier will defaultly use `keyboardLayoutGuide` from UIKit. on `safeClavierLayoutGuide`, it will use custom class that utilize `keyboardLayoutGuide` and `safeAreaLayoutGuide` +You can explicitly disable iOS 15 `keyboardLayoutGuide` if you want by set directly with the view or by using global config. + +```swift +myView.usingAppleKeyboardLayoutGuideIfAvailable = false + +// or to apply as default with all view + +ClavierGlobalConfig.usingAppleKeyboardLayoutGuideIfAvailable = false +``` + # Contribute You know how, just clone and do pull request diff --git a/Example/Pods/Local Podspecs/Draftsman.podspec.json b/Example/Pods/Local Podspecs/Draftsman.podspec.json index 24ad5d9..cf45457 100644 --- a/Example/Pods/Local Podspecs/Draftsman.podspec.json +++ b/Example/Pods/Local Podspecs/Draftsman.podspec.json @@ -1,6 +1,6 @@ { "name": "Draftsman", - "version": "3.0.6", + "version": "3.0.7", "summary": "Draftsman is a DSL framework for Swift", "description": "Draftsman is a DSL framework for Swift focussed on builder pattern", "homepage": "https://github.com/hainayanda/Draftsman", @@ -13,7 +13,7 @@ }, "source": { "git": "https://github.com/hainayanda/Draftsman.git", - "tag": "3.0.6" + "tag": "3.0.7" }, "platforms": { "ios": "12.0" @@ -21,10 +21,10 @@ "source_files": "Draftsman/Classes/**/*", "dependencies": { "Clavier": [ - "~> 2.0.1" + "~> 2.0.3" ], "Builder": [ - "~> 1.0.4" + "~> 1.1.0" ] }, "swift_versions": "5.5", diff --git a/Example/Pods/Manifest.lock b/Example/Pods/Manifest.lock index 661110e..6d83198 100644 --- a/Example/Pods/Manifest.lock +++ b/Example/Pods/Manifest.lock @@ -1,14 +1,14 @@ PODS: - - Builder (1.0.4) - - Clavier (2.0.1) - - Draftsman (3.0.6): - - Builder (~> 1.0.4) - - Clavier (~> 2.0.1) + - Builder (1.1.0) + - Clavier (2.0.3) + - Draftsman (3.0.7): + - Builder (~> 1.1.0) + - Clavier (~> 2.0.3) - Nimble (10.0.0) - Quick (5.0.1) DEPENDENCIES: - - Builder (~> 1.0.3) + - Builder (~> 1.1.0) - Draftsman (from `../`) - Nimble (~> 10.0.0) - Quick (~> 5.0.1) @@ -25,12 +25,12 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - Builder: 9ac1a38cfe5e84ef85ba7c56613046eae34f8f1b - Clavier: 7458ac5d634bc424c38de23cc484bcf69595a9ec - Draftsman: fe416d9ec7af0fa9a29b78acb2dca539f8b335fc + Builder: ff3e1eaccb18e8fcd9f02a90c90a4ed7eb6a0e7b + Clavier: 485f4d379f7ee2fea8d5cf7d10fe2ec3e89b479c + Draftsman: 3fd01c6d11e1aa2b0cd4729a7dff2cf71f334672 Nimble: 5316ef81a170ce87baf72dd961f22f89a602ff84 Quick: 749aa754fd1e7d984f2000fe051e18a3a9809179 -PODFILE CHECKSUM: 7a970c8ab798864f6bc417cdee1122164b8b9942 +PODFILE CHECKSUM: 22ee20e964edf626f63289a8f406ffe4d5f3d7f7 COCOAPODS: 1.11.3 diff --git a/Example/Pods/Pods.xcodeproj/project.pbxproj b/Example/Pods/Pods.xcodeproj/project.pbxproj index c56958f..ef8cbd6 100644 --- a/Example/Pods/Pods.xcodeproj/project.pbxproj +++ b/Example/Pods/Pods.xcodeproj/project.pbxproj @@ -7,480 +7,492 @@ objects = { /* Begin PBXBuildFile section */ - 01236C984BBB2918575C35713E2E08B4 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1881B3BC449B5D465B5540A9AC744345 /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 03D6B4572EC3B438DD0ACCDEA803B48A /* Draftsman-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A9D495D2D0E1B327D4A03A1AF9304D /* Draftsman-dummy.m */; }; - 057C1964EBAFCBC649F8012723CDADF5 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E08114CE5FD36B041E3BFC4A2599A98 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 0650AF0DB8DE333CE5D99D704E29AC02 /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51FBAD607B83B8273BA6DA73341FF48B /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 0822D2362FCE28CE9AF0D0DD09FC4992 /* Clavier-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE1CE31CC761E2868BDB24F1380A9F34 /* Clavier-dummy.m */; }; - 088A5A88342D60B6FCFAEADBF0749220 /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3542EC029A0EDD48FAAE223074209674 /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 08E9D56AB0FB640B7CAA2CB97EA84359 /* LayoutAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8796F8A403EB86A1AEE934BC1793F74D /* LayoutAnchor.swift */; }; - 09D4B856CFEA59F4E16AB91D1F06D50C /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 70098828B0179336DE95988CDA2EF42E /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 0A6438BB6510B1D52B84E73C935C62B3 /* ViewPlan.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEDB15705D77FF9CDE63E9D1D4CDC8F3 /* ViewPlan.swift */; }; - 0BAC760A19A0F7BAD74264AA4DDDD679 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E3E7A29DE5CCE3FF88210EAE25B0107 /* World+DSL.swift */; }; - 0E398EF6297FFF6CC9BC74421BF1712D /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = CC8A686D9F976C6D083ECB101F586379 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 0F776B26BC641CB895C2E7D961C71152 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C0194D02428AAC7B0B8918D9AE9E55D /* ExampleHooks.swift */; }; - 154A42D3BBF847E3C2C7A6BB4EFAEE84 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 091FC2292F2DD4C4D1889490697F61F2 /* DSL.swift */; }; - 19A8009537BCAD56435B2DDC620B29AA /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D188730DF43EBEE12893C2B74E19EAA5 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B5648DECACC2C478440DD19516ADCC5 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = B519FDC682EB81A6C629C61D385C6BFA /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1C469C17A0E35E4508F74FEB1EDA586C /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = ED612333FB5D094B9E7FE83CE69A5F69 /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 1F6099FDF039ADA0D6D6A2BFEE148BF5 /* IdentifiedAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF6C89209D85F08D837B93737D065B2F /* IdentifiedAnchorRelation.swift */; }; - 1F7DAA306074029268825D335AB43F6D /* SafeAreaKeyboardLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29B92E7D05845965CB192986EC512D9E /* SafeAreaKeyboardLayoutGuide.swift */; }; - 207866DD86EDE603026D5AEDAF5ABE44 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B631D0264D06FC5C81198AFC878A164 /* QuickConfiguration.m */; }; - 21F3408E9BD0BE7C7A9FFBF43B4F28A0 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = 8728E3D539C88FCA2BAD61A10B7B59C6 /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2219D2D18E60D9FB88BA4D084BCA57AF /* Clavier-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 605F828315008B857FC312845416BCC1 /* Clavier-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 221EB784287DF0D0F4F231F943C35F93 /* SingleAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D20B1852CB0F23AF337FABB1043A3CE /* SingleAnchor.swift */; }; - 2223D9864ED3F01713DA2180EF7190B9 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2359F6FB4983D234386FF5CF9F5D1A21 /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 233AB756F67ABBD886C54BF9F12403DF /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 79EE9A33F417D734512A91F29CB3D79A /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2357EB01C617A8A015615080DBB012D6 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AFB0ED7F420434BB3BCD4634CE4A451 /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 28254898F20E2F4173C2DAF7CD7C70CF /* UIKit+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3959849783AF6227D9E4FD353F2F9BAF /* UIKit+Extensions.swift */; }; - 289B613DD13E58EA28C0DFAF4358BA68 /* ElementsEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C2B7270E97A2A4CB55ACD88F816D8FB /* ElementsEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 28D6E884D7AB6CF2B4BFF328D2537D22 /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FB41AADC12AA62150BA396F18525D84 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 2C85A44748A3F58CE8C0AE291B9EDDFB /* QCKConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9276C09E8026AF54FA84F6CD5E9BEA76 /* QCKConfiguration.swift */; }; - 2D6DB63EBCA201CFABA3012CD1C360BD /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE0CCF5E1222933D291CD225780A9947 /* ExampleGroup.swift */; }; + 00706321B53272923ABB244D3F319E0D /* Draftsman-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA4A5EC2E0822C0D48973456089F949 /* Draftsman-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01236C984BBB2918575C35713E2E08B4 /* BeLessThanOrEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B93B05FBDBEDAB4A5F8A73A1D3B28F /* BeLessThanOrEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 05491EC8EA9A10873C046410F10DEB27 /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = CED46FB645F326DA746E8FB8F2C51A83 /* Single.swift */; }; + 057C1964EBAFCBC649F8012723CDADF5 /* SatisfyAnyOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = ABEB036C44441F5BDED5F35B3CD2E4E4 /* SatisfyAnyOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0650AF0DB8DE333CE5D99D704E29AC02 /* AllPass.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9D5C65F9A5E3E1FA812290ADF2C8F6A /* AllPass.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 088A5A88342D60B6FCFAEADBF0749220 /* AdapterProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457A91CC7BDDBC07168C888C1E68305C /* AdapterProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 09D4B856CFEA59F4E16AB91D1F06D50C /* XCTestObservationCenter+Register.m in Sources */ = {isa = PBXBuildFile; fileRef = 381C575112D2C980A51A70E19A561BA3 /* XCTestObservationCenter+Register.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0BAC760A19A0F7BAD74264AA4DDDD679 /* World+DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68F51D672FB1CEB8B320C27E243624F2 /* World+DSL.swift */; }; + 0CE37CB21ED2A5C430316F17D0220781 /* LayoutDraftBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 96DA07DEFC54EBBFD8B02F5B54DD3AA7 /* LayoutDraftBuilder.swift */; }; + 0E398EF6297FFF6CC9BC74421BF1712D /* ContainElementSatisfying.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6781602E964E5B03F8016C3E510DB972 /* ContainElementSatisfying.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 0F776B26BC641CB895C2E7D961C71152 /* ExampleHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E6B1E310CEDB478179232A32A9A0B19 /* ExampleHooks.swift */; }; + 154A42D3BBF847E3C2C7A6BB4EFAEE84 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6C068609A8C95F5CDEE405B6B3DD403 /* DSL.swift */; }; + 1727648662D3A856676BD5832FC9786E /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15EBF5B7B01179D5CFC209EAFEA80649 /* Axis.swift */; }; + 19A8009537BCAD56435B2DDC620B29AA /* mach_excServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A6FAAE6BA900D32E73F7EC924D09F16 /* mach_excServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B5648DECACC2C478440DD19516ADCC5 /* MatcherProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 075D2D4FB1B531EE083F66D905942859 /* MatcherProtocols.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1C469C17A0E35E4508F74FEB1EDA586C /* DSL.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BD25752DC4F217BB870A1BF930EBEFC /* DSL.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 1F0026558FCDC1DABC8AB97C0941EFA9 /* UIKit+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 854B73FB9B6DD87E2146E00A4E86E5AA /* UIKit+Extensions.swift */; }; + 207866DD86EDE603026D5AEDAF5ABE44 /* QuickConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = C74ACF5F35EE3F11CF999DF4FDCF3685 /* QuickConfiguration.m */; }; + 21CC7C4011CEB43267767EEFAE0780EB /* LayoutWithAnchors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D10E7817ABE7877EF5E7A1546E78672 /* LayoutWithAnchors.swift */; }; + 21F3408E9BD0BE7C7A9FFBF43B4F28A0 /* Nimble.h in Headers */ = {isa = PBXBuildFile; fileRef = B48C4AAE4A990CD2CEF82D8A9ABDFFAF /* Nimble.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2223D9864ED3F01713DA2180EF7190B9 /* BeVoid.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37B09B0FF0E5AF75F200A79AB974E698 /* BeVoid.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 233AB756F67ABBD886C54BF9F12403DF /* HaveCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = A91844241C59C57940035C56F1054A78 /* HaveCount.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 233AF90A7F1EBD21009129289BA3439B /* LayoutPlan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DD43DC3D220E5DF175ED4965939196 /* LayoutPlan.swift */; }; + 2357EB01C617A8A015615080DBB012D6 /* Equal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C50D2F95D4F0B0E4ECA490A563A08EF /* Equal.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 246D5517F4301F7FE4247E171CA129AE /* TriConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF9B793AEB92AED3BAE2B03AA6E57E8 /* TriConstant.swift */; }; + 289B613DD13E58EA28C0DFAF4358BA68 /* ElementsEqual.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FFB8AAEBD26D19B8E0F163D8A7B2036 /* ElementsEqual.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 28D6E884D7AB6CF2B4BFF328D2537D22 /* SatisfyAllOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = A6FB7736E63EF707B4C6AEF8CEE8D869 /* SatisfyAllOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 2B9937345129BB40AB3DD48B11600DC5 /* PairAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57BC9482FB698B286C0977D3625FB1C7 /* PairAnchorRelation.swift */; }; + 2BD6A58E79CE1B0D436A4CE32DADFBB4 /* SafeAreaKeyboardLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25B77A02422C44546A528353218FB740 /* SafeAreaKeyboardLayoutGuide.swift */; }; + 2C85A44748A3F58CE8C0AE291B9EDDFB /* QCKConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = E76C49C958561479511E6890CF9A8357 /* QCKConfiguration.swift */; }; + 2D6DB63EBCA201CFABA3012CD1C360BD /* ExampleGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3594D5F09D8B07D3E4C64961C5DB089D /* ExampleGroup.swift */; }; + 2FC84B1BA7C1F9D0A867E48C2650325C /* AxisAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB73A47DEB73670669DC71DC34FE3452 /* AxisAnchor.swift */; }; 304841A0848FF5B0F853834BA5F9CB1D /* Pods-Draftsman_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = ACDB9764C384ADB584951A756EC77E40 /* Pods-Draftsman_Tests-dummy.m */; }; - 30EC9E30DCFECAD38154A2440CAA74C9 /* Builder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 126B9089E7FB979D193A66DACC63468F /* Builder-dummy.m */; }; - 31F87AF73D9A5F18541E5DC768E31FC4 /* AnchorPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BDB3099CB413ED174E1DCBDA3BBBBED /* AnchorPair.swift */; }; - 32995147DC30DF5022DD66C0470BFDE9 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = B2ED6F53D3F1EF1A37EC26F27E38663E /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; - 33D129928A0B66D5A780E8348605B742 /* NSLayoutDimension+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FFE85FF13A121A8C1B2F629A373AC9D /* NSLayoutDimension+Extensions.swift */; }; - 35C095305E5FB8CF40BB6C6A7F02E678 /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD8919C540E228CC4B46BBD3090BDFC8 /* ErrorUtility.swift */; }; - 380F23EA9D2ED0E0A3FACBEA64E329C3 /* ViewPlanBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D661C96E009862D312E65EC770ECB8C /* ViewPlanBuilder.swift */; }; - 38CC5A70476A437EB7D7CC9716F578DF /* Trio.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23D4A76D9D28E8F6B2A0D0C388EB835A /* Trio.swift */; }; - 3ABDA920FDD838A534E55347FF35ACCC /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11293AFCB7A6D96F173081E20E9F9392 /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3B59EB43186F324A79D05C3201369283 /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = BBEBF1AE44F2ECF178DDACB79F29221A /* QuickSpecBase.m */; }; - 3B5E796F1BFBB87AAB31305D6FCE160E /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 47CC340C91FA937194A04C3D291C242B /* Nimble-dummy.m */; }; + 30E22D085FE34AB9A4BEE09E5E691801 /* TriAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E126EF608AB51FD83B7EB1FAEEE2121 /* TriAnchor.swift */; }; + 32995147DC30DF5022DD66C0470BFDE9 /* QuickSpecBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B15D40FC5E703010EB2B545C15F33CE /* QuickSpecBase.h */; settings = {ATTRIBUTES = (Project, ); }; }; + 3556BEE645602CB9C68B8F8D1B30CFA1 /* AnchorPair.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDA31F8A56AE508DFB1757290743745C /* AnchorPair.swift */; }; + 35C095305E5FB8CF40BB6C6A7F02E678 /* ErrorUtility.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC97DBCD154BE6DF45682DBEEC3AAAB6 /* ErrorUtility.swift */; }; + 3ABDA920FDD838A534E55347FF35ACCC /* BeNil.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5420A8B56100A9E8660BB3307C7263B /* BeNil.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3ACBFE23C8DD9735BD13D34646B2BC97 /* QuadAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5033CD8EF7BBCA51B61080A98DD16EA /* QuadAnchor.swift */; }; + 3B59EB43186F324A79D05C3201369283 /* QuickSpecBase.m in Sources */ = {isa = PBXBuildFile; fileRef = 944A04A4BE75CF2ADAE59870D3BE9DCC /* QuickSpecBase.m */; }; + 3B5E796F1BFBB87AAB31305D6FCE160E /* Nimble-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E881825DC1AA4BB388B896F4AACAE2AB /* Nimble-dummy.m */; }; + 3BA9050C1EEABD7BC296C529793DD4B3 /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7BBC9F77F41C326B6FE4069670A0ABE1 /* Dimension.swift */; }; 3C442EDCAC8D2FA2C64B0895F81B27CE /* Pods-Draftsman_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 266E45FF02181C3E17719BFE6DD45BCB /* Pods-Draftsman_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CFE6D672FEFBE8A9D10D5723FB88BF2 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34902181CE3BA4E9E4634D300DA11E03 /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3E1105B44CCBDA9EC8C6C96EACCCC28F /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35A797049295148A57F44AE580D9E012 /* Behavior.swift */; }; - 3E97A584E7FDD55A6AC072DB23043FCC /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59C90421002B318BBCA522AD8F6D6B6 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 3FA8E6AEBD8687BF75B467C33ADF0045 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9D6320A3C9DCC8E9E7C2DB6B323D03E /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 40D9B846E5A8AF781C0A0C41FED0E0F8 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B287F1DF499FE5AF121456CC48137B3 /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 42BC3C3CBE7E5484F09BAD3204DE521D /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BC8007F0B9DDE49EAFB4C680CC85065 /* NSBundle+CurrentTestBundle.swift */; }; - 43C6EEAFF22F0E19DF80782AA737F6D2 /* Quad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D72D07BB3A415ADBDB8E29E70C814E1 /* Quad.swift */; }; - 440EF0353C58325A9F1D98B397EF4838 /* Single.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12FF88091A80D09D72B2CA105ED609F4 /* Single.swift */; }; - 4427E9EEDEC264E61F38BCE476D5CC98 /* QuadAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15BFF333AE527D0EE044C2F62BD0152F /* QuadAnchor.swift */; }; - 4756EFB1D272DA61F567521BF120BE5B /* TriConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA5A68442418342B578AA8EBEC651047 /* TriConstant.swift */; }; - 498D0CEF04FDF36BE2B89A67015FF3A0 /* String+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA6E84010FD9CAF1D68E94356077EBD2 /* String+C99ExtendedIdentifier.swift */; }; - 4A457767C9968D139BD8AAD877DFC117 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 519B71DB46B7E707A021BEE260FC4648 /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 4DB106EF5D81F121EA58D82401C5DD1C /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 937E7B2D19DA7E8586C76CE95B051B02 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 4DFD4AE1B1C12F59014A9C1FE8F7AE47 /* BeResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E923831CDD8FD81FFB6305B7B495A98 /* BeResult.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 4EC19A4F9EE9863B3CF7BDB7607FE96B /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05C60C5E7105FE3BDE8B190837E06605 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 51BAE003E7BD972B4F6EB54CFB7E1BF0 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAC30451511BC320B37732CE924D598C /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5258586AADBC8482EFAFB4B591A17E03 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = E82BF66ED2A1EA2928E3618D5B431FC4 /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5448447D317610CE0DF66B87CF6F1094 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2644FDAE7894C1234E7C99BAAACA9600 /* Closures.swift */; }; - 551F313ED7F0FCA5ED09C951D4A0AE3D /* StackCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9593D54E0431775D7D0BE389020D015 /* StackCompatible.swift */; }; - 567284108DCE582F0AC3584C6844039C /* ConstraintBuilderRootRecoverable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B145B3383384B804A565A14CA30C006E /* ConstraintBuilderRootRecoverable.swift */; }; - 58CAB839E63D7D4575D3DEDF8C98EDD9 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1094264A0E603F3F556F7C891F999D20 /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 5DE534ADC468F5FFC43371CE7138923F /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 144172B62E1552AF4262E8B17E5BB9DE /* URL+FileName.swift */; }; - 5DEBA72C49A443389125AB766BC35F14 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5EC39B34D59D98FBB2E8E7FC10B70D79 /* UIView+Extensions.swift */; }; + 3C9C63106697E85089D89C63D37FBEC5 /* SizeAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14C797D6635A050893CDACD2BB5FF924 /* SizeAnchor.swift */; }; + 3CFE6D672FEFBE8A9D10D5723FB88BF2 /* Stringers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6677C1AC5191A6873A09393290751EAF /* Stringers.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3E1105B44CCBDA9EC8C6C96EACCCC28F /* Behavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = F53E226A7272CBB61E12F82468B1663C /* Behavior.swift */; }; + 3E97A584E7FDD55A6AC072DB23043FCC /* SourceLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 725739EC140C0ABED654298B0E4E0F66 /* SourceLocation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 3FA8E6AEBD8687BF75B467C33ADF0045 /* CwlCatchException.swift in Sources */ = {isa = PBXBuildFile; fileRef = B025735755340D5E8F8F054D20BDECA8 /* CwlCatchException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 40D9B846E5A8AF781C0A0C41FED0E0F8 /* BeGreaterThanOrEqualTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = C71F0244D8F24BD23A3E14DF3589C054 /* BeGreaterThanOrEqualTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 41684FFF99B8ECC401C2615D2E943E50 /* StackCompatible.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E043482EC0C90D23DCE6CB6124D15E1 /* StackCompatible.swift */; }; + 42BC3C3CBE7E5484F09BAD3204DE521D /* NSBundle+CurrentTestBundle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89ABDEC6A3645C5FE3BE9E3AE1E00E4F /* NSBundle+CurrentTestBundle.swift */; }; + 443C2716AB6D39616CE30A88ECB9D0D8 /* DimensionAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E5ABA7D526D1CA03C4262E097E3E8E5 /* DimensionAnchor.swift */; }; + 48F427629ACF37FC7E46886BEEF17F92 /* AnchorExtractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2D8EB015E02BEA7514097862B3B1136 /* AnchorExtractable.swift */; }; + 498D0CEF04FDF36BE2B89A67015FF3A0 /* String+C99ExtendedIdentifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4018BB59275701BD151973537D29BA6E /* String+C99ExtendedIdentifier.swift */; }; + 4A457767C9968D139BD8AAD877DFC117 /* ThrowError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1164DF81BB8EF2D1B255E37284F43B0C /* ThrowError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4CB1EF15D5DC23A3A8A6B494832A5857 /* PlanComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02EA27FDD0646330C391C8EDE03AADC8 /* PlanComponent.swift */; }; + 4DB106EF5D81F121EA58D82401C5DD1C /* MatchError.swift in Sources */ = {isa = PBXBuildFile; fileRef = E858FF7E8DECE0FF0D08BB064F2E5776 /* MatchError.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4DFD4AE1B1C12F59014A9C1FE8F7AE47 /* BeResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98C35911F00ED77FE043DCF4418BF41D /* BeResult.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 4EC19A4F9EE9863B3CF7BDB7607FE96B /* CwlBadInstructionException.swift in Sources */ = {isa = PBXBuildFile; fileRef = E457EA3FE18C39CCB11D8A5B258D3AD0 /* CwlBadInstructionException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 51470AF888F24DCA2AB70970EA378563 /* Planned.swift in Sources */ = {isa = PBXBuildFile; fileRef = 232541AE4A488DA8EDDC05D1A671C67B /* Planned.swift */; }; + 51BAE003E7BD972B4F6EB54CFB7E1BF0 /* RaisesException.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7682F461F8C87D71C88CF1A1EE04ABDC /* RaisesException.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5258586AADBC8482EFAFB4B591A17E03 /* ToSucceed.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25FAE002AEC8ED3C0FB76A58263DD7EA /* ToSucceed.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5448447D317610CE0DF66B87CF6F1094 /* Closures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8911933CA5DF20202716D24742763FAC /* Closures.swift */; }; + 58CAB839E63D7D4575D3DEDF8C98EDD9 /* Await.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91BD0FFE708A2C526DD7AAFAE27DB14F /* Await.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 5DE534ADC468F5FFC43371CE7138923F /* URL+FileName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 840402D6282EDA6DBC00987084E13C46 /* URL+FileName.swift */; }; 604A73AD1D0E82356F2A073C53BC6517 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 60A059AA3734D5D3F2F73D07C427F4C1 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = D390F33B0CADBB80543BA85EEC5EA14E /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 612581CCD8346C696A80E6BC09D24C1F /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 5007070E157ED37D823A960E074F2EB8 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61F1ADB6BE662783C1A01C2C1720A9BE /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6768B889EC549BF0A99CD940CDFA08A7 /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 654580360E6694D7F7CE85CE5390DA79 /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E0F92D5B728AC6B5E5F47DA189EF94 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 67003AFC9C455DBF1958F99413794E60 /* TriAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1824364AC91FC5A8029997CE91DC1065 /* TriAnchorRelation.swift */; }; - 6A47C53473FBCF2FF5C85069FBD4CA8D /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = C79DC79C82A767B35C765052D1F59EAF /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B6DB611AB396C7A77761585ABF9A33A /* PlannedDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 209AA9A13B21ED947A35DDF077BDE4C6 /* PlannedDraft.swift */; }; - 6C1386A39405BDA544D5BEE2C9155AB1 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = D62E217A34A0A45D02C42EBF258EA38B /* QuickSpec.m */; }; - 6D2F9F1DC6C1DE1C73F4382904B9C97C /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D43D70AC37EC634DBC735BB7C44AB3E /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6E9CF7B9023BC352D8A18AD980A579A0 /* AnchorExtractable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19E52FC4EF66F22CEB610760CFC09CAF /* AnchorExtractable.swift */; }; - 6F4F5989C108EB29AB735E9CAF4B6E0A /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66BD87331DD2842F22CA5B50273B15F6 /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 6F796B7E3AA428C9D8E88F0F2269664F /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9F002C190EBCAD58CB5E917D4C27C32 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 707245706183C9814604FBE34CD83152 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A389B5FC4AB4C0A7B14CA19938074DB1 /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7190961540266108624E854866842A81 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = A7F8095E4CFE31B0B3AE18CD9D934C94 /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7338346428E4AB8300942D6E /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7338346328E4AB8300942D6E /* Array+Extensions.swift */; }; - 740EA96B039CA809BD0C8E9FF7C05A38 /* ConstraintBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A23DF5CA64368D5BE8A460A6681F40A /* ConstraintBuilder.swift */; }; - 76974B6FF7A8313A520C569403D07803 /* PropertyAssigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9C86D2C525F2D0CED613EC03848418A /* PropertyAssigner.swift */; }; - 76B4E66F5CCE543B7AAF93A1C8449944 /* PlanComponent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 42DF2D5774CA9CFA50CF76D83F9E36B3 /* PlanComponent.swift */; }; - 794A4683D2CC855C09A4280554A04015 /* AxisAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 488B32286A6D1A935FF3BBF935A9E87E /* AxisAnchorRelation.swift */; }; + 60A059AA3734D5D3F2F73D07C427F4C1 /* NMBExceptionCapture.h in Headers */ = {isa = PBXBuildFile; fileRef = 26CA6C5D8ACAC762A4784454CBE3B8DD /* NMBExceptionCapture.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 612581CCD8346C696A80E6BC09D24C1F /* QCKDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 07F79505B93D0DDA3C869224CC1F7999 /* QCKDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61F1ADB6BE662783C1A01C2C1720A9BE /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43694A63B869AF5F45E2DD1B5F113D2F /* Expression.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 654580360E6694D7F7CE85CE5390DA79 /* PostNotification.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82098EC180862D963A86CF80F507E0E6 /* PostNotification.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6A47C53473FBCF2FF5C85069FBD4CA8D /* QuickConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DFDE9E54DF85AAD8AD8B12731348073 /* QuickConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6C1386A39405BDA544D5BEE2C9155AB1 /* QuickSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AB7FB524CED72E89B9B1C499630B3C7 /* QuickSpec.m */; }; + 6D2F9F1DC6C1DE1C73F4382904B9C97C /* DSL+Wait.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB863FAAB3858882D265B7079F88DDCD /* DSL+Wait.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6F4F5989C108EB29AB735E9CAF4B6E0A /* BeginWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66043F8E8A1F2E882412029A18F7BFAE /* BeginWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 6F796B7E3AA428C9D8E88F0F2269664F /* NimbleXCTestHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07C1814E351F8573CE38A24CE6661506 /* NimbleXCTestHandler.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 707245706183C9814604FBE34CD83152 /* NMBExpectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4410D3243C842F664FA8B319ACEE5FD0 /* NMBExpectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 70C01A2C1BD7B9735BF5173F6CCD4BDB /* DimensionAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B0CC151B9BDAA8C7C0B518A0411AD17 /* DimensionAnchorRelation.swift */; }; + 7190961540266108624E854866842A81 /* NMBStringify.h in Headers */ = {isa = PBXBuildFile; fileRef = 0DCEC85141E0EBEAD17C913B2E82E4CC /* NMBStringify.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 746D8827B7478AA47FDFA8935C17F1CE /* PairAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A65173AB8545A492E9314AAE48FF038 /* PairAnchor.swift */; }; + 7829CFEBBC9B733A1E3342F4A811348F /* PropertyAssigner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3EE9B903CE74515E93607D6AA1338F9 /* PropertyAssigner.swift */; }; + 78FBE0829DAF1648B58E97DD49A619A9 /* IdentifiedAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 559E425C507D5174E083C1DEFC3D86FA /* IdentifiedAnchorRelation.swift */; }; + 7934FA4A46E10952D984E4D1D88262A7 /* PlanContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5F1030748CF0F6923BAD7B7EA3EE43A /* PlanContext.swift */; }; 79A9ADCAE72B5F30CE882F79CDDDD47F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 7A9EFAD9D05F58AEFD9D51A592E14563 /* PrioritizedAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91BC1963DB2C51BC8DAF72E13B12E10F /* PrioritizedAnchorRelation.swift */; }; - 7B8F252D4398C875CE9D707A7CC555E5 /* AxisAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21A2245F3628116897867FC47E88245A /* AxisAnchor.swift */; }; - 7CC0A71F28BB69420551D2214A7907A7 /* Planned.swift in Sources */ = {isa = PBXBuildFile; fileRef = D82D7CBFF61784B3DBFAF1D39CCD070F /* Planned.swift */; }; - 7DF5C2582E1C9DE5BC6BF84C0AF1337B /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B78AAB2E23D8635EBF7A34977E948F04 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 7EA5733A597A87700FCF283E94C31101 /* LayoutPlan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0355375971B19922AD424D5AAE7B8D07 /* LayoutPlan.swift */; }; - 80428B0834B1272AB4E96E00D3FAA081 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3D6123B23635D88CDB88C521EDCB8AD2 /* Example.swift */; }; - 80DB7C67B0D7A32BF885B5CD17C745A1 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E33B8E7D670D04FF811678F2002475D /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 80E6FC4AFD655C09D6FA50396F91E050 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - 8287DC1C87F3278CB7DD51D4EC5FE0D3 /* Pair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5719C9D45BB7F2A2FEA1ECD915EBF3AF /* Pair.swift */; }; - 84590E005ADAF6AE44386659CF3DEF07 /* Builder-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DA8A1D41AF0C8C7DAD5B91413DBE810 /* Builder-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 86037D5CAD49EC09A2B944ADBF561059 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8EAE7D5466706143DD7A012BCF676138 /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 86F84DE049A0E2CADAC8344E20D070BE /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = C22150BB1E2B9A297F5BA858F3837753 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 87535E5C51E9F6B7B1517FEA95033D1C /* QuickConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3895C1B681E98A656CBB8A2CCA9687B /* QuickConfiguration.swift */; }; - 88380C6AB029E423E69827B204BFF18A /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 24DB4C93B4E00EAC6BFF478AD19BA355 /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8902A3ED845ABDA286BB703931DFA331 /* SingleAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4314F07E08914E7CED0FB12153B6831C /* SingleAnchorRelation.swift */; }; - 8A9FE00A3D26CFEDEF3503C93FEFC954 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5840027BA79C06D5DC48EEE5F597DA1 /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 8EFA132322053E7D8A1F9F380B5D8935 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 652C039BF4C6EC562A5C7B95C9F3945C /* SuiteHooks.swift */; }; - 8F5593DFFFCAC3D618365EC2590A3E31 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31A849766961AACFD1B744E793E8E8BD /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 92DE6AC67462F0A507D3187892D4FA8A /* Equal+Tuple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AA51D737D79C6350FCB3C2B044A9176 /* Equal+Tuple.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 97ECF3FDB42C6A6C3AD1127F7E4EC824 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF791046C5279007C15ECCE0B3924819 /* Extensions.swift */; }; - 981F6B1579CE5D0BDB6E936DFC0B24F1 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = D15E936B5021051E3A9650D3135514AF /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 993ED0D1D74DDFAF99D4108636EFFA64 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68E9E946FBFC2E79E22202D6D623E920 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 994DAB83E925F5BF28B00DFD0F9795CB /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = EA593E422DACD61077EB2D6644130983 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 99F9F089E9D10A428679A128E9532366 /* Draftsman-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8312E044EEEA8B2004A8EDFCA219E66A /* Draftsman-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9AB3D03BC12D48113C0AFB7E687A274D /* BeginWithPrefix.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE65E62F4F0B324337F8B1921C1595A7 /* BeginWithPrefix.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - 9B4B84C8A58733E87C1F30CDE34F3BEE /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5815083A8AD5197F471C594EBDEA2837 /* Filter.swift */; }; - 9B981E6DB0846F597838D6995E3F2EAC /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5908237492DD75A4AAF05BC22F8AA54 /* QuickSelectedTestSuiteBuilder.swift */; }; - 9C75931ADE8431B4C3C4AE2D59E70977 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A27FBD2F932AE12AD8AC13B164D19C2B /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A017E1A4E1C0AA61CDB6F1E8382D3384 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C3BF63D3E41CF86456A996818DD6EAB /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A0F1DDBCD61B35967DED6A8F6A69B9A5 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38271ECA9316028B9D23F41828F63833 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A327A211C8B71069F32FAE5F5B3807C4 /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9DF40AD5CE30D9B09A9A974E2881F6FF /* HooksPhase.swift */; }; - A357C8E38B58FA37B8E1A6103D4E9A0A /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = EE89AC7C3CAFD35BA2AA59BE90658128 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; - A487451E3CC40D7F9549FA292435273B /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D02A8262EC4C4C5B11172BD0C4668A /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - A797CAAF4F9DF5220E84432904DF754F /* NSLayoutConstraint+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 676AE36B97B426981432A4B266A54503 /* NSLayoutConstraint+Extensions.swift */; }; - AC0278DBE6921D2AA8CA82CBE8805202 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B5AAC6AB20E3EECDA3AC0E2A21FA009 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AC1B0A94D98FF6A485E56165BDAAFB8F /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16509A0DDF9C7121EBD25A8E8E0C4E5 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - ACAA345A1CCAFA1F4EE69B3C25D62558 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = D59F0078C67398DD898A69650A4D5196 /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - AD022386EA01CE480072E4C2E261BEC6 /* QuickTestObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66B02421485B2A07BE2A3F701D6539BD /* QuickTestObservation.swift */; }; - AD7C1FA2A3E4020F6EC99EAECCBCFBB2 /* TriAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = EEA688D2A6CFE2E46E886F4D16808ADE /* TriAnchor.swift */; }; - AFB4F603FD0F5C407CB8920F6A5BA7A1 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5FE3D5047301FF4B9CFA37F50CF5114 /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - B33DBB8BCB935B6F8B1CE43C99983517 /* Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5822A067E142C1FC300DB032159AEF92 /* Builder.swift */; }; - B6B9D13ACD0BDEE4383F2EBF28AE960B /* Enumeration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00CE82A209E92D81CEEBE3653DD8E869 /* Enumeration.swift */; }; + 7CB1E45F851CE029B9BE62978AC6F3B7 /* Clavier-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B0486A3491001C6741CC5989579AD768 /* Clavier-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7DF5C2582E1C9DE5BC6BF84C0AF1337B /* BeCloseTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA9FB3A4B1E95498D10920FB9E6F4E24 /* BeCloseTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 80428B0834B1272AB4E96E00D3FAA081 /* Example.swift in Sources */ = {isa = PBXBuildFile; fileRef = 431ED380BFA14D19D1CC116A51D49983 /* Example.swift */; }; + 80DB7C67B0D7A32BF885B5CD17C745A1 /* NimbleEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5311553D90AA5588351B2EEA4A9F6B11 /* NimbleEnvironment.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 833089DDB7500C135F0173402FC45F09 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + 84590E005ADAF6AE44386659CF3DEF07 /* Builder-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C47B11874DCB0ACCD44C2F88025FADAD /* Builder-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 86037D5CAD49EC09A2B944ADBF561059 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = A2E8249B5A2384FB931142268AE36B7C /* Errors.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 86F84DE049A0E2CADAC8344E20D070BE /* mach_excServer.c in Sources */ = {isa = PBXBuildFile; fileRef = 35A0D0FE5FEE2544DC41C6FB3D115689 /* mach_excServer.c */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 87535E5C51E9F6B7B1517FEA95033D1C /* QuickConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA2365646A4A2633F4C69BFCEF3FAD9 /* QuickConfiguration.swift */; }; + 88380C6AB029E423E69827B204BFF18A /* NMBStringify.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D2C1FD621B1096DC785D647325AFB0F /* NMBStringify.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8A9FE00A3D26CFEDEF3503C93FEFC954 /* EndWith.swift in Sources */ = {isa = PBXBuildFile; fileRef = F319CC74AE742617343D02C99CCE747C /* EndWith.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 8E37010D77F00054207AAB5614E199CC /* Protocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FBE658E2D3137F4ED1277E9273FECCA /* Protocols.swift */; }; + 8EFA132322053E7D8A1F9F380B5D8935 /* SuiteHooks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10A9F5E915A51697C4DCEB598D3461FE /* SuiteHooks.swift */; }; + 8F5593DFFFCAC3D618365EC2590A3E31 /* AssertionRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8E3628E7BBDABB5F94731B7C7ECA61A /* AssertionRecorder.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9043C685084E17D09BCA8C797AE20BD9 /* ClavierGlobalConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A901079678A9753FA626807134B14260 /* ClavierGlobalConfig.swift */; }; + 92DE6AC67462F0A507D3187892D4FA8A /* Equal+Tuple.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C27E9C4CB1F3760C925F48150B2D179 /* Equal+Tuple.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 950F1839C0B12CED8FAC44B42B886097 /* SingleAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9E60B1CC51AE19E6993635FC7504A16 /* SingleAnchorRelation.swift */; }; + 969DDBB4B1A874B040569E468A94D504 /* ScrollableStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61F732448EADF3D6B9F2F90014640856 /* ScrollableStackView.swift */; }; + 97A3C65C1FD86376B61E1BB31BB93835 /* ContainerShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1EAD7CA78B6D2CDB9829F2D15FC23D /* ContainerShortcuts.swift */; }; + 981F6B1579CE5D0BDB6E936DFC0B24F1 /* BeAnInstanceOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C992FDC330FD22650A6CA9801E4B049 /* BeAnInstanceOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 993ED0D1D74DDFAF99D4108636EFFA64 /* FailureMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 136605DF24805A81A5D230F255E96A68 /* FailureMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 994DAB83E925F5BF28B00DFD0F9795CB /* CwlCatchException.m in Sources */ = {isa = PBXBuildFile; fileRef = 66193B5682C346C6FFBBA53B7E1318E4 /* CwlCatchException.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9AB3D03BC12D48113C0AFB7E687A274D /* BeginWithPrefix.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFCD437E46CEF3124CF56E3CEDBAC5CA /* BeginWithPrefix.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + 9AEDE52279381927D9A235C6820C9AD1 /* LayoutAxisAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8480E62177953E5DBE9BD11970F4D7AB /* LayoutAxisAnchor.swift */; }; + 9B4B84C8A58733E87C1F30CDE34F3BEE /* Filter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C42F82B27F3E2E49CFC6941002F201 /* Filter.swift */; }; + 9B65363F43A81C92936A53AED0608A7B /* RelationShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 492E39F83E770801DB58440F0B50EC97 /* RelationShortcuts.swift */; }; + 9B981E6DB0846F597838D6995E3F2EAC /* QuickSelectedTestSuiteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 051942DE705B9C2A627B6BC00EBA302A /* QuickSelectedTestSuiteBuilder.swift */; }; + 9C75931ADE8431B4C3C4AE2D59E70977 /* Predicate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E1BC6C8062469442D21D0CDFB833E0AC /* Predicate.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A017E1A4E1C0AA61CDB6F1E8382D3384 /* ExpectationMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = EBBF6B10A17BC79EF59D8227F80A2D78 /* ExpectationMessage.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A085ADDD5EE53D490FA112241A6333EA /* Clavier-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AA8366AF94393307C65D84C2AD38109 /* Clavier-dummy.m */; }; + A0F1DDBCD61B35967DED6A8F6A69B9A5 /* Async.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23C1AC171D6E2D79102E4F54BFEEC1A5 /* Async.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A327A211C8B71069F32FAE5F5B3807C4 /* HooksPhase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 38D0B0C836940546F1BE7D8B0CFA62FD /* HooksPhase.swift */; }; + A357C8E38B58FA37B8E1A6103D4E9A0A /* XCTestSuite+QuickTestSuiteBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = A879D9A247C44C36A8E6E1AD714B11B6 /* XCTestSuite+QuickTestSuiteBuilder.m */; }; + A487451E3CC40D7F9549FA292435273B /* NMBExceptionCapture.m in Sources */ = {isa = PBXBuildFile; fileRef = 30911A4381FDE9AE0410768D050C3936 /* NMBExceptionCapture.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + A7B3E2C99BFA7878231314A4F51C4CC6 /* LayoutDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 092B065179C53555ED9C3AB134242C4A /* LayoutDraft.swift */; }; + AA6CDD31E830F6464D8767710780B908 /* ConstraintBuilderRootRecoverable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65E6DD89D720F423FEA9C3E5817BBA78 /* ConstraintBuilderRootRecoverable.swift */; }; + AB72EE2B41A690442ADD196BB45B3F51 /* Enumeration.swift in Sources */ = {isa = PBXBuildFile; fileRef = F92F525B6EF698E256C600E6E2C45107 /* Enumeration.swift */; }; + AC0278DBE6921D2AA8CA82CBE8805202 /* AssertionDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C398878D8C636E6FBDD66A8F7206D57 /* AssertionDispatcher.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AC1B0A94D98FF6A485E56165BDAAFB8F /* BeAKindOf.swift in Sources */ = {isa = PBXBuildFile; fileRef = A90E010394157594711180537C5D6FA9 /* BeAKindOf.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + ACAA345A1CCAFA1F4EE69B3C25D62558 /* Contain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E8ACD202F4C7691BEA8BE3701654A4C /* Contain.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + AD022386EA01CE480072E4C2E261BEC6 /* QuickTestObservation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A10BCA10C30356AB7021935731FD2700 /* QuickTestObservation.swift */; }; + AEC21F9264EE8A7A104CF8CB42C06AA8 /* SpacerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5208F25A418D69F6E06D71D73D8DEC69 /* SpacerView.swift */; }; + AFB4F603FD0F5C407CB8920F6A5BA7A1 /* Expectation.swift in Sources */ = {isa = PBXBuildFile; fileRef = C69E8915052723FE071121F5EF9F171F /* Expectation.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B0F9074A2AD569E1FCB12342D5247410 /* ViewPlan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2EFDA4E4E119EDB6A1AA972BC84108FA /* ViewPlan.swift */; }; + B100560D6E0326FF5E7FEDBCF88D1CFE /* AxisAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6AA85E7375B4BAE56D97CFE584CB6131 /* AxisAnchorRelation.swift */; }; + B2C4EA6AA5437E49E5E4DB9C3C49E706 /* PlannedDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35BEAD9CA34C6BB41194F41B5C2B6C4E /* PlannedDraft.swift */; }; B6DA1793F04FA80F00487F92A9340EC7 /* Pods-Draftsman_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B407211DC74AFDCCFE0D7DA7F06562C1 /* Pods-Draftsman_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B8341CB966AB4301E695EA6BA8434C44 /* LayoutDraftBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A4323F569F72E1A1E042D90A1720EA /* LayoutDraftBuilder.swift */; }; - B93F3526A95D7F43EEBFEE5E453E4795 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 37A1D21583CD2AB9DB544F099A271D6A /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + B8FA83E016F82F17A2A23EFF37E90E7A /* PairConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1534DF0D6E230FE0592B9F448C115AEA /* PairConstant.swift */; }; + B93F3526A95D7F43EEBFEE5E453E4795 /* BeLessThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = BC13F0D7FF0DB57133CFEE80204AF7A7 /* BeLessThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + BA9C12BB1044F3FA4F3172CDD26B4CDC /* NSLayoutDimension+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443801767FE690BB2C7EB8E6CC514E88 /* NSLayoutDimension+Extensions.swift */; }; BCE752B0FAA9E4070407EDDD03C06922 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - BD3ABAC28025564DCF2E6C12009435DF /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FDFA8E59FDD3C7B46E6533D3C31A56F /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - BF62525E5628A9F7604BA8479691318C /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7BA9107F8213309BEA92F26E38C5C00 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C03116C765F1A8893559730965ECBAD8 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F2160B0405606708C97F914268A564A5 /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0451587E5DF84DAA505246252F2D8AB /* SizeAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7E1ACA5CBD961CF11BBF097CE9BD119 /* SizeAnchorRelation.swift */; }; - C05F31EC32F5325FE0907C3AC85ED1F1 /* ClavierLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = D098AB0DCD749B3D69F2A32B6A80BFB1 /* ClavierLayoutGuide.swift */; }; - C08A1951949EF07292FA218ACBA7A21B /* QuadAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF8DCD168B2BBEB6792BA6211CE9B1A0 /* QuadAnchorRelation.swift */; }; + BD3ABAC28025564DCF2E6C12009435DF /* CwlMachBadInstructionHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = F3C715B5F93D7E6F5461C4DE2075D8CA /* CwlMachBadInstructionHandler.m */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + BF62525E5628A9F7604BA8479691318C /* BeLogical.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AEF9F60D2E1E75D852EFE7B9DDD4CD5 /* BeLogical.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C03116C765F1A8893559730965ECBAD8 /* Nimble-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E57A3B8905D2CDCCBE133445F93D336D /* Nimble-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; C0DEEBAA700A340E1427641E9169582B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - C20BFECB0A04FE439AE243D89E687B8A /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5FA5D2B0C7DC9D960CB4A12F43F472E /* QuickTestSuite.swift */; }; - C5DF891232B50DB810099403734CFCEE /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 62B25A9CE7935ECA8EE758637189BEB1 /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C7DB9FB7C8378ADC0DBC744F9359C0C9 /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 266AD3AF932FD76CB21C920CF7DE8F91 /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - C8539F1BDF052B57BDB129D3D4B07364 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8E01E8899530CB81E10C0BCD3B957CF6 /* Callsite.swift */; }; - C85E1092F4DAACDD63FB8E8B0E144095 /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77B42A32E91E4CA01BA0031FE3180024 /* ExampleMetadata.swift */; }; - C96B370E9B3442878448F8FFFDC98C7A /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E79F5E7EBE734927B19DC82DB6FFE425 /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA32F74C00C2448397720AB161360835 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F03BB6A872AD571DB15352C3634491F /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - CA7981D7578EEDE210D420C939F9ACF2 /* Buildable.swift in Sources */ = {isa = PBXBuildFile; fileRef = E26DF00A3B9BA8E2C0705CDF3AB1F7E2 /* Buildable.swift */; }; - CB509AA2B4CFC7A7F252B62FC2FCF95C /* PlanContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BACE814300D9AB309C871B5B18AA2EF /* PlanContext.swift */; }; - CCEB6E9391D7C8BD953C868E77B35BF3 /* LayoutAxisAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 226D408F1B7005868922B0401642A1C4 /* LayoutAxisAnchor.swift */; }; - CDFC2FB1C61D8ED5A656F7D81397A51F /* LayoutDraft.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06D7901B8C94E043D25E22874321C723 /* LayoutDraft.swift */; }; - D6F1A9AFE522D73CB8BDF851FF6F7ACC /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33F2A9FDB4519D7F5975B9608E915824 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - D8B8FCEC597824B40986C8F4F7B50899 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = EC33E010E3CBCCF2C4E2262E68D3DDE9 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D98C9FFD1E7CEDB9718CDC5B3B43BA0C /* DimensionAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D25B4F3E3629387CA363FCF42012A3B /* DimensionAnchor.swift */; }; - DA9B61878019B5428B614BDDB5948F01 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = A413122069A59A3679A95639585169D9 /* QCKDSL.m */; }; - DD130331C3820B0A4A655D6422167410 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9F10206C9C87AF0C0C088D981BAC2BF /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - DEB3583A39304607B54A6569DAA3A5FF /* PairAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6CE52C0BA45576F31E777A021EB5B5E6 /* PairAnchor.swift */; }; - E1CD0FEF6BA86FA9C28038C818E2514A /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = 5BBC786B8929383791A7D1CA2E5C705C /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E2EE2E7797C383576ACBFE4986179459 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D64586C428F87C5552BFB3E69EEF23 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E39C0C0125560F093181D80353A79EC8 /* LayoutWithAnchors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1642E13EB32327ECED1649F242B6765F /* LayoutWithAnchors.swift */; }; - E48D5FD95749F4985086DD2E4F686426 /* SizeAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB4CE33D530339BEA8FE60F70DA08CF1 /* SizeAnchor.swift */; }; - E5ACC239A1C2E515D4939ACECD147445 /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6E43BD0A9EF28E8DE5ED5350DE5C3FF /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - E8FD9CBD1EE4618472818616F3B4DC7E /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E6619969CC9E3F112A2B9D3A006E190 /* Axis.swift */; }; - EA4EC4B3853541FDC946239C036D12C9 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = 495C9BEA61666B97A4864042CD4FE63B /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C20BFECB0A04FE439AE243D89E687B8A /* QuickTestSuite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12822861023E538C04D50C6C8BDCCBE9 /* QuickTestSuite.swift */; }; + C5DF891232B50DB810099403734CFCEE /* Match.swift in Sources */ = {isa = PBXBuildFile; fileRef = 200F0931E608DAAD14E25287B23F77A7 /* Match.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C6E46447914DE94FA5D6E7441A95DAD9 /* Builder-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 818208405E0D69D20F7F07BDD02AFA3E /* Builder-dummy.m */; }; + C7DB9FB7C8378ADC0DBC744F9359C0C9 /* BeIdenticalTo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24B661DCCC9A1420E90389B9FB889F9D /* BeIdenticalTo.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + C8539F1BDF052B57BDB129D3D4B07364 /* Callsite.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9889D9E1CC9EDDA0D7728C0590858FBA /* Callsite.swift */; }; + C85E1092F4DAACDD63FB8E8B0E144095 /* ExampleMetadata.swift in Sources */ = {isa = PBXBuildFile; fileRef = F18356A80DEDA0EF43A437DCE96A4B57 /* ExampleMetadata.swift */; }; + C96B370E9B3442878448F8FFFDC98C7A /* Quick-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EAA0CAA39BDBE100E174DA290454D4A /* Quick-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA32F74C00C2448397720AB161360835 /* CwlDarwinDefinitions.swift in Sources */ = {isa = PBXBuildFile; fileRef = B84DE24A59C1EFD27F1D3AF8E51980D0 /* CwlDarwinDefinitions.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + CD58FF53AE597F9EA4127A42C017CE19 /* ConstraintBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47A21F9E484EC88E403714A8AB238275 /* ConstraintBuilder.swift */; }; + D0BD0D26A9309FE896005D62591A0584 /* Pair.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8503BC4E9FD68E4EB4C50CF9479E0D02 /* Pair.swift */; }; + D392AA40467D2C20577EAA3EBD7B3AB0 /* TriAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4685D938A89D462D41E326D2B7ECE8A7 /* TriAnchorRelation.swift */; }; + D6F1A9AFE522D73CB8BDF851FF6F7ACC /* BeEmpty.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FE19A83D3CC4CB7B5D424E2F0736F78 /* BeEmpty.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + D6FFD2E89FCB51115EF331F7D251CAE9 /* PrioritizedAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E180D18EE24C1427835F1E0A883102B /* PrioritizedAnchorRelation.swift */; }; + D8AF0A6CE8C38C3DB55A2FF8B5B8882B /* ClavierLayoutGuide.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F48A451A911C19B8010050F78D8E623 /* ClavierLayoutGuide.swift */; }; + D8B8FCEC597824B40986C8F4F7B50899 /* QuickSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E68B74DF1D2389F061F16081E84F881 /* QuickSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D8C2F734F892197DCC19A227644E6B95 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; + D8F2DC6217EA618F75BECB84129131D7 /* SingleAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02E585D5A62187E9FAAF40290B3EE732 /* SingleAnchor.swift */; }; + DA9B61878019B5428B614BDDB5948F01 /* QCKDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = FD4E4594EF007A62746511039A980654 /* QCKDSL.m */; }; + DCD86D8A86A3F44C27CE1AD81C60014F /* ViewPlanBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = A57D2A38430102E2E01F4D94C8E90DEB /* ViewPlanBuilder.swift */; }; + DD130331C3820B0A4A655D6422167410 /* CwlCatchBadInstruction.swift in Sources */ = {isa = PBXBuildFile; fileRef = E54675665D3F61FE756524D692AB5186 /* CwlCatchBadInstruction.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + DFACA462D29ECBEAAEDE1FAC2B158BF6 /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DF72507FDED1D85DB5943605E70CDFF /* Array+Extensions.swift */; }; + DFB160A96C4602BA8C37455CC0B41A01 /* Builder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98432718D9B2416BF0DF0A39DB58C4CA /* Builder.swift */; }; + E1CD0FEF6BA86FA9C28038C818E2514A /* Quick.h in Headers */ = {isa = PBXBuildFile; fileRef = 12BDF9CC38F1EA517129C7FF2FDBFD1E /* Quick.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E2EE2E7797C383576ACBFE4986179459 /* CwlMachBadInstructionHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 95F9E029DC912742DE93FC2A3E6A2197 /* CwlMachBadInstructionHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4C2EB1548D6A9F54D527A9E39961606 /* BuilderConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 053A50063B540D235EED8C9DD5218DFF /* BuilderConfig.swift */; }; + E50D840B73EEEEECADAB1A5F3FB3E4E0 /* StackedShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5C390908ED994749637F51036381865 /* StackedShortcuts.swift */; }; + E5ACC239A1C2E515D4939ACECD147445 /* ThrowAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9319AC4BF57CCC257E0B5E1588864CE3 /* ThrowAssertion.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + EA4EC4B3853541FDC946239C036D12C9 /* CwlCatchException.h in Headers */ = {isa = PBXBuildFile; fileRef = F1DFCC2CC4DA474E9779D62E7B19C910 /* CwlCatchException.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA75AE8D9FDC5EBE5AA06EA29F0E97E1 /* LayoutAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = C72E4E272B3946E44B7A180F4A05FF84 /* LayoutAnchor.swift */; }; EB892573E1CA332ED26DCC659406E79B /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5EBC8F300895E39EA0DF6D6B2B5E6BCD /* XCTest.framework */; }; - EE92DC271EB1AB86BD57B51601BE0D34 /* PairConstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C2B9C3D5F8C2DB13FA4905ADE34AD90 /* PairConstant.swift */; }; - F079013DA271BD05A2A3B0C065C2B44F /* BuilderConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7033E80BAA270169AF0A3E6AAC382DF /* BuilderConfig.swift */; }; - F1B936C380DEC9B10D66549A7D48AFF3 /* DimensionAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C367FFFBEFBC7E1E97FF0DC1ECE4B7B /* DimensionAnchorRelation.swift */; }; - F1D91144B0B756BA7723E0AE68ED6605 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5936BFEB8DC2AC38554B7A20232CC77 /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + ED883CDE6EFB7D9D1483987E59332718 /* NSLayoutConstraint+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8ADCCC3B49EA8ED27A3ED5E32D8D567 /* NSLayoutConstraint+Extensions.swift */; }; + F1D91144B0B756BA7723E0AE68ED6605 /* DSL.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AA4EAB690407F8D6E6363EB879D7A3C /* DSL.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F201E51769383034D951AA3D645818B9 /* Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9700F2C9E09EEB13F94EBAAE4D2148D3 /* Extensions.swift */; }; F2981586E3BB4BC04266DF4528935B5D /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - F3F61F1CD81C56CDB3FC9ED8C84B6331 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */; }; - F591765960EECDBB53CB4E5329290A4B /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = A384AE9469CEAAF94260C5BC06F5BD9A /* World.swift */; }; - F68761380E710C5BE715652D3281AA74 /* PairAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82AD676FD9C6172A4028E4335BFDCEA8 /* PairAnchorRelation.swift */; }; - F8211C89835CD4106BCC584D260CF7C8 /* DispatchTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB099C376EEE6CF7022946FB5ADFDE94 /* DispatchTimeInterval.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F94ED0C040D8EFE1B1227A464F81E92E /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EE15AD69F220410947D87E3FEB862F5 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - F9761422C469099AE7D864CB25FF43D7 /* Dimension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D1F60C06278B1E78298931995EE0A2D /* Dimension.swift */; }; - F9A961CFA0E2BD3C6A94E282069AD80E /* BeWithin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9518D5B285C0873FABBF788F3E7E3B2C /* BeWithin.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; - FC4F734925BC0EDDCD7C10AFBF93C576 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 74E906447EE49643013413EA4303EFD4 /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2A85DE7E9E7F38153A3415AE97E13F8 /* SizeAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AD9EED292C49CCF3DF63292FC710C9F /* SizeAnchorRelation.swift */; }; + F591765960EECDBB53CB4E5329290A4B /* World.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B111C24AE1DD81E744CEB0050713036 /* World.swift */; }; + F66AE856EBABEA498EDF767261592646 /* QuadAnchorRelation.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8A53E3A23E053AD875CCB228AE826D9 /* QuadAnchorRelation.swift */; }; + F8211C89835CD4106BCC584D260CF7C8 /* DispatchTimeInterval.swift in Sources */ = {isa = PBXBuildFile; fileRef = A45FF9C479C34F890682324EF33E0574 /* DispatchTimeInterval.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F94ED0C040D8EFE1B1227A464F81E92E /* BeGreaterThan.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D2BA20E92B64AC49C2BC8FC0CFCEE53 /* BeGreaterThan.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F99C5F7BBC48F994B34D2CF6A0ABEAA3 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E858256F02A701F155B94B237C365CF /* UIView+Extensions.swift */; }; + F9A961CFA0E2BD3C6A94E282069AD80E /* BeWithin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66A0313396F6ED6C110DF0AAEC7FA379 /* BeWithin.swift */; settings = {COMPILER_FLAGS = "-DPRODUCT_NAME=Nimble/Nimble"; }; }; + F9AB9D23F19EF6D4272DF0CEDBD3DE80 /* Quad.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F5CC8CDD4398BC26325E91061DC1824 /* Quad.swift */; }; + FC4F734925BC0EDDCD7C10AFBF93C576 /* DSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 71DDF4B53E8861E1A5C962C5376D06DB /* DSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC740D424C63DF7BDC9979648F3F8D39 /* Trio.swift in Sources */ = {isa = PBXBuildFile; fileRef = E0508947DE58BC8F5113292D4B2EEF18 /* Trio.swift */; }; + FD534E4AE3BEE09DCEAFB3DA673AEF29 /* Draftsman-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A82991E1B5E0E1545425196ED6C34D30 /* Draftsman-dummy.m */; }; FE502F2AFEA87D6F29F6D2055DE4D3D1 /* Pods-Draftsman_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BC0D0F6F41D47F431F57521ED65DE6F /* Pods-Draftsman_Example-dummy.m */; }; - FE67CE5AE4DFFE6B850FA43334EEBDC0 /* QuickObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = F4AD561DA06F34461348764A677A97E0 /* QuickObjCRuntime.h */; settings = {ATTRIBUTES = (Project, ); }; }; - FEA8C3E9543FB2A316D5A8F89B13D411 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 92C198821CF9D261F64DA88A8B023E20 /* Quick-dummy.m */; }; + FE67CE5AE4DFFE6B850FA43334EEBDC0 /* QuickObjCRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = 06F15D6FB903738710A127F2E054FE2D /* QuickObjCRuntime.h */; settings = {ATTRIBUTES = (Project, ); }; }; + FEA8C3E9543FB2A316D5A8F89B13D411 /* Quick-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A914861F3637313F6E8D6F682AD1D642 /* Quick-dummy.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 22B40D437883FE1B9221DD9AB31114B5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = A0746DCD7C48E9F6BAB723766294323A; - remoteInfo = Clavier; - }; - 431791C8FE73FC4D64BCB4B3BEA7B5DA /* PBXContainerItemProxy */ = { + 586370206914785CEA07E33B1110EDDE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = C82891EAB7293DBEE916B21F57E8474D; remoteInfo = Quick; }; - 51869FD1E3DCD723A143F71CEE7B2FEA /* PBXContainerItemProxy */ = { + 748614E69E2A7E52EBA4BD858177D47B /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ED7AB6873A9DA430A18E0109776D3707; remoteInfo = Builder; }; - 77229856FD25DC45E25D88D4F6A721C1 /* PBXContainerItemProxy */ = { + 7AE33DC03BC1FB2D2A1DEE385B0D9553 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 6F13695E06195A78EA8A95F8C7ED0D2F; - remoteInfo = Nimble; + remoteGlobalIDString = A0746DCD7C48E9F6BAB723766294323A; + remoteInfo = Clavier; }; - 7B992F08DD4FAE8AC81EC7A03EA5639E /* PBXContainerItemProxy */ = { + 7AEE7661B2AFD412596B7AF16AFB0406 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6A3AC2D6739DCB3DEBEB81CF81B207F2; remoteInfo = Draftsman; }; - D85EF329E45D0FC3C5C6D975B7C2478B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 377352EA226808E63CAAC3307066E129; - remoteInfo = "Pods-Draftsman_Example"; - }; - F90E5BE4744AF0546705394F60B3BC75 /* PBXContainerItemProxy */ = { + 8C284B2D17C51272C70927EE0ED98445 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = A0746DCD7C48E9F6BAB723766294323A; remoteInfo = Clavier; }; - FB2A60EA449D94D480C39682BFE66147 /* PBXContainerItemProxy */ = { + 9A429C918075BE371219A3BCFE83653C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = ED7AB6873A9DA430A18E0109776D3707; remoteInfo = Builder; }; + 9AB3D4142E52E18D54535312C4B765A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 377352EA226808E63CAAC3307066E129; + remoteInfo = "Pods-Draftsman_Example"; + }; + DD40A1289FB5D02B8184464BFBE512DA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6F13695E06195A78EA8A95F8C7ED0D2F; + remoteInfo = Nimble; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00CE82A209E92D81CEEBE3653DD8E869 /* Enumeration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Enumeration.swift; sourceTree = ""; }; - 0355375971B19922AD424D5AAE7B8D07 /* LayoutPlan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutPlan.swift; sourceTree = ""; }; - 059D2C432A7B1564DE32E591EA3F0ED9 /* Quick-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Quick-Info.plist"; sourceTree = ""; }; - 05C60C5E7105FE3BDE8B190837E06605 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; - 06D7901B8C94E043D25E22874321C723 /* LayoutDraft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutDraft.swift; sourceTree = ""; }; - 091FC2292F2DD4C4D1889490697F61F2 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; - 0A23DF5CA64368D5BE8A460A6681F40A /* ConstraintBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConstraintBuilder.swift; sourceTree = ""; }; - 0B287F1DF499FE5AF121456CC48137B3 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; - 0B29F65C512245CAA0A74CB4E5B061A7 /* Draftsman-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Draftsman-prefix.pch"; sourceTree = ""; }; - 0D20B1852CB0F23AF337FABB1043A3CE /* SingleAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SingleAnchor.swift; sourceTree = ""; }; - 0D43D70AC37EC634DBC735BB7C44AB3E /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; + 00A372A8D92CB46FEE8F7398121F970A /* Nimble.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.debug.xcconfig; sourceTree = ""; }; + 02E585D5A62187E9FAAF40290B3EE732 /* SingleAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SingleAnchor.swift; sourceTree = ""; }; + 02EA27FDD0646330C391C8EDE03AADC8 /* PlanComponent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlanComponent.swift; sourceTree = ""; }; + 051942DE705B9C2A627B6BC00EBA302A /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; + 053A50063B540D235EED8C9DD5218DFF /* BuilderConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuilderConfig.swift; path = Builder/Classes/BuilderConfig.swift; sourceTree = ""; }; + 06F15D6FB903738710A127F2E054FE2D /* QuickObjCRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickObjCRuntime.h; path = Sources/QuickObjCRuntime/include/QuickObjCRuntime.h; sourceTree = ""; }; + 075D2D4FB1B531EE083F66D905942859 /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; + 07C1814E351F8573CE38A24CE6661506 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; + 07F79505B93D0DDA3C869224CC1F7999 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; + 092B065179C53555ED9C3AB134242C4A /* LayoutDraft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutDraft.swift; sourceTree = ""; }; + 0BD25752DC4F217BB870A1BF930EBEFC /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; + 0C27E9C4CB1F3760C925F48150B2D179 /* Equal+Tuple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Equal+Tuple.swift"; path = "Sources/Nimble/Matchers/Equal+Tuple.swift"; sourceTree = ""; }; + 0D2BA20E92B64AC49C2BC8FC0CFCEE53 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; 0D5306F8F2ACCA43C0F17B5F26F59CE9 /* Pods-Draftsman_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Draftsman_Example.modulemap"; sourceTree = ""; }; 0D631E9908483F9525A6B3F36F16CC61 /* Quick */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Quick; path = Quick.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0D72D07BB3A415ADBDB8E29E70C814E1 /* Quad.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Quad.swift; sourceTree = ""; }; - 0E08114CE5FD36B041E3BFC4A2599A98 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; - 0EE15AD69F220410947D87E3FEB862F5 /* BeGreaterThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThan.swift; path = Sources/Nimble/Matchers/BeGreaterThan.swift; sourceTree = ""; }; - 0FDFA8E59FDD3C7B46E6533D3C31A56F /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; - 1094264A0E603F3F556F7C891F999D20 /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; - 11293AFCB7A6D96F173081E20E9F9392 /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; - 126B9089E7FB979D193A66DACC63468F /* Builder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Builder-dummy.m"; sourceTree = ""; }; - 12FF88091A80D09D72B2CA105ED609F4 /* Single.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Single.swift; sourceTree = ""; }; - 144172B62E1552AF4262E8B17E5BB9DE /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; - 15BFF333AE527D0EE044C2F62BD0152F /* QuadAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = QuadAnchor.swift; sourceTree = ""; }; - 15D64586C428F87C5552BFB3E69EEF23 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; - 1642E13EB32327ECED1649F242B6765F /* LayoutWithAnchors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutWithAnchors.swift; sourceTree = ""; }; - 1824364AC91FC5A8029997CE91DC1065 /* TriAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriAnchorRelation.swift; sourceTree = ""; }; - 1881B3BC449B5D465B5540A9AC744345 /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; - 19E52FC4EF66F22CEB610760CFC09CAF /* AnchorExtractable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnchorExtractable.swift; sourceTree = ""; }; - 1B5AAC6AB20E3EECDA3AC0E2A21FA009 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; - 1BDB3099CB413ED174E1DCBDA3BBBBED /* AnchorPair.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnchorPair.swift; sourceTree = ""; }; - 1C2B9C3D5F8C2DB13FA4905ADE34AD90 /* PairConstant.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairConstant.swift; sourceTree = ""; }; - 1C3BF63D3E41CF86456A996818DD6EAB /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; + 0DCEC85141E0EBEAD17C913B2E82E4CC /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + 10A9F5E915A51697C4DCEB598D3461FE /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; + 1164DF81BB8EF2D1B255E37284F43B0C /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; + 12822861023E538C04D50C6C8BDCCBE9 /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; + 12BDF9CC38F1EA517129C7FF2FDBFD1E /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; + 12BF0C3F4FC1918F6EEF1B80F1DD81B0 /* Clavier.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Clavier.modulemap; sourceTree = ""; }; + 136605DF24805A81A5D230F255E96A68 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; + 148FDBFAAF3D9A72266639AA12E1E5BC /* Draftsman.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Draftsman.modulemap; sourceTree = ""; }; + 14C797D6635A050893CDACD2BB5FF924 /* SizeAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SizeAnchor.swift; sourceTree = ""; }; + 1534DF0D6E230FE0592B9F448C115AEA /* PairConstant.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairConstant.swift; sourceTree = ""; }; + 15EBF5B7B01179D5CFC209EAFEA80649 /* Axis.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Axis.swift; sourceTree = ""; }; + 1E6B1E310CEDB478179232A32A9A0B19 /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; 1EBF379F44CEE2ED81DC82EB0623A7E4 /* Draftsman */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Draftsman; path = Draftsman.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 209AA9A13B21ED947A35DDF077BDE4C6 /* PlannedDraft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlannedDraft.swift; sourceTree = ""; }; - 20AF5E46E2ABD3532996C3C3EC9F68CB /* Builder.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Builder.release.xcconfig; sourceTree = ""; }; - 21A2245F3628116897867FC47E88245A /* AxisAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AxisAnchor.swift; sourceTree = ""; }; - 226D408F1B7005868922B0401642A1C4 /* LayoutAxisAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutAxisAnchor.swift; sourceTree = ""; }; - 2359F6FB4983D234386FF5CF9F5D1A21 /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; - 23D4A76D9D28E8F6B2A0D0C388EB835A /* Trio.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Trio.swift; sourceTree = ""; }; - 24DB4C93B4E00EAC6BFF478AD19BA355 /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; - 2644FDAE7894C1234E7C99BAAACA9600 /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; - 266AD3AF932FD76CB21C920CF7DE8F91 /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; + 1F9DA76852F6629F18FE6A75552EB07A /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; + 1FB0C169BCC9BB66CD87D49D8AA4E9B5 /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; + 200F0931E608DAAD14E25287B23F77A7 /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; + 232541AE4A488DA8EDDC05D1A671C67B /* Planned.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Planned.swift; sourceTree = ""; }; + 23C1AC171D6E2D79102E4F54BFEEC1A5 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; + 24B661DCCC9A1420E90389B9FB889F9D /* BeIdenticalTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeIdenticalTo.swift; path = Sources/Nimble/Matchers/BeIdenticalTo.swift; sourceTree = ""; }; + 25B77A02422C44546A528353218FB740 /* SafeAreaKeyboardLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SafeAreaKeyboardLayoutGuide.swift; path = Clavier/Classes/SafeAreaKeyboardLayoutGuide.swift; sourceTree = ""; }; + 25FAE002AEC8ED3C0FB76A58263DD7EA /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; 266E45FF02181C3E17719BFE6DD45BCB /* Pods-Draftsman_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Draftsman_Example-umbrella.h"; sourceTree = ""; }; - 29B92E7D05845965CB192986EC512D9E /* SafeAreaKeyboardLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SafeAreaKeyboardLayoutGuide.swift; path = Clavier/Classes/SafeAreaKeyboardLayoutGuide.swift; sourceTree = ""; }; + 26CA6C5D8ACAC762A4784454CBE3B8DD /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; + 29DD43DC3D220E5DF175ED4965939196 /* LayoutPlan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutPlan.swift; sourceTree = ""; }; + 2AEF9F60D2E1E75D852EFE7B9DDD4CD5 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; + 2B0CC151B9BDAA8C7C0B518A0411AD17 /* DimensionAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DimensionAnchorRelation.swift; sourceTree = ""; }; 2C7B6E3D9CE09613FAC95F033B4997EA /* Pods-Draftsman_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Draftsman_Example-acknowledgements.markdown"; sourceTree = ""; }; - 2DA8A1D41AF0C8C7DAD5B91413DBE810 /* Builder-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Builder-umbrella.h"; sourceTree = ""; }; - 2E923831CDD8FD81FFB6305B7B495A98 /* BeResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeResult.swift; path = Sources/Nimble/Matchers/BeResult.swift; sourceTree = ""; }; - 2E9880838EA02E9CAA10EF9415C75888 /* Nimble.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.debug.xcconfig; sourceTree = ""; }; - 31A849766961AACFD1B744E793E8E8BD /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; - 33F2A9FDB4519D7F5975B9608E915824 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + 2DFDE9E54DF85AAD8AD8B12731348073 /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; + 2E126EF608AB51FD83B7EB1FAEEE2121 /* TriAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriAnchor.swift; sourceTree = ""; }; + 2EFDA4E4E119EDB6A1AA972BC84108FA /* ViewPlan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ViewPlan.swift; sourceTree = ""; }; + 2FE19A83D3CC4CB7B5D424E2F0736F78 /* BeEmpty.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeEmpty.swift; path = Sources/Nimble/Matchers/BeEmpty.swift; sourceTree = ""; }; + 30911A4381FDE9AE0410768D050C3936 /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; 344489C6BF3C2588F272C28F21C4FC57 /* Builder */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Builder; path = Builder.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 34902181CE3BA4E9E4634D300DA11E03 /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; - 3542EC029A0EDD48FAAE223074209674 /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; - 35A797049295148A57F44AE580D9E012 /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; - 366AFF3B252CC0AEEAE9F856884335DE /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; - 37A1D21583CD2AB9DB544F099A271D6A /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; - 38271ECA9316028B9D23F41828F63833 /* Async.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Async.swift; path = Sources/Nimble/Matchers/Async.swift; sourceTree = ""; }; + 3594D5F09D8B07D3E4C64961C5DB089D /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; + 35A0D0FE5FEE2544DC41C6FB3D115689 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; + 35BEAD9CA34C6BB41194F41B5C2B6C4E /* PlannedDraft.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlannedDraft.swift; sourceTree = ""; }; + 35EC45A911F8598E9F4DFD17412482E6 /* Draftsman.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Draftsman.release.xcconfig; sourceTree = ""; }; + 37B09B0FF0E5AF75F200A79AB974E698 /* BeVoid.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeVoid.swift; path = Sources/Nimble/Matchers/BeVoid.swift; sourceTree = ""; }; + 381C575112D2C980A51A70E19A561BA3 /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; + 38D0B0C836940546F1BE7D8B0CFA62FD /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; 392B1E9E6DE6BCD5AB96D3524B16F7DF /* Pods-Draftsman_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Draftsman_Example.debug.xcconfig"; sourceTree = ""; }; - 3959849783AF6227D9E4FD353F2F9BAF /* UIKit+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIKit+Extensions.swift"; sourceTree = ""; }; - 3A03A9AC88E2987166E96010D7615269 /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; - 3BACE814300D9AB309C871B5B18AA2EF /* PlanContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlanContext.swift; sourceTree = ""; }; - 3BC8007F0B9DDE49EAFB4C680CC85065 /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; - 3D6123B23635D88CDB88C521EDCB8AD2 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; - 3F03BB6A872AD571DB15352C3634491F /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; - 42DF2D5774CA9CFA50CF76D83F9E36B3 /* PlanComponent.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlanComponent.swift; sourceTree = ""; }; - 4314F07E08914E7CED0FB12153B6831C /* SingleAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SingleAnchorRelation.swift; sourceTree = ""; }; - 45A744AC14E4F12A8725E7D7857DC2E4 /* Clavier.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Clavier.debug.xcconfig; sourceTree = ""; }; - 45A9D495D2D0E1B327D4A03A1AF9304D /* Draftsman-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Draftsman-dummy.m"; sourceTree = ""; }; - 4690550048C2785171CE757C714A3605 /* Draftsman.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Draftsman.debug.xcconfig; sourceTree = ""; }; - 47CC340C91FA937194A04C3D291C242B /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; - 488B32286A6D1A935FF3BBF935A9E87E /* AxisAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AxisAnchorRelation.swift; sourceTree = ""; }; - 495C9BEA61666B97A4864042CD4FE63B /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; - 4A50B32100E34A5B84CA586069B8FC2C /* Draftsman.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Draftsman.modulemap; sourceTree = ""; }; - 4B72AC63A5E53C752B6BA2F217A4DCB9 /* Clavier-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Clavier-prefix.pch"; sourceTree = ""; }; - 4D661C96E009862D312E65EC770ECB8C /* ViewPlanBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ViewPlanBuilder.swift; sourceTree = ""; }; - 4F7EC83A4B202C5BA2F63849B0E1807C /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; - 4F9C29086EC337A7CCF7BCE503D3C190 /* Quick.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Quick.modulemap; sourceTree = ""; }; - 5007070E157ED37D823A960E074F2EB8 /* QCKDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QCKDSL.h; path = Sources/QuickObjectiveC/DSL/QCKDSL.h; sourceTree = ""; }; + 3A6FAAE6BA900D32E73F7EC924D09F16 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; + 3CE52DB83C30C122C64E45E82D122EA1 /* Draftsman-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Draftsman-prefix.pch"; sourceTree = ""; }; + 3E043482EC0C90D23DCE6CB6124D15E1 /* StackCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StackCompatible.swift; sourceTree = ""; }; + 3E68B74DF1D2389F061F16081E84F881 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; + 3F61CF0D63569D01DC5CDF8F39D63A19 /* Builder.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Builder.modulemap; sourceTree = ""; }; + 4018BB59275701BD151973537D29BA6E /* String+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+C99ExtendedIdentifier.swift"; path = "Sources/Quick/String+C99ExtendedIdentifier.swift"; sourceTree = ""; }; + 40A09C982EBAABE7E394C41EC741A9B6 /* Clavier-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Clavier-Info.plist"; sourceTree = ""; }; + 431ED380BFA14D19D1CC116A51D49983 /* Example.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Example.swift; path = Sources/Quick/Example.swift; sourceTree = ""; }; + 43694A63B869AF5F45E2DD1B5F113D2F /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; + 4410D3243C842F664FA8B319ACEE5FD0 /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; + 443801767FE690BB2C7EB8E6CC514E88 /* NSLayoutDimension+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSLayoutDimension+Extensions.swift"; sourceTree = ""; }; + 457A91CC7BDDBC07168C888C1E68305C /* AdapterProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AdapterProtocols.swift; path = Sources/Nimble/Adapters/AdapterProtocols.swift; sourceTree = ""; }; + 4685D938A89D462D41E326D2B7ECE8A7 /* TriAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriAnchorRelation.swift; sourceTree = ""; }; + 4728CB80AB07FAF68F643B0E422CFA49 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE; sourceTree = ""; }; + 47A21F9E484EC88E403714A8AB238275 /* ConstraintBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConstraintBuilder.swift; sourceTree = ""; }; + 492E39F83E770801DB58440F0B50EC97 /* RelationShortcuts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RelationShortcuts.swift; sourceTree = ""; }; + 4C398878D8C636E6FBDD66A8F7206D57 /* AssertionDispatcher.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionDispatcher.swift; path = Sources/Nimble/Adapters/AssertionDispatcher.swift; sourceTree = ""; }; + 4C50D2F95D4F0B0E4ECA490A563A08EF /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; + 4DA4A5EC2E0822C0D48973456089F949 /* Draftsman-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Draftsman-umbrella.h"; sourceTree = ""; }; + 4E858256F02A701F155B94B237C365CF /* UIView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+Extensions.swift"; sourceTree = ""; }; 507BF2337BAAFF260BCDECBB72741CB7 /* Clavier */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Clavier; path = Clavier.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 50A4323F569F72E1A1E042D90A1720EA /* LayoutDraftBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutDraftBuilder.swift; sourceTree = ""; }; - 519B71DB46B7E707A021BEE260FC4648 /* ThrowError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowError.swift; path = Sources/Nimble/Matchers/ThrowError.swift; sourceTree = ""; }; - 51FBAD607B83B8273BA6DA73341FF48B /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; - 546A27B089A774BE91919ED05713CD65 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; - 5719C9D45BB7F2A2FEA1ECD915EBF3AF /* Pair.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Pair.swift; sourceTree = ""; }; - 5815083A8AD5197F471C594EBDEA2837 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; - 5822A067E142C1FC300DB032159AEF92 /* Builder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Builder.swift; path = Builder/Classes/Builder.swift; sourceTree = ""; }; - 59E0F92D5B728AC6B5E5F47DA189EF94 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; - 5BBC786B8929383791A7D1CA2E5C705C /* Quick.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Quick.h; path = Sources/QuickObjectiveC/Quick.h; sourceTree = ""; }; + 5208F25A418D69F6E06D71D73D8DEC69 /* SpacerView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SpacerView.swift; sourceTree = ""; }; + 5311553D90AA5588351B2EEA4A9F6B11 /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; + 559E425C507D5174E083C1DEFC3D86FA /* IdentifiedAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IdentifiedAnchorRelation.swift; sourceTree = ""; }; + 55C42F82B27F3E2E49CFC6941002F201 /* Filter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Filter.swift; path = Sources/Quick/Filter.swift; sourceTree = ""; }; + 57BC9482FB698B286C0977D3625FB1C7 /* PairAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairAnchorRelation.swift; sourceTree = ""; }; + 5A65173AB8545A492E9314AAE48FF038 /* PairAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairAnchor.swift; sourceTree = ""; }; + 5B15D40FC5E703010EB2B545C15F33CE /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickObjCRuntime/include/QuickSpecBase.h; sourceTree = ""; }; 5BC0D0F6F41D47F431F57521ED65DE6F /* Pods-Draftsman_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Draftsman_Example-dummy.m"; sourceTree = ""; }; - 5E33B8E7D670D04FF811678F2002475D /* NimbleEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleEnvironment.swift; path = Sources/Nimble/Adapters/NimbleEnvironment.swift; sourceTree = ""; }; 5EBC8F300895E39EA0DF6D6B2B5E6BCD /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 5EC39B34D59D98FBB2E8E7FC10B70D79 /* UIView+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIView+Extensions.swift"; sourceTree = ""; }; - 605F828315008B857FC312845416BCC1 /* Clavier-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Clavier-umbrella.h"; sourceTree = ""; }; - 606E55C7D4659D3147263FD9E9E9F779 /* Draftsman.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Draftsman.release.xcconfig; sourceTree = ""; }; - 60C4C9120BCBC1C93E1211D34F4F2133 /* Builder-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Builder-Info.plist"; sourceTree = ""; }; - 62B25A9CE7935ECA8EE758637189BEB1 /* Match.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Match.swift; path = Sources/Nimble/Matchers/Match.swift; sourceTree = ""; }; - 652C039BF4C6EC562A5C7B95C9F3945C /* SuiteHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SuiteHooks.swift; path = Sources/Quick/Hooks/SuiteHooks.swift; sourceTree = ""; }; - 66B02421485B2A07BE2A3F701D6539BD /* QuickTestObservation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestObservation.swift; path = Sources/Quick/QuickTestObservation.swift; sourceTree = ""; }; - 66BD87331DD2842F22CA5B50273B15F6 /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; - 6768B889EC549BF0A99CD940CDFA08A7 /* Expression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expression.swift; path = Sources/Nimble/Expression.swift; sourceTree = ""; }; - 676AE36B97B426981432A4B266A54503 /* NSLayoutConstraint+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSLayoutConstraint+Extensions.swift"; sourceTree = ""; }; - 68E9E946FBFC2E79E22202D6D623E920 /* FailureMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FailureMessage.swift; path = Sources/Nimble/FailureMessage.swift; sourceTree = ""; }; - 6C0194D02428AAC7B0B8918D9AE9E55D /* ExampleHooks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleHooks.swift; path = Sources/Quick/Hooks/ExampleHooks.swift; sourceTree = ""; }; - 6C367FFFBEFBC7E1E97FF0DC1ECE4B7B /* DimensionAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DimensionAnchorRelation.swift; sourceTree = ""; }; - 6CE52C0BA45576F31E777A021EB5B5E6 /* PairAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairAnchor.swift; sourceTree = ""; }; + 60BCE8590B988E71894E4D7989749C18 /* Builder.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Builder.release.xcconfig; sourceTree = ""; }; + 61F732448EADF3D6B9F2F90014640856 /* ScrollableStackView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ScrollableStackView.swift; sourceTree = ""; }; + 65E6DD89D720F423FEA9C3E5817BBA78 /* ConstraintBuilderRootRecoverable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConstraintBuilderRootRecoverable.swift; sourceTree = ""; }; + 66043F8E8A1F2E882412029A18F7BFAE /* BeginWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWith.swift; path = Sources/Nimble/Matchers/BeginWith.swift; sourceTree = ""; }; + 66193B5682C346C6FFBBA53B7E1318E4 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; + 6677C1AC5191A6873A09393290751EAF /* Stringers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Stringers.swift; path = Sources/Nimble/Utils/Stringers.swift; sourceTree = ""; }; + 66A0313396F6ED6C110DF0AAEC7FA379 /* BeWithin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeWithin.swift; path = Sources/Nimble/Matchers/BeWithin.swift; sourceTree = ""; }; + 6781602E964E5B03F8016C3E510DB972 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; + 68F51D672FB1CEB8B320C27E243624F2 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; + 6AA85E7375B4BAE56D97CFE584CB6131 /* AxisAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AxisAnchorRelation.swift; sourceTree = ""; }; + 6AB7FB524CED72E89B9B1C499630B3C7 /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; + 6B111C24AE1DD81E744CEB0050713036 /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; + 6CA6548C5148961A178CB16F154A12CB /* Builder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Builder-prefix.pch"; sourceTree = ""; }; 6E650A4BFC638FB98BAEBD0BBBAC374B /* Pods-Draftsman_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Draftsman_Tests-acknowledgements.markdown"; sourceTree = ""; }; - 6FFE85FF13A121A8C1B2F629A373AC9D /* NSLayoutDimension+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSLayoutDimension+Extensions.swift"; sourceTree = ""; }; - 70098828B0179336DE95988CDA2EF42E /* XCTestObservationCenter+Register.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestObservationCenter+Register.m"; path = "Sources/NimbleObjectiveC/XCTestObservationCenter+Register.m"; sourceTree = ""; }; - 7338346328E4AB8300942D6E /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Extensions.swift"; sourceTree = ""; }; - 74E906447EE49643013413EA4303EFD4 /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; - 75D02A8262EC4C4C5B11172BD0C4668A /* NMBExceptionCapture.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBExceptionCapture.m; path = Sources/NimbleObjectiveC/NMBExceptionCapture.m; sourceTree = ""; }; - 77B42A32E91E4CA01BA0031FE3180024 /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; - 79EE9A33F417D734512A91F29CB3D79A /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; - 7AA51D737D79C6350FCB3C2B044A9176 /* Equal+Tuple.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Equal+Tuple.swift"; path = "Sources/Nimble/Matchers/Equal+Tuple.swift"; sourceTree = ""; }; - 7D25B4F3E3629387CA363FCF42012A3B /* DimensionAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DimensionAnchor.swift; sourceTree = ""; }; - 7E48511FE1C8A618EF30102A166E6D2D /* Quick.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.debug.xcconfig; sourceTree = ""; }; - 80D27C80B55B01693AAE179933CFFAF7 /* Clavier.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Clavier.release.xcconfig; sourceTree = ""; }; + 6F48A451A911C19B8010050F78D8E623 /* ClavierLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClavierLayoutGuide.swift; path = Clavier/Classes/ClavierLayoutGuide.swift; sourceTree = ""; }; + 71D90F98116E28683C388103A5B89671 /* Nimble.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.release.xcconfig; sourceTree = ""; }; + 71DDF4B53E8861E1A5C962C5376D06DB /* DSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DSL.h; path = Sources/NimbleObjectiveC/DSL.h; sourceTree = ""; }; + 725739EC140C0ABED654298B0E4E0F66 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; + 73C43C7286C3733B734ECAF13122CB0C /* Draftsman-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Draftsman-Info.plist"; sourceTree = ""; }; + 7682F461F8C87D71C88CF1A1EE04ABDC /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; + 7AD9EED292C49CCF3DF63292FC710C9F /* SizeAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SizeAnchorRelation.swift; sourceTree = ""; }; + 7BBC9F77F41C326B6FE4069670A0ABE1 /* Dimension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Dimension.swift; sourceTree = ""; }; + 7D10E7817ABE7877EF5E7A1546E78672 /* LayoutWithAnchors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutWithAnchors.swift; sourceTree = ""; }; + 7D2C1FD621B1096DC785D647325AFB0F /* NMBStringify.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NMBStringify.m; path = Sources/NimbleObjectiveC/NMBStringify.m; sourceTree = ""; }; + 7DF72507FDED1D85DB5943605E70CDFF /* Array+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "Array+Extensions.swift"; sourceTree = ""; }; + 7E180D18EE24C1427835F1E0A883102B /* PrioritizedAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PrioritizedAnchorRelation.swift; sourceTree = ""; }; + 7EAA0CAA39BDBE100E174DA290454D4A /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; + 7FFB8AAEBD26D19B8E0F163D8A7B2036 /* ElementsEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementsEqual.swift; path = Sources/Nimble/Matchers/ElementsEqual.swift; sourceTree = ""; }; + 818208405E0D69D20F7F07BDD02AFA3E /* Builder-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Builder-dummy.m"; sourceTree = ""; }; 81A79BC0C303F28405284C85CB368842 /* Pods-Draftsman_Example-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Draftsman_Example-Info.plist"; sourceTree = ""; }; - 82AD676FD9C6172A4028E4335BFDCEA8 /* PairAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PairAnchorRelation.swift; sourceTree = ""; }; - 8312E044EEEA8B2004A8EDFCA219E66A /* Draftsman-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Draftsman-umbrella.h"; sourceTree = ""; }; - 8728E3D539C88FCA2BAD61A10B7B59C6 /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; - 8796F8A403EB86A1AEE934BC1793F74D /* LayoutAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutAnchor.swift; sourceTree = ""; }; - 8C2B7270E97A2A4CB55ACD88F816D8FB /* ElementsEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ElementsEqual.swift; path = Sources/Nimble/Matchers/ElementsEqual.swift; sourceTree = ""; }; - 8D1F60C06278B1E78298931995EE0A2D /* Dimension.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Dimension.swift; sourceTree = ""; }; - 8E01E8899530CB81E10C0BCD3B957CF6 /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; - 8E3E7A29DE5CCE3FF88210EAE25B0107 /* World+DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "World+DSL.swift"; path = "Sources/Quick/DSL/World+DSL.swift"; sourceTree = ""; }; - 8EAE7D5466706143DD7A012BCF676138 /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; - 8FB41AADC12AA62150BA396F18525D84 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; - 91BC1963DB2C51BC8DAF72E13B12E10F /* PrioritizedAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PrioritizedAnchorRelation.swift; sourceTree = ""; }; - 9276C09E8026AF54FA84F6CD5E9BEA76 /* QCKConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QCKConfiguration.swift; path = Sources/Quick/Configuration/QCKConfiguration.swift; sourceTree = ""; }; - 92C198821CF9D261F64DA88A8B023E20 /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; - 937E7B2D19DA7E8586C76CE95B051B02 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; + 82098EC180862D963A86CF80F507E0E6 /* PostNotification.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PostNotification.swift; path = Sources/Nimble/Matchers/PostNotification.swift; sourceTree = ""; }; + 840402D6282EDA6DBC00987084E13C46 /* URL+FileName.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+FileName.swift"; path = "Sources/Quick/URL+FileName.swift"; sourceTree = ""; }; + 8480E62177953E5DBE9BD11970F4D7AB /* LayoutAxisAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutAxisAnchor.swift; sourceTree = ""; }; + 8503BC4E9FD68E4EB4C50CF9479E0D02 /* Pair.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Pair.swift; sourceTree = ""; }; + 854B73FB9B6DD87E2146E00A4E86E5AA /* UIKit+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIKit+Extensions.swift"; sourceTree = ""; }; + 8911933CA5DF20202716D24742763FAC /* Closures.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Closures.swift; path = Sources/Quick/Hooks/Closures.swift; sourceTree = ""; }; + 89ABDEC6A3645C5FE3BE9E3AE1E00E4F /* NSBundle+CurrentTestBundle.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "NSBundle+CurrentTestBundle.swift"; path = "Sources/Quick/NSBundle+CurrentTestBundle.swift"; sourceTree = ""; }; + 8AA4EAB690407F8D6E6363EB879D7A3C /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; + 8AA8366AF94393307C65D84C2AD38109 /* Clavier-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Clavier-dummy.m"; sourceTree = ""; }; + 8C992FDC330FD22650A6CA9801E4B049 /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; + 8CE723DD5D2077D2F2D939774AC11A34 /* Clavier.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Clavier.release.xcconfig; sourceTree = ""; }; + 8E5ABA7D526D1CA03C4262E097E3E8E5 /* DimensionAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DimensionAnchor.swift; sourceTree = ""; }; + 91BD0FFE708A2C526DD7AAFAE27DB14F /* Await.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Await.swift; path = Sources/Nimble/Utils/Await.swift; sourceTree = ""; }; + 928A2B838F2BB77FCDD4007C91279353 /* Quick.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.release.xcconfig; sourceTree = ""; }; + 9319AC4BF57CCC257E0B5E1588864CE3 /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; 938B84BD6731645B7BB0C37D0371B322 /* Pods-Draftsman_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Draftsman_Tests.modulemap"; sourceTree = ""; }; - 9518D5B285C0873FABBF788F3E7E3B2C /* BeWithin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeWithin.swift; path = Sources/Nimble/Matchers/BeWithin.swift; sourceTree = ""; }; - 9586538E253E06D7340695C237221791 /* Nimble-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Nimble-Info.plist"; sourceTree = ""; }; - 9AFB0ED7F420434BB3BCD4634CE4A451 /* Equal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Equal.swift; path = Sources/Nimble/Matchers/Equal.swift; sourceTree = ""; }; - 9B631D0264D06FC5C81198AFC878A164 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; - 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DF40AD5CE30D9B09A9A974E2881F6FF /* HooksPhase.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HooksPhase.swift; path = Sources/Quick/Hooks/HooksPhase.swift; sourceTree = ""; }; - 9E6619969CC9E3F112A2B9D3A006E190 /* Axis.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Axis.swift; sourceTree = ""; }; - A27FBD2F932AE12AD8AC13B164D19C2B /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; - A384AE9469CEAAF94260C5BC06F5BD9A /* World.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = World.swift; path = Sources/Quick/World.swift; sourceTree = ""; }; - A389B5FC4AB4C0A7B14CA19938074DB1 /* NMBExpectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NMBExpectation.swift; path = Sources/Nimble/Adapters/NMBExpectation.swift; sourceTree = ""; }; - A413122069A59A3679A95639585169D9 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; - A5908237492DD75A4AAF05BC22F8AA54 /* QuickSelectedTestSuiteBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickSelectedTestSuiteBuilder.swift; path = Sources/Quick/QuickSelectedTestSuiteBuilder.swift; sourceTree = ""; }; - A7033E80BAA270169AF0A3E6AAC382DF /* BuilderConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BuilderConfig.swift; path = Builder/Classes/BuilderConfig.swift; sourceTree = ""; }; - A7F8095E4CFE31B0B3AE18CD9D934C94 /* NMBStringify.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBStringify.h; path = Sources/NimbleObjectiveC/NMBStringify.h; sourceTree = ""; }; + 93EE8D87901E3F3A46AF2BDDAFFE34E7 /* Clavier.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Clavier.debug.xcconfig; sourceTree = ""; }; + 944A04A4BE75CF2ADAE59870D3BE9DCC /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickObjCRuntime/QuickSpecBase.m; sourceTree = ""; }; + 95F9E029DC912742DE93FC2A3E6A2197 /* CwlMachBadInstructionHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlMachBadInstructionHandler.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/include/CwlMachBadInstructionHandler.h; sourceTree = ""; }; + 96DA07DEFC54EBBFD8B02F5B54DD3AA7 /* LayoutDraftBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutDraftBuilder.swift; sourceTree = ""; }; + 9700F2C9E09EEB13F94EBAAE4D2148D3 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Clavier/Classes/Extensions.swift; sourceTree = ""; }; + 97CCAAD4AD2A29053F844CD1D9DF0BCE /* Builder.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Builder.debug.xcconfig; sourceTree = ""; }; + 98432718D9B2416BF0DF0A39DB58C4CA /* Builder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Builder.swift; path = Builder/Classes/Builder.swift; sourceTree = ""; }; + 9889D9E1CC9EDDA0D7728C0590858FBA /* Callsite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Callsite.swift; path = Sources/Quick/Callsite.swift; sourceTree = ""; }; + 98C35911F00ED77FE043DCF4418BF41D /* BeResult.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeResult.swift; path = Sources/Nimble/Matchers/BeResult.swift; sourceTree = ""; }; + 996E26B4E82E7723430DD570F4BFF406 /* Draftsman.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Draftsman.debug.xcconfig; sourceTree = ""; }; + 9C0B07D720F9ACDCC4DA506EADF16EBE /* Quick.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.debug.xcconfig; sourceTree = ""; }; + 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9E8ACD202F4C7691BEA8BE3701654A4C /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; + 9F5CC8CDD4398BC26325E91061DC1824 /* Quad.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Quad.swift; sourceTree = ""; }; + 9FBE658E2D3137F4ED1277E9273FECCA /* Protocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Protocols.swift; path = Builder/Classes/Protocols.swift; sourceTree = ""; }; + A10BCA10C30356AB7021935731FD2700 /* QuickTestObservation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestObservation.swift; path = Sources/Quick/QuickTestObservation.swift; sourceTree = ""; }; + A2E8249B5A2384FB931142268AE36B7C /* Errors.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Errors.swift; path = Sources/Nimble/Utils/Errors.swift; sourceTree = ""; }; + A30190A7E6D07416BE4201D6C9CC9B33 /* Quick-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-prefix.pch"; sourceTree = ""; }; + A45FF9C479C34F890682324EF33E0574 /* DispatchTimeInterval.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DispatchTimeInterval.swift; path = Sources/Nimble/Utils/DispatchTimeInterval.swift; sourceTree = ""; }; + A57D2A38430102E2E01F4D94C8E90DEB /* ViewPlanBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ViewPlanBuilder.swift; sourceTree = ""; }; + A6FB7736E63EF707B4C6AEF8CEE8D869 /* SatisfyAllOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAllOf.swift; path = Sources/Nimble/Matchers/SatisfyAllOf.swift; sourceTree = ""; }; + A74F9AF5ACD833914BF31A2AF0717275 /* Builder-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Builder-Info.plist"; sourceTree = ""; }; A81CB0FF528B40C1C41407895DB22AA3 /* Pods-Draftsman_Example */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Draftsman_Example"; path = Pods_Draftsman_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A82991E1B5E0E1545425196ED6C34D30 /* Draftsman-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Draftsman-dummy.m"; sourceTree = ""; }; + A879D9A247C44C36A8E6E1AD714B11B6 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; + A901079678A9753FA626807134B14260 /* ClavierGlobalConfig.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClavierGlobalConfig.swift; path = Clavier/Classes/ClavierGlobalConfig.swift; sourceTree = ""; }; + A90E010394157594711180537C5D6FA9 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; + A914861F3637313F6E8D6F682AD1D642 /* Quick-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Quick-dummy.m"; sourceTree = ""; }; + A91844241C59C57940035C56F1054A78 /* HaveCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = HaveCount.swift; path = Sources/Nimble/Matchers/HaveCount.swift; sourceTree = ""; }; A970776AD4703310F70519C3A5DCDC84 /* Pods-Draftsman_Tests */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Draftsman_Tests"; path = Pods_Draftsman_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A9C86D2C525F2D0CED613EC03848418A /* PropertyAssigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PropertyAssigner.swift; path = Builder/Classes/PropertyAssigner.swift; sourceTree = ""; }; + AB73A47DEB73670669DC71DC34FE3452 /* AxisAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AxisAnchor.swift; sourceTree = ""; }; ABD305B2E49C5F3B00829D2389D38661 /* Pods-Draftsman_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Draftsman_Tests.debug.xcconfig"; sourceTree = ""; }; + ABEB036C44441F5BDED5F35B3CD2E4E4 /* SatisfyAnyOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatisfyAnyOf.swift; path = Sources/Nimble/Matchers/SatisfyAnyOf.swift; sourceTree = ""; }; ACDB9764C384ADB584951A756EC77E40 /* Pods-Draftsman_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Draftsman_Tests-dummy.m"; sourceTree = ""; }; - AD8919C540E228CC4B46BBD3090BDFC8 /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; - AE1CE31CC761E2868BDB24F1380A9F34 /* Clavier-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Clavier-dummy.m"; sourceTree = ""; }; - AE65E62F4F0B324337F8B1921C1595A7 /* BeginWithPrefix.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWithPrefix.swift; path = Sources/Nimble/Matchers/BeginWithPrefix.swift; sourceTree = ""; }; - AF791046C5279007C15ECCE0B3924819 /* Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Extensions.swift; path = Clavier/Classes/Extensions.swift; sourceTree = ""; }; + AFA2365646A4A2633F4C69BFCEF3FAD9 /* QuickConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickConfiguration.swift; path = Sources/Quick/Configuration/QuickConfiguration.swift; sourceTree = ""; }; + B025735755340D5E8F8F054D20BDECA8 /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; + B0486A3491001C6741CC5989579AD768 /* Clavier-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Clavier-umbrella.h"; sourceTree = ""; }; B1411192B1BA63B5427B752E470284A0 /* Pods-Draftsman_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Draftsman_Tests-acknowledgements.plist"; sourceTree = ""; }; - B145B3383384B804A565A14CA30C006E /* ConstraintBuilderRootRecoverable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ConstraintBuilderRootRecoverable.swift; sourceTree = ""; }; - B2ED6F53D3F1EF1A37EC26F27E38663E /* QuickSpecBase.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpecBase.h; path = Sources/QuickObjCRuntime/include/QuickSpecBase.h; sourceTree = ""; }; - B3E9B9456A6BF26CF1C3E401F818A452 /* Builder-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Builder-prefix.pch"; sourceTree = ""; }; B407211DC74AFDCCFE0D7DA7F06562C1 /* Pods-Draftsman_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Draftsman_Tests-umbrella.h"; sourceTree = ""; }; B460F0A785DA5881C3BCC3E878E1EEC7 /* Pods-Draftsman_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Draftsman_Tests.release.xcconfig"; sourceTree = ""; }; - B519FDC682EB81A6C629C61D385C6BFA /* MatcherProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatcherProtocols.swift; path = Sources/Nimble/Matchers/MatcherProtocols.swift; sourceTree = ""; }; - B5936BFEB8DC2AC38554B7A20232CC77 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Nimble/DSL.swift; sourceTree = ""; }; - B78AAB2E23D8635EBF7A34977E948F04 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; - B9F002C190EBCAD58CB5E917D4C27C32 /* NimbleXCTestHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = NimbleXCTestHandler.swift; path = Sources/Nimble/Adapters/NimbleXCTestHandler.swift; sourceTree = ""; }; - BAC30451511BC320B37732CE924D598C /* RaisesException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = RaisesException.swift; path = Sources/Nimble/Matchers/RaisesException.swift; sourceTree = ""; }; + B48C4AAE4A990CD2CEF82D8A9ABDFFAF /* Nimble.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Nimble.h; path = Sources/Nimble/Nimble.h; sourceTree = ""; }; + B6BEDA5F25224D476F8F837726ED4B1C /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; path = README.md; sourceTree = ""; }; + B84DE24A59C1EFD27F1D3AF8E51980D0 /* CwlDarwinDefinitions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlDarwinDefinitions.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlDarwinDefinitions.swift; sourceTree = ""; }; + B9E60B1CC51AE19E6993635FC7504A16 /* SingleAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SingleAnchorRelation.swift; sourceTree = ""; }; BAE263041362D074978BB3B577DF0A05 /* Nimble */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Nimble; path = Nimble.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - BBEBF1AE44F2ECF178DDACB79F29221A /* QuickSpecBase.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpecBase.m; path = Sources/QuickObjCRuntime/QuickSpecBase.m; sourceTree = ""; }; - BEDB15705D77FF9CDE63E9D1D4CDC8F3 /* ViewPlan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ViewPlan.swift; sourceTree = ""; }; - C22150BB1E2B9A297F5BA858F3837753 /* mach_excServer.c */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.c; name = mach_excServer.c; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.c; sourceTree = ""; }; - C3895C1B681E98A656CBB8A2CCA9687B /* QuickConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickConfiguration.swift; path = Sources/Quick/Configuration/QuickConfiguration.swift; sourceTree = ""; }; - C79DC79C82A767B35C765052D1F59EAF /* QuickConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickConfiguration.h; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.h; sourceTree = ""; }; - CA6E84010FD9CAF1D68E94356077EBD2 /* String+C99ExtendedIdentifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "String+C99ExtendedIdentifier.swift"; path = "Sources/Quick/String+C99ExtendedIdentifier.swift"; sourceTree = ""; }; + BC13F0D7FF0DB57133CFEE80204AF7A7 /* BeLessThan.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThan.swift; path = Sources/Nimble/Matchers/BeLessThan.swift; sourceTree = ""; }; + BE1EAD7CA78B6D2CDB9829F2D15FC23D /* ContainerShortcuts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ContainerShortcuts.swift; sourceTree = ""; }; + BFCD437E46CEF3124CF56E3CEDBAC5CA /* BeginWithPrefix.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeginWithPrefix.swift; path = Sources/Nimble/Matchers/BeginWithPrefix.swift; sourceTree = ""; }; + BFF9B793AEB92AED3BAE2B03AA6E57E8 /* TriConstant.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriConstant.swift; sourceTree = ""; }; + C2D8EB015E02BEA7514097862B3B1136 /* AnchorExtractable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnchorExtractable.swift; sourceTree = ""; }; + C47B11874DCB0ACCD44C2F88025FADAD /* Builder-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Builder-umbrella.h"; sourceTree = ""; }; + C56B532FBA17F4099A267EBBB5A9C86E /* Nimble.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Nimble.modulemap; sourceTree = ""; }; + C69E8915052723FE071121F5EF9F171F /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; + C6C068609A8C95F5CDEE405B6B3DD403 /* DSL.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DSL.swift; path = Sources/Quick/DSL/DSL.swift; sourceTree = ""; }; + C71F0244D8F24BD23A3E14DF3589C054 /* BeGreaterThanOrEqualTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeGreaterThanOrEqualTo.swift; path = Sources/Nimble/Matchers/BeGreaterThanOrEqualTo.swift; sourceTree = ""; }; + C72E4E272B3946E44B7A180F4A05FF84 /* LayoutAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = LayoutAnchor.swift; sourceTree = ""; }; + C74ACF5F35EE3F11CF999DF4FDCF3685 /* QuickConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickConfiguration.m; path = Sources/QuickObjectiveC/Configuration/QuickConfiguration.m; sourceTree = ""; }; CA8B94E9D3B433157168D1EECCEC11CD /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - CAE12C71A7FD60CAF9E00366942C6A6C /* Draftsman-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Draftsman-Info.plist"; sourceTree = ""; }; - CC8A686D9F976C6D083ECB101F586379 /* ContainElementSatisfying.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ContainElementSatisfying.swift; path = Sources/Nimble/Matchers/ContainElementSatisfying.swift; sourceTree = ""; }; + CA9FB3A4B1E95498D10920FB9E6F4E24 /* BeCloseTo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeCloseTo.swift; path = Sources/Nimble/Matchers/BeCloseTo.swift; sourceTree = ""; }; + CC18AF20C67479145165261DFC0DE9C9 /* Quick-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Quick-Info.plist"; sourceTree = ""; }; + CED46FB645F326DA746E8FB8F2C51A83 /* Single.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Single.swift; sourceTree = ""; }; CF4DCECCFF94A65847696D7332A6E67C /* Pods-Draftsman_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Draftsman_Example.release.xcconfig"; sourceTree = ""; }; - D0198DA4F840D028F705FBE0868C86AE /* Builder.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Builder.debug.xcconfig; sourceTree = ""; }; - D098AB0DCD749B3D69F2A32B6A80BFB1 /* ClavierLayoutGuide.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ClavierLayoutGuide.swift; path = Clavier/Classes/ClavierLayoutGuide.swift; sourceTree = ""; }; - D1022B135DA060F8E66CC2B1687D47DE /* Clavier-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Clavier-Info.plist"; sourceTree = ""; }; - D15E936B5021051E3A9650D3135514AF /* BeAnInstanceOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAnInstanceOf.swift; path = Sources/Nimble/Matchers/BeAnInstanceOf.swift; sourceTree = ""; }; - D16509A0DDF9C7121EBD25A8E8E0C4E5 /* BeAKindOf.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeAKindOf.swift; path = Sources/Nimble/Matchers/BeAKindOf.swift; sourceTree = ""; }; - D188730DF43EBEE12893C2B74E19EAA5 /* mach_excServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = mach_excServer.h; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/mach_excServer.h; sourceTree = ""; }; - D390F33B0CADBB80543BA85EEC5EA14E /* NMBExceptionCapture.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NMBExceptionCapture.h; path = Sources/NimbleObjectiveC/NMBExceptionCapture.h; sourceTree = ""; }; - D42FE89AD1551F580694CA17D4444A3F /* Clavier.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Clavier.modulemap; sourceTree = ""; }; - D59C90421002B318BBCA522AD8F6D6B6 /* SourceLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SourceLocation.swift; path = Sources/Nimble/Utils/SourceLocation.swift; sourceTree = ""; }; - D59F0078C67398DD898A69650A4D5196 /* Contain.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Contain.swift; path = Sources/Nimble/Matchers/Contain.swift; sourceTree = ""; }; - D62E217A34A0A45D02C42EBF258EA38B /* QuickSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QuickSpec.m; path = Sources/QuickObjectiveC/QuickSpec.m; sourceTree = ""; }; - D7E1ACA5CBD961CF11BBF097CE9BD119 /* SizeAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SizeAnchorRelation.swift; sourceTree = ""; }; - D82D7CBFF61784B3DBFAF1D39CCD070F /* Planned.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Planned.swift; sourceTree = ""; }; - DA5A68442418342B578AA8EBEC651047 /* TriConstant.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriConstant.swift; sourceTree = ""; }; - DB4CE33D530339BEA8FE60F70DA08CF1 /* SizeAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = SizeAnchor.swift; sourceTree = ""; }; - DE0CCF5E1222933D291CD225780A9947 /* ExampleGroup.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleGroup.swift; path = Sources/Quick/ExampleGroup.swift; sourceTree = ""; }; - DFEDE03B7B88A7C56F9013DCA350A7CB /* Builder.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Builder.modulemap; sourceTree = ""; }; - E0A95CBB7822CF12F88E0B85D2CEE4F7 /* Nimble.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Nimble.release.xcconfig; sourceTree = ""; }; + D5420A8B56100A9E8660BB3307C7263B /* BeNil.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeNil.swift; path = Sources/Nimble/Matchers/BeNil.swift; sourceTree = ""; }; + D5C390908ED994749637F51036381865 /* StackedShortcuts.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StackedShortcuts.swift; sourceTree = ""; }; + D8ADCCC3B49EA8ED27A3ED5E32D8D567 /* NSLayoutConstraint+Extensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "NSLayoutConstraint+Extensions.swift"; sourceTree = ""; }; + DB863FAAB3858882D265B7079F88DDCD /* DSL+Wait.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "DSL+Wait.swift"; path = "Sources/Nimble/DSL+Wait.swift"; sourceTree = ""; }; + DD60A02CD420614D0CEFF8C90468E462 /* Nimble-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-prefix.pch"; sourceTree = ""; }; + E0508947DE58BC8F5113292D4B2EEF18 /* Trio.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Trio.swift; sourceTree = ""; }; + E1BC6C8062469442D21D0CDFB833E0AC /* Predicate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Predicate.swift; path = Sources/Nimble/Matchers/Predicate.swift; sourceTree = ""; }; E216894EB8DB222582EDC95D6986512E /* Pods-Draftsman_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Draftsman_Example-acknowledgements.plist"; sourceTree = ""; }; - E26DF00A3B9BA8E2C0705CDF3AB1F7E2 /* Buildable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Buildable.swift; path = Builder/Classes/Buildable.swift; sourceTree = ""; }; - E5FA5D2B0C7DC9D960CB4A12F43F472E /* QuickTestSuite.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QuickTestSuite.swift; path = Sources/Quick/QuickTestSuite.swift; sourceTree = ""; }; - E5FE3D5047301FF4B9CFA37F50CF5114 /* Expectation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Expectation.swift; path = Sources/Nimble/Expectation.swift; sourceTree = ""; }; - E6E43BD0A9EF28E8DE5ED5350DE5C3FF /* ThrowAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ThrowAssertion.swift; path = Sources/Nimble/Matchers/ThrowAssertion.swift; sourceTree = ""; }; - E79F5E7EBE734927B19DC82DB6FFE425 /* Quick-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Quick-umbrella.h"; sourceTree = ""; }; - E7BA9107F8213309BEA92F26E38C5C00 /* BeLogical.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLogical.swift; path = Sources/Nimble/Matchers/BeLogical.swift; sourceTree = ""; }; - E82BF66ED2A1EA2928E3618D5B431FC4 /* ToSucceed.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ToSucceed.swift; path = Sources/Nimble/Matchers/ToSucceed.swift; sourceTree = ""; }; - E87A6FF45B5A9BE7F76413E50802181A /* Quick.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Quick.release.xcconfig; sourceTree = ""; }; - E9593D54E0431775D7D0BE389020D015 /* StackCompatible.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = StackCompatible.swift; sourceTree = ""; }; - E9D6320A3C9DCC8E9E7C2DB6B323D03E /* CwlCatchException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchException.swift; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchException/CwlCatchException.swift; sourceTree = ""; }; - E9F10206C9C87AF0C0C088D981BAC2BF /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; - EA593E422DACD61077EB2D6644130983 /* CwlCatchException.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlCatchException.m; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/CwlCatchException.m; sourceTree = ""; }; - EB68D4883BFEC7184179A0496B7294B5 /* Draftsman.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; path = Draftsman.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - EC33E010E3CBCCF2C4E2262E68D3DDE9 /* QuickSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickSpec.h; path = Sources/QuickObjectiveC/QuickSpec.h; sourceTree = ""; }; - ED612333FB5D094B9E7FE83CE69A5F69 /* DSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DSL.m; path = Sources/NimbleObjectiveC/DSL.m; sourceTree = ""; }; + E3B93B05FBDBEDAB4A5F8A73A1D3B28F /* BeLessThanOrEqual.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = BeLessThanOrEqual.swift; path = Sources/Nimble/Matchers/BeLessThanOrEqual.swift; sourceTree = ""; }; + E457EA3FE18C39CCB11D8A5B258D3AD0 /* CwlBadInstructionException.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlBadInstructionException.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlBadInstructionException.swift; sourceTree = ""; }; + E54675665D3F61FE756524D692AB5186 /* CwlCatchBadInstruction.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CwlCatchBadInstruction.swift; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlPreconditionTesting/CwlCatchBadInstruction.swift; sourceTree = ""; }; + E57A3B8905D2CDCCBE133445F93D336D /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; + E5F1030748CF0F6923BAD7B7EA3EE43A /* PlanContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = PlanContext.swift; sourceTree = ""; }; + E76C49C958561479511E6890CF9A8357 /* QCKConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = QCKConfiguration.swift; path = Sources/Quick/Configuration/QCKConfiguration.swift; sourceTree = ""; }; + E858FF7E8DECE0FF0D08BB064F2E5776 /* MatchError.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = MatchError.swift; path = Sources/Nimble/Matchers/MatchError.swift; sourceTree = ""; }; + E881825DC1AA4BB388B896F4AACAE2AB /* Nimble-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Nimble-dummy.m"; sourceTree = ""; }; + E9D5C65F9A5E3E1FA812290ADF2C8F6A /* AllPass.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AllPass.swift; path = Sources/Nimble/Matchers/AllPass.swift; sourceTree = ""; }; + E9D957DA06EE01DD9523F75BA0B20BC5 /* Draftsman.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = Draftsman.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + EBBF6B10A17BC79EF59D8227F80A2D78 /* ExpectationMessage.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpectationMessage.swift; path = Sources/Nimble/ExpectationMessage.swift; sourceTree = ""; }; + EC97DBCD154BE6DF45682DBEEC3AAAB6 /* ErrorUtility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ErrorUtility.swift; path = Sources/Quick/ErrorUtility.swift; sourceTree = ""; }; ED69D74FFAF9B906AB7F743CB7B11149 /* Pods-Draftsman_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Draftsman_Example-frameworks.sh"; sourceTree = ""; }; - EE89AC7C3CAFD35BA2AA59BE90658128 /* XCTestSuite+QuickTestSuiteBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestSuite+QuickTestSuiteBuilder.m"; path = "Sources/QuickObjectiveC/XCTestSuite+QuickTestSuiteBuilder.m"; sourceTree = ""; }; - EEA688D2A6CFE2E46E886F4D16808ADE /* TriAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = TriAnchor.swift; sourceTree = ""; }; - F2160B0405606708C97F914268A564A5 /* Nimble-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Nimble-umbrella.h"; sourceTree = ""; }; - F4AD561DA06F34461348764A677A97E0 /* QuickObjCRuntime.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = QuickObjCRuntime.h; path = Sources/QuickObjCRuntime/include/QuickObjCRuntime.h; sourceTree = ""; }; + F18356A80DEDA0EF43A437DCE96A4B57 /* ExampleMetadata.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExampleMetadata.swift; path = Sources/Quick/ExampleMetadata.swift; sourceTree = ""; }; + F1DFCC2CC4DA474E9779D62E7B19C910 /* CwlCatchException.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CwlCatchException.h; path = Carthage/Checkouts/CwlCatchException/Sources/CwlCatchExceptionSupport/include/CwlCatchException.h; sourceTree = ""; }; + F319CC74AE742617343D02C99CCE747C /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; + F3C715B5F93D7E6F5461C4DE2075D8CA /* CwlMachBadInstructionHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CwlMachBadInstructionHandler.m; path = Carthage/Checkouts/CwlPreconditionTesting/Sources/CwlMachBadInstructionHandler/CwlMachBadInstructionHandler.m; sourceTree = ""; }; + F3EE9B903CE74515E93607D6AA1338F9 /* PropertyAssigner.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PropertyAssigner.swift; path = Builder/Classes/PropertyAssigner.swift; sourceTree = ""; }; F4FF69633A30CDEB11DD99A670B8905B /* Pods-Draftsman_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Draftsman_Tests-frameworks.sh"; sourceTree = ""; }; - F5840027BA79C06D5DC48EEE5F597DA1 /* EndWith.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = EndWith.swift; path = Sources/Nimble/Matchers/EndWith.swift; sourceTree = ""; }; - F5D1E96AC525E19F0E8CCA1231BEB215 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + F5033CD8EF7BBCA51B61080A98DD16EA /* QuadAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = QuadAnchor.swift; sourceTree = ""; }; + F53E226A7272CBB61E12F82468B1663C /* Behavior.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Behavior.swift; path = Sources/Quick/Behavior.swift; sourceTree = ""; }; F80E795CD881B3FCC9AE8E56FABA8C21 /* Pods-Draftsman_Tests-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Draftsman_Tests-Info.plist"; sourceTree = ""; }; - FB099C376EEE6CF7022946FB5ADFDE94 /* DispatchTimeInterval.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = DispatchTimeInterval.swift; path = Sources/Nimble/Utils/DispatchTimeInterval.swift; sourceTree = ""; }; - FF6C89209D85F08D837B93737D065B2F /* IdentifiedAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = IdentifiedAnchorRelation.swift; sourceTree = ""; }; - FF8DCD168B2BBEB6792BA6211CE9B1A0 /* QuadAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = QuadAnchorRelation.swift; sourceTree = ""; }; + F8A53E3A23E053AD875CCB228AE826D9 /* QuadAnchorRelation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = QuadAnchorRelation.swift; sourceTree = ""; }; + F8E3628E7BBDABB5F94731B7C7ECA61A /* AssertionRecorder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = AssertionRecorder.swift; path = Sources/Nimble/Adapters/AssertionRecorder.swift; sourceTree = ""; }; + F92F525B6EF698E256C600E6E2C45107 /* Enumeration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Enumeration.swift; sourceTree = ""; }; + FC077773F9B8E6BD352609B3BA434DBA /* Clavier-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Clavier-prefix.pch"; sourceTree = ""; }; + FD4E4594EF007A62746511039A980654 /* QCKDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = QCKDSL.m; path = Sources/QuickObjectiveC/DSL/QCKDSL.m; sourceTree = ""; }; + FDA31F8A56AE508DFB1757290743745C /* AnchorPair.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = AnchorPair.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 1B1543001AF01BD73E119813761CFC70 /* Frameworks */ = { + 0F1707DBB8A49F5336AB0DEF9BD4FF49 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 80E6FC4AFD655C09D6FA50396F91E050 /* Foundation.framework in Frameworks */, + 833089DDB7500C135F0173402FC45F09 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -508,20 +520,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 927AB4152E8086F1D395A356C7107276 /* Frameworks */ = { + DA8489B6D5E9C56DC3D6471AE4A67F6D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F3F61F1CD81C56CDB3FC9ED8C84B6331 /* Foundation.framework in Frameworks */, + 604A73AD1D0E82356F2A073C53BC6517 /* Foundation.framework in Frameworks */, + EB892573E1CA332ED26DCC659406E79B /* XCTest.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - DA8489B6D5E9C56DC3D6471AE4A67F6D /* Frameworks */ = { + DCFB081CF50AA20B8DA89CBFBC0A337B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 604A73AD1D0E82356F2A073C53BC6517 /* Foundation.framework in Frameworks */, - EB892573E1CA332ED26DCC659406E79B /* XCTest.framework in Frameworks */, + D8C2F734F892197DCC19A227644E6B95 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -550,6 +562,30 @@ name = Products; sourceTree = ""; }; + 0760DE4462BEC922B72206C8EE3FB987 /* Utilities */ = { + isa = PBXGroup; + children = ( + 47A21F9E484EC88E403714A8AB238275 /* ConstraintBuilder.swift */, + 96DA07DEFC54EBBFD8B02F5B54DD3AA7 /* LayoutDraftBuilder.swift */, + 3E043482EC0C90D23DCE6CB6124D15E1 /* StackCompatible.swift */, + 927449E788D350250DCB9ED8569C98BD /* CustomView */, + D2395F64565B327733E3B9D939BD7607 /* Extensions */, + 9C76A42F738D9EC4D35D97627BF80E32 /* Shortcuts */, + ); + name = Utilities; + path = Draftsman/Classes/Utilities; + sourceTree = ""; + }; + 0967A82EBD7DAA390F1415C7C8AFE0AC /* Pod */ = { + isa = PBXGroup; + children = ( + E9D957DA06EE01DD9523F75BA0B20BC5 /* Draftsman.podspec */, + 4728CB80AB07FAF68F643B0E422CFA49 /* LICENSE */, + B6BEDA5F25224D476F8F837726ED4B1C /* README.md */, + ); + name = Pod; + sourceTree = ""; + }; 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -558,56 +594,33 @@ name = Frameworks; sourceTree = ""; }; - 1BA588FA07C8E2596321C66213DE28D9 /* Quick */ = { + 2502DE7D8593191E2E15AC936B28521C /* Support Files */ = { isa = PBXGroup; children = ( - 35A797049295148A57F44AE580D9E012 /* Behavior.swift */, - 8E01E8899530CB81E10C0BCD3B957CF6 /* Callsite.swift */, - 2644FDAE7894C1234E7C99BAAACA9600 /* Closures.swift */, - 091FC2292F2DD4C4D1889490697F61F2 /* DSL.swift */, - AD8919C540E228CC4B46BBD3090BDFC8 /* ErrorUtility.swift */, - 3D6123B23635D88CDB88C521EDCB8AD2 /* Example.swift */, - DE0CCF5E1222933D291CD225780A9947 /* ExampleGroup.swift */, - 6C0194D02428AAC7B0B8918D9AE9E55D /* ExampleHooks.swift */, - 77B42A32E91E4CA01BA0031FE3180024 /* ExampleMetadata.swift */, - 5815083A8AD5197F471C594EBDEA2837 /* Filter.swift */, - 9DF40AD5CE30D9B09A9A974E2881F6FF /* HooksPhase.swift */, - 3BC8007F0B9DDE49EAFB4C680CC85065 /* NSBundle+CurrentTestBundle.swift */, - 9276C09E8026AF54FA84F6CD5E9BEA76 /* QCKConfiguration.swift */, - 5007070E157ED37D823A960E074F2EB8 /* QCKDSL.h */, - A413122069A59A3679A95639585169D9 /* QCKDSL.m */, - 5BBC786B8929383791A7D1CA2E5C705C /* Quick.h */, - C79DC79C82A767B35C765052D1F59EAF /* QuickConfiguration.h */, - 9B631D0264D06FC5C81198AFC878A164 /* QuickConfiguration.m */, - C3895C1B681E98A656CBB8A2CCA9687B /* QuickConfiguration.swift */, - F4AD561DA06F34461348764A677A97E0 /* QuickObjCRuntime.h */, - A5908237492DD75A4AAF05BC22F8AA54 /* QuickSelectedTestSuiteBuilder.swift */, - EC33E010E3CBCCF2C4E2262E68D3DDE9 /* QuickSpec.h */, - D62E217A34A0A45D02C42EBF258EA38B /* QuickSpec.m */, - B2ED6F53D3F1EF1A37EC26F27E38663E /* QuickSpecBase.h */, - BBEBF1AE44F2ECF178DDACB79F29221A /* QuickSpecBase.m */, - 66B02421485B2A07BE2A3F701D6539BD /* QuickTestObservation.swift */, - E5FA5D2B0C7DC9D960CB4A12F43F472E /* QuickTestSuite.swift */, - CA6E84010FD9CAF1D68E94356077EBD2 /* String+C99ExtendedIdentifier.swift */, - 652C039BF4C6EC562A5C7B95C9F3945C /* SuiteHooks.swift */, - 144172B62E1552AF4262E8B17E5BB9DE /* URL+FileName.swift */, - A384AE9469CEAAF94260C5BC06F5BD9A /* World.swift */, - 8E3E7A29DE5CCE3FF88210EAE25B0107 /* World+DSL.swift */, - EE89AC7C3CAFD35BA2AA59BE90658128 /* XCTestSuite+QuickTestSuiteBuilder.m */, - 88714AE3B15143B24D7D527184A9C166 /* Support Files */, + 3F61CF0D63569D01DC5CDF8F39D63A19 /* Builder.modulemap */, + 818208405E0D69D20F7F07BDD02AFA3E /* Builder-dummy.m */, + A74F9AF5ACD833914BF31A2AF0717275 /* Builder-Info.plist */, + 6CA6548C5148961A178CB16F154A12CB /* Builder-prefix.pch */, + C47B11874DCB0ACCD44C2F88025FADAD /* Builder-umbrella.h */, + 97CCAAD4AD2A29053F844CD1D9DF0BCE /* Builder.debug.xcconfig */, + 60BCE8590B988E71894E4D7989749C18 /* Builder.release.xcconfig */, ); - path = Quick; + name = "Support Files"; + path = "../Target Support Files/Builder"; sourceTree = ""; }; - 3EC93EEDB8B638D15A1893830A54B4B3 /* Clavier */ = { + 29436ED4F1FD8A0D757EFA688C0C3AA5 /* Draftsman */ = { isa = PBXGroup; children = ( - D098AB0DCD749B3D69F2A32B6A80BFB1 /* ClavierLayoutGuide.swift */, - AF791046C5279007C15ECCE0B3924819 /* Extensions.swift */, - 29B92E7D05845965CB192986EC512D9E /* SafeAreaKeyboardLayoutGuide.swift */, - 67C03C24B8081887D2BE365D89FF68AC /* Support Files */, + 5D095B0CF2562E0168B1DD1BF1F3174C /* Anchors */, + A5CEF21164D074473F2353A5C0233610 /* Draft */, + 56CBF2FB07E8E52061DD2B6F44CD1754 /* Model */, + 0967A82EBD7DAA390F1415C7C8AFE0AC /* Pod */, + 6D2533DB42A805A198485ADB1CB70A67 /* Support Files */, + 0760DE4462BEC922B72206C8EE3FB987 /* Utilities */, ); - path = Clavier; + name = Draftsman; + path = ../..; sourceTree = ""; }; 439344A55DDE6A91A3880F98591116C0 /* Targets Support Files */ = { @@ -619,137 +632,58 @@ name = "Targets Support Files"; sourceTree = ""; }; - 43FDDB81EA886F32AD54F8DE9C7FDE02 /* Nimble */ = { - isa = PBXGroup; - children = ( - 3542EC029A0EDD48FAAE223074209674 /* AdapterProtocols.swift */, - 51FBAD607B83B8273BA6DA73341FF48B /* AllPass.swift */, - 1B5AAC6AB20E3EECDA3AC0E2A21FA009 /* AssertionDispatcher.swift */, - 31A849766961AACFD1B744E793E8E8BD /* AssertionRecorder.swift */, - 38271ECA9316028B9D23F41828F63833 /* Async.swift */, - 1094264A0E603F3F556F7C891F999D20 /* Await.swift */, - D16509A0DDF9C7121EBD25A8E8E0C4E5 /* BeAKindOf.swift */, - D15E936B5021051E3A9650D3135514AF /* BeAnInstanceOf.swift */, - B78AAB2E23D8635EBF7A34977E948F04 /* BeCloseTo.swift */, - 33F2A9FDB4519D7F5975B9608E915824 /* BeEmpty.swift */, - 66BD87331DD2842F22CA5B50273B15F6 /* BeginWith.swift */, - AE65E62F4F0B324337F8B1921C1595A7 /* BeginWithPrefix.swift */, - 0EE15AD69F220410947D87E3FEB862F5 /* BeGreaterThan.swift */, - 0B287F1DF499FE5AF121456CC48137B3 /* BeGreaterThanOrEqualTo.swift */, - 266AD3AF932FD76CB21C920CF7DE8F91 /* BeIdenticalTo.swift */, - 37A1D21583CD2AB9DB544F099A271D6A /* BeLessThan.swift */, - 1881B3BC449B5D465B5540A9AC744345 /* BeLessThanOrEqual.swift */, - E7BA9107F8213309BEA92F26E38C5C00 /* BeLogical.swift */, - 11293AFCB7A6D96F173081E20E9F9392 /* BeNil.swift */, - 2E923831CDD8FD81FFB6305B7B495A98 /* BeResult.swift */, - 2359F6FB4983D234386FF5CF9F5D1A21 /* BeVoid.swift */, - 9518D5B285C0873FABBF788F3E7E3B2C /* BeWithin.swift */, - D59F0078C67398DD898A69650A4D5196 /* Contain.swift */, - CC8A686D9F976C6D083ECB101F586379 /* ContainElementSatisfying.swift */, - 05C60C5E7105FE3BDE8B190837E06605 /* CwlBadInstructionException.swift */, - E9F10206C9C87AF0C0C088D981BAC2BF /* CwlCatchBadInstruction.swift */, - 495C9BEA61666B97A4864042CD4FE63B /* CwlCatchException.h */, - EA593E422DACD61077EB2D6644130983 /* CwlCatchException.m */, - E9D6320A3C9DCC8E9E7C2DB6B323D03E /* CwlCatchException.swift */, - 3F03BB6A872AD571DB15352C3634491F /* CwlDarwinDefinitions.swift */, - 15D64586C428F87C5552BFB3E69EEF23 /* CwlMachBadInstructionHandler.h */, - 0FDFA8E59FDD3C7B46E6533D3C31A56F /* CwlMachBadInstructionHandler.m */, - FB099C376EEE6CF7022946FB5ADFDE94 /* DispatchTimeInterval.swift */, - 74E906447EE49643013413EA4303EFD4 /* DSL.h */, - ED612333FB5D094B9E7FE83CE69A5F69 /* DSL.m */, - B5936BFEB8DC2AC38554B7A20232CC77 /* DSL.swift */, - 0D43D70AC37EC634DBC735BB7C44AB3E /* DSL+Wait.swift */, - 8C2B7270E97A2A4CB55ACD88F816D8FB /* ElementsEqual.swift */, - F5840027BA79C06D5DC48EEE5F597DA1 /* EndWith.swift */, - 9AFB0ED7F420434BB3BCD4634CE4A451 /* Equal.swift */, - 7AA51D737D79C6350FCB3C2B044A9176 /* Equal+Tuple.swift */, - 8EAE7D5466706143DD7A012BCF676138 /* Errors.swift */, - E5FE3D5047301FF4B9CFA37F50CF5114 /* Expectation.swift */, - 1C3BF63D3E41CF86456A996818DD6EAB /* ExpectationMessage.swift */, - 6768B889EC549BF0A99CD940CDFA08A7 /* Expression.swift */, - 68E9E946FBFC2E79E22202D6D623E920 /* FailureMessage.swift */, - 79EE9A33F417D734512A91F29CB3D79A /* HaveCount.swift */, - C22150BB1E2B9A297F5BA858F3837753 /* mach_excServer.c */, - D188730DF43EBEE12893C2B74E19EAA5 /* mach_excServer.h */, - 62B25A9CE7935ECA8EE758637189BEB1 /* Match.swift */, - B519FDC682EB81A6C629C61D385C6BFA /* MatcherProtocols.swift */, - 937E7B2D19DA7E8586C76CE95B051B02 /* MatchError.swift */, - 8728E3D539C88FCA2BAD61A10B7B59C6 /* Nimble.h */, - 5E33B8E7D670D04FF811678F2002475D /* NimbleEnvironment.swift */, - B9F002C190EBCAD58CB5E917D4C27C32 /* NimbleXCTestHandler.swift */, - D390F33B0CADBB80543BA85EEC5EA14E /* NMBExceptionCapture.h */, - 75D02A8262EC4C4C5B11172BD0C4668A /* NMBExceptionCapture.m */, - A389B5FC4AB4C0A7B14CA19938074DB1 /* NMBExpectation.swift */, - A7F8095E4CFE31B0B3AE18CD9D934C94 /* NMBStringify.h */, - 24DB4C93B4E00EAC6BFF478AD19BA355 /* NMBStringify.m */, - 59E0F92D5B728AC6B5E5F47DA189EF94 /* PostNotification.swift */, - A27FBD2F932AE12AD8AC13B164D19C2B /* Predicate.swift */, - BAC30451511BC320B37732CE924D598C /* RaisesException.swift */, - 8FB41AADC12AA62150BA396F18525D84 /* SatisfyAllOf.swift */, - 0E08114CE5FD36B041E3BFC4A2599A98 /* SatisfyAnyOf.swift */, - D59C90421002B318BBCA522AD8F6D6B6 /* SourceLocation.swift */, - 34902181CE3BA4E9E4634D300DA11E03 /* Stringers.swift */, - E6E43BD0A9EF28E8DE5ED5350DE5C3FF /* ThrowAssertion.swift */, - 519B71DB46B7E707A021BEE260FC4648 /* ThrowError.swift */, - E82BF66ED2A1EA2928E3618D5B431FC4 /* ToSucceed.swift */, - 70098828B0179336DE95988CDA2EF42E /* XCTestObservationCenter+Register.m */, - A07CBA11BD4C13B9FD021D69BAE1D13D /* Support Files */, - ); - path = Nimble; - sourceTree = ""; - }; - 47BC2752DC3A1A36C433090B4C054C83 /* Support Files */ = { + 53EBE120F96FE7D9EE0ADABDFCFC9B17 /* Base */ = { isa = PBXGroup; children = ( - 4A50B32100E34A5B84CA586069B8FC2C /* Draftsman.modulemap */, - 45A9D495D2D0E1B327D4A03A1AF9304D /* Draftsman-dummy.m */, - CAE12C71A7FD60CAF9E00366942C6A6C /* Draftsman-Info.plist */, - 0B29F65C512245CAA0A74CB4E5B061A7 /* Draftsman-prefix.pch */, - 8312E044EEEA8B2004A8EDFCA219E66A /* Draftsman-umbrella.h */, - 4690550048C2785171CE757C714A3605 /* Draftsman.debug.xcconfig */, - 606E55C7D4659D3147263FD9E9E9F779 /* Draftsman.release.xcconfig */, - ); - name = "Support Files"; - path = "Example/Pods/Target Support Files/Draftsman"; + AB73A47DEB73670669DC71DC34FE3452 /* AxisAnchor.swift */, + 8E5ABA7D526D1CA03C4262E097E3E8E5 /* DimensionAnchor.swift */, + 5A65173AB8545A492E9314AAE48FF038 /* PairAnchor.swift */, + F5033CD8EF7BBCA51B61080A98DD16EA /* QuadAnchor.swift */, + 02E585D5A62187E9FAAF40290B3EE732 /* SingleAnchor.swift */, + 14C797D6635A050893CDACD2BB5FF924 /* SizeAnchor.swift */, + 2E126EF608AB51FD83B7EB1FAEEE2121 /* TriAnchor.swift */, + ); + name = Base; + path = Base; sourceTree = ""; }; - 4FE9BAF9A0C4F8174DA0B6CAC395D2B1 /* Model */ = { + 56CBF2FB07E8E52061DD2B6F44CD1754 /* Model */ = { isa = PBXGroup; children = ( - 1BDB3099CB413ED174E1DCBDA3BBBBED /* AnchorPair.swift */, - 00CE82A209E92D81CEEBE3653DD8E869 /* Enumeration.swift */, - 1C2B9C3D5F8C2DB13FA4905ADE34AD90 /* PairConstant.swift */, - DA5A68442418342B578AA8EBEC651047 /* TriConstant.swift */, + FDA31F8A56AE508DFB1757290743745C /* AnchorPair.swift */, + F92F525B6EF698E256C600E6E2C45107 /* Enumeration.swift */, + 1534DF0D6E230FE0592B9F448C115AEA /* PairConstant.swift */, + BFF9B793AEB92AED3BAE2B03AA6E57E8 /* TriConstant.swift */, ); name = Model; path = Draftsman/Classes/Model; sourceTree = ""; }; - 53021100003B963846D564531F9616D8 /* Pods */ = { + 5D095B0CF2562E0168B1DD1BF1F3174C /* Anchors */ = { isa = PBXGroup; children = ( - E309DE07DB0EF599D54A47D749F1564F /* Builder */, - 3EC93EEDB8B638D15A1893830A54B4B3 /* Clavier */, - 43FDDB81EA886F32AD54F8DE9C7FDE02 /* Nimble */, - 1BA588FA07C8E2596321C66213DE28D9 /* Quick */, + C2D8EB015E02BEA7514097862B3B1136 /* AnchorExtractable.swift */, + 65E6DD89D720F423FEA9C3E5817BBA78 /* ConstraintBuilderRootRecoverable.swift */, + C72E4E272B3946E44B7A180F4A05FF84 /* LayoutAnchor.swift */, + 8480E62177953E5DBE9BD11970F4D7AB /* LayoutAxisAnchor.swift */, + 7D10E7817ABE7877EF5E7A1546E78672 /* LayoutWithAnchors.swift */, + 53EBE120F96FE7D9EE0ADABDFCFC9B17 /* Base */, + 71C559741AB4097753B3CDEFCAA63248 /* Defined */, + D36185D31485DDCBE14EA04776E1BA03 /* Relation */, ); - name = Pods; + name = Anchors; + path = Draftsman/Classes/Anchors; sourceTree = ""; }; - 5B0A25FF7ADA60D110C2DF6FF23DCA3B /* Draft */ = { + 5F643A363CD0C38E15991F3E7A1151F1 /* Pods */ = { isa = PBXGroup; children = ( - 06D7901B8C94E043D25E22874321C723 /* LayoutDraft.swift */, - 0355375971B19922AD424D5AAE7B8D07 /* LayoutPlan.swift */, - 42DF2D5774CA9CFA50CF76D83F9E36B3 /* PlanComponent.swift */, - 3BACE814300D9AB309C871B5B18AA2EF /* PlanContext.swift */, - D82D7CBFF61784B3DBFAF1D39CCD070F /* Planned.swift */, - 209AA9A13B21ED947A35DDF077BDE4C6 /* PlannedDraft.swift */, - BEDB15705D77FF9CDE63E9D1D4CDC8F3 /* ViewPlan.swift */, - 4D661C96E009862D312E65EC770ECB8C /* ViewPlanBuilder.swift */, + B5D272CB85D621873C99CAE41AC0F1C0 /* Builder */, + 7B3220D4C8AF814A0E1A4AD9347649AB /* Clavier */, + C345EBEA6B1398B0A31CAC6B8B55CB1B /* Nimble */, + CFB473169B3AE50FFFEFC604C5E51819 /* Quick */, ); - name = Draft; - path = Draftsman/Classes/Draft; + name = Pods; sourceTree = ""; }; 635B5FF1FFAEB7AFA184BB74476EAC3E /* Pods-Draftsman_Example */ = { @@ -769,108 +703,109 @@ path = "Target Support Files/Pods-Draftsman_Example"; sourceTree = ""; }; - 67C03C24B8081887D2BE365D89FF68AC /* Support Files */ = { + 6D2533DB42A805A198485ADB1CB70A67 /* Support Files */ = { isa = PBXGroup; children = ( - D42FE89AD1551F580694CA17D4444A3F /* Clavier.modulemap */, - AE1CE31CC761E2868BDB24F1380A9F34 /* Clavier-dummy.m */, - D1022B135DA060F8E66CC2B1687D47DE /* Clavier-Info.plist */, - 4B72AC63A5E53C752B6BA2F217A4DCB9 /* Clavier-prefix.pch */, - 605F828315008B857FC312845416BCC1 /* Clavier-umbrella.h */, - 45A744AC14E4F12A8725E7D7857DC2E4 /* Clavier.debug.xcconfig */, - 80D27C80B55B01693AAE179933CFFAF7 /* Clavier.release.xcconfig */, + 148FDBFAAF3D9A72266639AA12E1E5BC /* Draftsman.modulemap */, + A82991E1B5E0E1545425196ED6C34D30 /* Draftsman-dummy.m */, + 73C43C7286C3733B734ECAF13122CB0C /* Draftsman-Info.plist */, + 3CE52DB83C30C122C64E45E82D122EA1 /* Draftsman-prefix.pch */, + 4DA4A5EC2E0822C0D48973456089F949 /* Draftsman-umbrella.h */, + 996E26B4E82E7723430DD570F4BFF406 /* Draftsman.debug.xcconfig */, + 35EC45A911F8598E9F4DFD17412482E6 /* Draftsman.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/Clavier"; + path = "Example/Pods/Target Support Files/Draftsman"; sourceTree = ""; }; - 690598FF37FA93C4D93E420C81688E33 /* Anchors */ = { + 6D44B19E7CC5E448D4A5FBF46600FCFC /* Support Files */ = { isa = PBXGroup; children = ( - 19E52FC4EF66F22CEB610760CFC09CAF /* AnchorExtractable.swift */, - B145B3383384B804A565A14CA30C006E /* ConstraintBuilderRootRecoverable.swift */, - 8796F8A403EB86A1AEE934BC1793F74D /* LayoutAnchor.swift */, - 226D408F1B7005868922B0401642A1C4 /* LayoutAxisAnchor.swift */, - 1642E13EB32327ECED1649F242B6765F /* LayoutWithAnchors.swift */, - B019FF45788B9B1E7B886125F613F13B /* Base */, - 76197990E5156C3CC9A1E7C3F39EF710 /* Defined */, - D59AE8392B35B59D369E4603D7D15EA9 /* Relation */, + 12BF0C3F4FC1918F6EEF1B80F1DD81B0 /* Clavier.modulemap */, + 8AA8366AF94393307C65D84C2AD38109 /* Clavier-dummy.m */, + 40A09C982EBAABE7E394C41EC741A9B6 /* Clavier-Info.plist */, + FC077773F9B8E6BD352609B3BA434DBA /* Clavier-prefix.pch */, + B0486A3491001C6741CC5989579AD768 /* Clavier-umbrella.h */, + 93EE8D87901E3F3A46AF2BDDAFFE34E7 /* Clavier.debug.xcconfig */, + 8CE723DD5D2077D2F2D939774AC11A34 /* Clavier.release.xcconfig */, ); - name = Anchors; - path = Draftsman/Classes/Anchors; + name = "Support Files"; + path = "../Target Support Files/Clavier"; sourceTree = ""; }; - 6DA06DA573695FBBBDCF3BE4A54D4BDE /* Support Files */ = { + 71C559741AB4097753B3CDEFCAA63248 /* Defined */ = { isa = PBXGroup; children = ( - DFEDE03B7B88A7C56F9013DCA350A7CB /* Builder.modulemap */, - 126B9089E7FB979D193A66DACC63468F /* Builder-dummy.m */, - 60C4C9120BCBC1C93E1211D34F4F2133 /* Builder-Info.plist */, - B3E9B9456A6BF26CF1C3E401F818A452 /* Builder-prefix.pch */, - 2DA8A1D41AF0C8C7DAD5B91413DBE810 /* Builder-umbrella.h */, - D0198DA4F840D028F705FBE0868C86AE /* Builder.debug.xcconfig */, - 20AF5E46E2ABD3532996C3C3EC9F68CB /* Builder.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Builder"; + 15EBF5B7B01179D5CFC209EAFEA80649 /* Axis.swift */, + 7BBC9F77F41C326B6FE4069670A0ABE1 /* Dimension.swift */, + 8503BC4E9FD68E4EB4C50CF9479E0D02 /* Pair.swift */, + 9F5CC8CDD4398BC26325E91061DC1824 /* Quad.swift */, + CED46FB645F326DA746E8FB8F2C51A83 /* Single.swift */, + E0508947DE58BC8F5113292D4B2EEF18 /* Trio.swift */, + ); + name = Defined; + path = Defined; sourceTree = ""; }; - 76197990E5156C3CC9A1E7C3F39EF710 /* Defined */ = { + 7B3220D4C8AF814A0E1A4AD9347649AB /* Clavier */ = { isa = PBXGroup; children = ( - 9E6619969CC9E3F112A2B9D3A006E190 /* Axis.swift */, - 8D1F60C06278B1E78298931995EE0A2D /* Dimension.swift */, - 5719C9D45BB7F2A2FEA1ECD915EBF3AF /* Pair.swift */, - 0D72D07BB3A415ADBDB8E29E70C814E1 /* Quad.swift */, - 12FF88091A80D09D72B2CA105ED609F4 /* Single.swift */, - 23D4A76D9D28E8F6B2A0D0C388EB835A /* Trio.swift */, + A901079678A9753FA626807134B14260 /* ClavierGlobalConfig.swift */, + 6F48A451A911C19B8010050F78D8E623 /* ClavierLayoutGuide.swift */, + 9700F2C9E09EEB13F94EBAAE4D2148D3 /* Extensions.swift */, + 25B77A02422C44546A528353218FB740 /* SafeAreaKeyboardLayoutGuide.swift */, + 6D44B19E7CC5E448D4A5FBF46600FCFC /* Support Files */, ); - path = Defined; + name = Clavier; + path = Clavier; sourceTree = ""; }; - 77FDE603AB652EFE84D9CEE29788781B /* Pod */ = { + 7F101844AE02E4B42E93189E44BDEB10 /* Development Pods */ = { isa = PBXGroup; children = ( - EB68D4883BFEC7184179A0496B7294B5 /* Draftsman.podspec */, - 366AFF3B252CC0AEEAE9F856884335DE /* LICENSE */, - F5D1E96AC525E19F0E8CCA1231BEB215 /* README.md */, + 29436ED4F1FD8A0D757EFA688C0C3AA5 /* Draftsman */, ); - name = Pod; + name = "Development Pods"; sourceTree = ""; }; - 7F101844AE02E4B42E93189E44BDEB10 /* Development Pods */ = { + 84F5390C6FCB620D136E755B0D425DAD /* Support Files */ = { isa = PBXGroup; children = ( - B4A19E6E3538B87FBA5188DE5ACCB9B2 /* Draftsman */, + C56B532FBA17F4099A267EBBB5A9C86E /* Nimble.modulemap */, + E881825DC1AA4BB388B896F4AACAE2AB /* Nimble-dummy.m */, + 1FB0C169BCC9BB66CD87D49D8AA4E9B5 /* Nimble-Info.plist */, + DD60A02CD420614D0CEFF8C90468E462 /* Nimble-prefix.pch */, + E57A3B8905D2CDCCBE133445F93D336D /* Nimble-umbrella.h */, + 00A372A8D92CB46FEE8F7398121F970A /* Nimble.debug.xcconfig */, + 71D90F98116E28683C388103A5B89671 /* Nimble.release.xcconfig */, ); - name = "Development Pods"; + name = "Support Files"; + path = "../Target Support Files/Nimble"; sourceTree = ""; }; - 88714AE3B15143B24D7D527184A9C166 /* Support Files */ = { + 888CE149DAAE49ED72EFE2D7F700F49C /* Support Files */ = { isa = PBXGroup; children = ( - 4F9C29086EC337A7CCF7BCE503D3C190 /* Quick.modulemap */, - 92C198821CF9D261F64DA88A8B023E20 /* Quick-dummy.m */, - 059D2C432A7B1564DE32E591EA3F0ED9 /* Quick-Info.plist */, - 3A03A9AC88E2987166E96010D7615269 /* Quick-prefix.pch */, - E79F5E7EBE734927B19DC82DB6FFE425 /* Quick-umbrella.h */, - 7E48511FE1C8A618EF30102A166E6D2D /* Quick.debug.xcconfig */, - E87A6FF45B5A9BE7F76413E50802181A /* Quick.release.xcconfig */, + 1F9DA76852F6629F18FE6A75552EB07A /* Quick.modulemap */, + A914861F3637313F6E8D6F682AD1D642 /* Quick-dummy.m */, + CC18AF20C67479145165261DFC0DE9C9 /* Quick-Info.plist */, + A30190A7E6D07416BE4201D6C9CC9B33 /* Quick-prefix.pch */, + 7EAA0CAA39BDBE100E174DA290454D4A /* Quick-umbrella.h */, + 9C0B07D720F9ACDCC4DA506EADF16EBE /* Quick.debug.xcconfig */, + 928A2B838F2BB77FCDD4007C91279353 /* Quick.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/Quick"; sourceTree = ""; }; - 8E14E41A1055807D9508844E4E5BC978 /* Utilities */ = { + 927449E788D350250DCB9ED8569C98BD /* CustomView */ = { isa = PBXGroup; children = ( - 0A23DF5CA64368D5BE8A460A6681F40A /* ConstraintBuilder.swift */, - 50A4323F569F72E1A1E042D90A1720EA /* LayoutDraftBuilder.swift */, - E9593D54E0431775D7D0BE389020D015 /* StackCompatible.swift */, - EFF665D3BE821809CB949CA840660760 /* Extensions */, + 61F732448EADF3D6B9F2F90014640856 /* ScrollableStackView.swift */, + 5208F25A418D69F6E06D71D73D8DEC69 /* SpacerView.swift */, ); - name = Utilities; - path = Draftsman/Classes/Utilities; + name = CustomView; + path = CustomView; sourceTree = ""; }; 974814B39C0012DECD183BBB91B32103 /* iOS */ = { @@ -882,19 +817,31 @@ name = iOS; sourceTree = ""; }; - A07CBA11BD4C13B9FD021D69BAE1D13D /* Support Files */ = { + 9C76A42F738D9EC4D35D97627BF80E32 /* Shortcuts */ = { isa = PBXGroup; children = ( - 4F7EC83A4B202C5BA2F63849B0E1807C /* Nimble.modulemap */, - 47CC340C91FA937194A04C3D291C242B /* Nimble-dummy.m */, - 9586538E253E06D7340695C237221791 /* Nimble-Info.plist */, - 546A27B089A774BE91919ED05713CD65 /* Nimble-prefix.pch */, - F2160B0405606708C97F914268A564A5 /* Nimble-umbrella.h */, - 2E9880838EA02E9CAA10EF9415C75888 /* Nimble.debug.xcconfig */, - E0A95CBB7822CF12F88E0B85D2CEE4F7 /* Nimble.release.xcconfig */, + BE1EAD7CA78B6D2CDB9829F2D15FC23D /* ContainerShortcuts.swift */, + 492E39F83E770801DB58440F0B50EC97 /* RelationShortcuts.swift */, + D5C390908ED994749637F51036381865 /* StackedShortcuts.swift */, ); - name = "Support Files"; - path = "../Target Support Files/Nimble"; + name = Shortcuts; + path = Shortcuts; + sourceTree = ""; + }; + A5CEF21164D074473F2353A5C0233610 /* Draft */ = { + isa = PBXGroup; + children = ( + 092B065179C53555ED9C3AB134242C4A /* LayoutDraft.swift */, + 29DD43DC3D220E5DF175ED4965939196 /* LayoutPlan.swift */, + 02EA27FDD0646330C391C8EDE03AADC8 /* PlanComponent.swift */, + E5F1030748CF0F6923BAD7B7EA3EE43A /* PlanContext.swift */, + 232541AE4A488DA8EDDC05D1A671C67B /* Planned.swift */, + 35BEAD9CA34C6BB41194F41B5C2B6C4E /* PlannedDraft.swift */, + 2EFDA4E4E119EDB6A1AA972BC84108FA /* ViewPlan.swift */, + A57D2A38430102E2E01F4D94C8E90DEB /* ViewPlanBuilder.swift */, + ); + name = Draft; + path = Draftsman/Classes/Draft; sourceTree = ""; }; ABACAAD674E91A0664B0969E9AD97666 /* Pods-Draftsman_Tests */ = { @@ -914,32 +861,97 @@ path = "Target Support Files/Pods-Draftsman_Tests"; sourceTree = ""; }; - B019FF45788B9B1E7B886125F613F13B /* Base */ = { + B5D272CB85D621873C99CAE41AC0F1C0 /* Builder */ = { isa = PBXGroup; children = ( - 21A2245F3628116897867FC47E88245A /* AxisAnchor.swift */, - 7D25B4F3E3629387CA363FCF42012A3B /* DimensionAnchor.swift */, - 6CE52C0BA45576F31E777A021EB5B5E6 /* PairAnchor.swift */, - 15BFF333AE527D0EE044C2F62BD0152F /* QuadAnchor.swift */, - 0D20B1852CB0F23AF337FABB1043A3CE /* SingleAnchor.swift */, - DB4CE33D530339BEA8FE60F70DA08CF1 /* SizeAnchor.swift */, - EEA688D2A6CFE2E46E886F4D16808ADE /* TriAnchor.swift */, + 98432718D9B2416BF0DF0A39DB58C4CA /* Builder.swift */, + 053A50063B540D235EED8C9DD5218DFF /* BuilderConfig.swift */, + F3EE9B903CE74515E93607D6AA1338F9 /* PropertyAssigner.swift */, + 9FBE658E2D3137F4ED1277E9273FECCA /* Protocols.swift */, + 2502DE7D8593191E2E15AC936B28521C /* Support Files */, ); - path = Base; + name = Builder; + path = Builder; sourceTree = ""; }; - B4A19E6E3538B87FBA5188DE5ACCB9B2 /* Draftsman */ = { + C345EBEA6B1398B0A31CAC6B8B55CB1B /* Nimble */ = { isa = PBXGroup; children = ( - 690598FF37FA93C4D93E420C81688E33 /* Anchors */, - 5B0A25FF7ADA60D110C2DF6FF23DCA3B /* Draft */, - 4FE9BAF9A0C4F8174DA0B6CAC395D2B1 /* Model */, - 77FDE603AB652EFE84D9CEE29788781B /* Pod */, - 47BC2752DC3A1A36C433090B4C054C83 /* Support Files */, - 8E14E41A1055807D9508844E4E5BC978 /* Utilities */, + 457A91CC7BDDBC07168C888C1E68305C /* AdapterProtocols.swift */, + E9D5C65F9A5E3E1FA812290ADF2C8F6A /* AllPass.swift */, + 4C398878D8C636E6FBDD66A8F7206D57 /* AssertionDispatcher.swift */, + F8E3628E7BBDABB5F94731B7C7ECA61A /* AssertionRecorder.swift */, + 23C1AC171D6E2D79102E4F54BFEEC1A5 /* Async.swift */, + 91BD0FFE708A2C526DD7AAFAE27DB14F /* Await.swift */, + A90E010394157594711180537C5D6FA9 /* BeAKindOf.swift */, + 8C992FDC330FD22650A6CA9801E4B049 /* BeAnInstanceOf.swift */, + CA9FB3A4B1E95498D10920FB9E6F4E24 /* BeCloseTo.swift */, + 2FE19A83D3CC4CB7B5D424E2F0736F78 /* BeEmpty.swift */, + 66043F8E8A1F2E882412029A18F7BFAE /* BeginWith.swift */, + BFCD437E46CEF3124CF56E3CEDBAC5CA /* BeginWithPrefix.swift */, + 0D2BA20E92B64AC49C2BC8FC0CFCEE53 /* BeGreaterThan.swift */, + C71F0244D8F24BD23A3E14DF3589C054 /* BeGreaterThanOrEqualTo.swift */, + 24B661DCCC9A1420E90389B9FB889F9D /* BeIdenticalTo.swift */, + BC13F0D7FF0DB57133CFEE80204AF7A7 /* BeLessThan.swift */, + E3B93B05FBDBEDAB4A5F8A73A1D3B28F /* BeLessThanOrEqual.swift */, + 2AEF9F60D2E1E75D852EFE7B9DDD4CD5 /* BeLogical.swift */, + D5420A8B56100A9E8660BB3307C7263B /* BeNil.swift */, + 98C35911F00ED77FE043DCF4418BF41D /* BeResult.swift */, + 37B09B0FF0E5AF75F200A79AB974E698 /* BeVoid.swift */, + 66A0313396F6ED6C110DF0AAEC7FA379 /* BeWithin.swift */, + 9E8ACD202F4C7691BEA8BE3701654A4C /* Contain.swift */, + 6781602E964E5B03F8016C3E510DB972 /* ContainElementSatisfying.swift */, + E457EA3FE18C39CCB11D8A5B258D3AD0 /* CwlBadInstructionException.swift */, + E54675665D3F61FE756524D692AB5186 /* CwlCatchBadInstruction.swift */, + F1DFCC2CC4DA474E9779D62E7B19C910 /* CwlCatchException.h */, + 66193B5682C346C6FFBBA53B7E1318E4 /* CwlCatchException.m */, + B025735755340D5E8F8F054D20BDECA8 /* CwlCatchException.swift */, + B84DE24A59C1EFD27F1D3AF8E51980D0 /* CwlDarwinDefinitions.swift */, + 95F9E029DC912742DE93FC2A3E6A2197 /* CwlMachBadInstructionHandler.h */, + F3C715B5F93D7E6F5461C4DE2075D8CA /* CwlMachBadInstructionHandler.m */, + A45FF9C479C34F890682324EF33E0574 /* DispatchTimeInterval.swift */, + 71DDF4B53E8861E1A5C962C5376D06DB /* DSL.h */, + 0BD25752DC4F217BB870A1BF930EBEFC /* DSL.m */, + 8AA4EAB690407F8D6E6363EB879D7A3C /* DSL.swift */, + DB863FAAB3858882D265B7079F88DDCD /* DSL+Wait.swift */, + 7FFB8AAEBD26D19B8E0F163D8A7B2036 /* ElementsEqual.swift */, + F319CC74AE742617343D02C99CCE747C /* EndWith.swift */, + 4C50D2F95D4F0B0E4ECA490A563A08EF /* Equal.swift */, + 0C27E9C4CB1F3760C925F48150B2D179 /* Equal+Tuple.swift */, + A2E8249B5A2384FB931142268AE36B7C /* Errors.swift */, + C69E8915052723FE071121F5EF9F171F /* Expectation.swift */, + EBBF6B10A17BC79EF59D8227F80A2D78 /* ExpectationMessage.swift */, + 43694A63B869AF5F45E2DD1B5F113D2F /* Expression.swift */, + 136605DF24805A81A5D230F255E96A68 /* FailureMessage.swift */, + A91844241C59C57940035C56F1054A78 /* HaveCount.swift */, + 35A0D0FE5FEE2544DC41C6FB3D115689 /* mach_excServer.c */, + 3A6FAAE6BA900D32E73F7EC924D09F16 /* mach_excServer.h */, + 200F0931E608DAAD14E25287B23F77A7 /* Match.swift */, + 075D2D4FB1B531EE083F66D905942859 /* MatcherProtocols.swift */, + E858FF7E8DECE0FF0D08BB064F2E5776 /* MatchError.swift */, + B48C4AAE4A990CD2CEF82D8A9ABDFFAF /* Nimble.h */, + 5311553D90AA5588351B2EEA4A9F6B11 /* NimbleEnvironment.swift */, + 07C1814E351F8573CE38A24CE6661506 /* NimbleXCTestHandler.swift */, + 26CA6C5D8ACAC762A4784454CBE3B8DD /* NMBExceptionCapture.h */, + 30911A4381FDE9AE0410768D050C3936 /* NMBExceptionCapture.m */, + 4410D3243C842F664FA8B319ACEE5FD0 /* NMBExpectation.swift */, + 0DCEC85141E0EBEAD17C913B2E82E4CC /* NMBStringify.h */, + 7D2C1FD621B1096DC785D647325AFB0F /* NMBStringify.m */, + 82098EC180862D963A86CF80F507E0E6 /* PostNotification.swift */, + E1BC6C8062469442D21D0CDFB833E0AC /* Predicate.swift */, + 7682F461F8C87D71C88CF1A1EE04ABDC /* RaisesException.swift */, + A6FB7736E63EF707B4C6AEF8CEE8D869 /* SatisfyAllOf.swift */, + ABEB036C44441F5BDED5F35B3CD2E4E4 /* SatisfyAnyOf.swift */, + 725739EC140C0ABED654298B0E4E0F66 /* SourceLocation.swift */, + 6677C1AC5191A6873A09393290751EAF /* Stringers.swift */, + 9319AC4BF57CCC257E0B5E1588864CE3 /* ThrowAssertion.swift */, + 1164DF81BB8EF2D1B255E37284F43B0C /* ThrowError.swift */, + 25FAE002AEC8ED3C0FB76A58263DD7EA /* ToSucceed.swift */, + 381C575112D2C980A51A70E19A561BA3 /* XCTestObservationCenter+Register.m */, + 84F5390C6FCB620D136E755B0D425DAD /* Support Files */, ); - name = Draftsman; - path = ../..; + name = Nimble; + path = Nimble; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -948,50 +960,82 @@ 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, 7F101844AE02E4B42E93189E44BDEB10 /* Development Pods */, 1628BF05B4CAFDCC3549A101F5A10A17 /* Frameworks */, - 53021100003B963846D564531F9616D8 /* Pods */, + 5F643A363CD0C38E15991F3E7A1151F1 /* Pods */, 0152E4CB30AD61ADD74BF033D667DF32 /* Products */, 439344A55DDE6A91A3880F98591116C0 /* Targets Support Files */, ); sourceTree = ""; }; - D59AE8392B35B59D369E4603D7D15EA9 /* Relation */ = { + CFB473169B3AE50FFFEFC604C5E51819 /* Quick */ = { isa = PBXGroup; children = ( - 488B32286A6D1A935FF3BBF935A9E87E /* AxisAnchorRelation.swift */, - 6C367FFFBEFBC7E1E97FF0DC1ECE4B7B /* DimensionAnchorRelation.swift */, - FF6C89209D85F08D837B93737D065B2F /* IdentifiedAnchorRelation.swift */, - 82AD676FD9C6172A4028E4335BFDCEA8 /* PairAnchorRelation.swift */, - 91BC1963DB2C51BC8DAF72E13B12E10F /* PrioritizedAnchorRelation.swift */, - FF8DCD168B2BBEB6792BA6211CE9B1A0 /* QuadAnchorRelation.swift */, - 4314F07E08914E7CED0FB12153B6831C /* SingleAnchorRelation.swift */, - D7E1ACA5CBD961CF11BBF097CE9BD119 /* SizeAnchorRelation.swift */, - 1824364AC91FC5A8029997CE91DC1065 /* TriAnchorRelation.swift */, + F53E226A7272CBB61E12F82468B1663C /* Behavior.swift */, + 9889D9E1CC9EDDA0D7728C0590858FBA /* Callsite.swift */, + 8911933CA5DF20202716D24742763FAC /* Closures.swift */, + C6C068609A8C95F5CDEE405B6B3DD403 /* DSL.swift */, + EC97DBCD154BE6DF45682DBEEC3AAAB6 /* ErrorUtility.swift */, + 431ED380BFA14D19D1CC116A51D49983 /* Example.swift */, + 3594D5F09D8B07D3E4C64961C5DB089D /* ExampleGroup.swift */, + 1E6B1E310CEDB478179232A32A9A0B19 /* ExampleHooks.swift */, + F18356A80DEDA0EF43A437DCE96A4B57 /* ExampleMetadata.swift */, + 55C42F82B27F3E2E49CFC6941002F201 /* Filter.swift */, + 38D0B0C836940546F1BE7D8B0CFA62FD /* HooksPhase.swift */, + 89ABDEC6A3645C5FE3BE9E3AE1E00E4F /* NSBundle+CurrentTestBundle.swift */, + E76C49C958561479511E6890CF9A8357 /* QCKConfiguration.swift */, + 07F79505B93D0DDA3C869224CC1F7999 /* QCKDSL.h */, + FD4E4594EF007A62746511039A980654 /* QCKDSL.m */, + 12BDF9CC38F1EA517129C7FF2FDBFD1E /* Quick.h */, + 2DFDE9E54DF85AAD8AD8B12731348073 /* QuickConfiguration.h */, + C74ACF5F35EE3F11CF999DF4FDCF3685 /* QuickConfiguration.m */, + AFA2365646A4A2633F4C69BFCEF3FAD9 /* QuickConfiguration.swift */, + 06F15D6FB903738710A127F2E054FE2D /* QuickObjCRuntime.h */, + 051942DE705B9C2A627B6BC00EBA302A /* QuickSelectedTestSuiteBuilder.swift */, + 3E68B74DF1D2389F061F16081E84F881 /* QuickSpec.h */, + 6AB7FB524CED72E89B9B1C499630B3C7 /* QuickSpec.m */, + 5B15D40FC5E703010EB2B545C15F33CE /* QuickSpecBase.h */, + 944A04A4BE75CF2ADAE59870D3BE9DCC /* QuickSpecBase.m */, + A10BCA10C30356AB7021935731FD2700 /* QuickTestObservation.swift */, + 12822861023E538C04D50C6C8BDCCBE9 /* QuickTestSuite.swift */, + 4018BB59275701BD151973537D29BA6E /* String+C99ExtendedIdentifier.swift */, + 10A9F5E915A51697C4DCEB598D3461FE /* SuiteHooks.swift */, + 840402D6282EDA6DBC00987084E13C46 /* URL+FileName.swift */, + 6B111C24AE1DD81E744CEB0050713036 /* World.swift */, + 68F51D672FB1CEB8B320C27E243624F2 /* World+DSL.swift */, + A879D9A247C44C36A8E6E1AD714B11B6 /* XCTestSuite+QuickTestSuiteBuilder.m */, + 888CE149DAAE49ED72EFE2D7F700F49C /* Support Files */, ); - path = Relation; + name = Quick; + path = Quick; sourceTree = ""; }; - E309DE07DB0EF599D54A47D749F1564F /* Builder */ = { + D2395F64565B327733E3B9D939BD7607 /* Extensions */ = { isa = PBXGroup; children = ( - E26DF00A3B9BA8E2C0705CDF3AB1F7E2 /* Buildable.swift */, - 5822A067E142C1FC300DB032159AEF92 /* Builder.swift */, - A7033E80BAA270169AF0A3E6AAC382DF /* BuilderConfig.swift */, - A9C86D2C525F2D0CED613EC03848418A /* PropertyAssigner.swift */, - 6DA06DA573695FBBBDCF3BE4A54D4BDE /* Support Files */, + 7DF72507FDED1D85DB5943605E70CDFF /* Array+Extensions.swift */, + D8ADCCC3B49EA8ED27A3ED5E32D8D567 /* NSLayoutConstraint+Extensions.swift */, + 443801767FE690BB2C7EB8E6CC514E88 /* NSLayoutDimension+Extensions.swift */, + 854B73FB9B6DD87E2146E00A4E86E5AA /* UIKit+Extensions.swift */, + 4E858256F02A701F155B94B237C365CF /* UIView+Extensions.swift */, ); - path = Builder; + name = Extensions; + path = Extensions; sourceTree = ""; }; - EFF665D3BE821809CB949CA840660760 /* Extensions */ = { + D36185D31485DDCBE14EA04776E1BA03 /* Relation */ = { isa = PBXGroup; children = ( - 7338346328E4AB8300942D6E /* Array+Extensions.swift */, - 676AE36B97B426981432A4B266A54503 /* NSLayoutConstraint+Extensions.swift */, - 6FFE85FF13A121A8C1B2F629A373AC9D /* NSLayoutDimension+Extensions.swift */, - 3959849783AF6227D9E4FD353F2F9BAF /* UIKit+Extensions.swift */, - 5EC39B34D59D98FBB2E8E7FC10B70D79 /* UIView+Extensions.swift */, - ); - path = Extensions; + 6AA85E7375B4BAE56D97CFE584CB6131 /* AxisAnchorRelation.swift */, + 2B0CC151B9BDAA8C7C0B518A0411AD17 /* DimensionAnchorRelation.swift */, + 559E425C507D5174E083C1DEFC3D86FA /* IdentifiedAnchorRelation.swift */, + 57BC9482FB698B286C0977D3625FB1C7 /* PairAnchorRelation.swift */, + 7E180D18EE24C1427835F1E0A883102B /* PrioritizedAnchorRelation.swift */, + F8A53E3A23E053AD875CCB228AE826D9 /* QuadAnchorRelation.swift */, + B9E60B1CC51AE19E6993635FC7504A16 /* SingleAnchorRelation.swift */, + 7AD9EED292C49CCF3DF63292FC710C9F /* SizeAnchorRelation.swift */, + 4685D938A89D462D41E326D2B7ECE8A7 /* TriAnchorRelation.swift */, + ); + name = Relation; + path = Relation; sourceTree = ""; }; /* End PBXGroup section */ @@ -1005,14 +1049,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 10CDEEC1DFA20133CE1E22A1758DD7DE /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2219D2D18E60D9FB88BA4D084BCA57AF /* Clavier-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 18D7608DAAA952B7AE8ACBE6D37E79A0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -1036,11 +1072,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4A27F63BE7F7471FB69047DEB81B1D5A /* Headers */ = { + 3E33E01713BA31C49C71DDD22E6C5F46 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 00706321B53272923ABB244D3F319E0D /* Draftsman-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9CFB4C971A9497A363FBF77EE1ADF7F1 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 99F9F089E9D10A428679A128E9532366 /* Draftsman-umbrella.h in Headers */, + 7CB1E45F851CE029B9BE62978AC6F3B7 /* Clavier-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1081,9 +1125,9 @@ buildRules = ( ); dependencies = ( - 7B5B2D494D319EA4817316031ED7E9A4 /* PBXTargetDependency */, - 66B3972E40A426101722A31B6A424784 /* PBXTargetDependency */, - 465E744C1C48666E9F97985E2C0C8B89 /* PBXTargetDependency */, + AD1A9C169107F1DB876357C8FA7B4A92 /* PBXTargetDependency */, + EF9EA9AE90F62AF7FB2C7B87055A520A /* PBXTargetDependency */, + 759E6FA7AAD6D0DD91396D927EF08A46 /* PBXTargetDependency */, ); name = "Pods-Draftsman_Example"; productName = Pods_Draftsman_Example; @@ -1102,9 +1146,9 @@ buildRules = ( ); dependencies = ( - EAB2EBE824F632E9648DABEE05C258F7 /* PBXTargetDependency */, - 8C42D75E9192557989074080F4881180 /* PBXTargetDependency */, - 267880FBFAC9274E3A8C4892616208AC /* PBXTargetDependency */, + DEBD9E2FB4ECDD5E06EC31D4614CC4A7 /* PBXTargetDependency */, + C5F1CB56E680CDEF77F35BF31714470B /* PBXTargetDependency */, + 8F911BBF95C7B436F26E747DFF6D2740 /* PBXTargetDependency */, ); name = "Pods-Draftsman_Tests"; productName = Pods_Draftsman_Tests; @@ -1113,18 +1157,18 @@ }; 6A3AC2D6739DCB3DEBEB81CF81B207F2 /* Draftsman */ = { isa = PBXNativeTarget; - buildConfigurationList = CBACDDA535B46082000731FE853DAC03 /* Build configuration list for PBXNativeTarget "Draftsman" */; + buildConfigurationList = 3BA5963DCDEEECC39069627D199FA046 /* Build configuration list for PBXNativeTarget "Draftsman" */; buildPhases = ( - 4A27F63BE7F7471FB69047DEB81B1D5A /* Headers */, - 4970B250CE577AE15F7E1BA7F9D74E07 /* Sources */, - 927AB4152E8086F1D395A356C7107276 /* Frameworks */, - 71417AF05ADC048680EC070AD54395D5 /* Resources */, + 3E33E01713BA31C49C71DDD22E6C5F46 /* Headers */, + 41D6FE3CFF8577A1F5B864A10EC997F7 /* Sources */, + 0F1707DBB8A49F5336AB0DEF9BD4FF49 /* Frameworks */, + 1DD6016A3ACC70756DC9008DB06D92AE /* Resources */, ); buildRules = ( ); dependencies = ( - B2A7C9B22F44E6D25F45A345611CA5C1 /* PBXTargetDependency */, - 3BDCF8FE18DD87F7F9BC4FAAF3C37D0E /* PBXTargetDependency */, + EF4560BE4E66C54F903C53F0C41143EE /* PBXTargetDependency */, + AFBDC24132ED01C98C303C0B7BF756BF /* PBXTargetDependency */, ); name = Draftsman; productName = Draftsman; @@ -1151,12 +1195,12 @@ }; A0746DCD7C48E9F6BAB723766294323A /* Clavier */ = { isa = PBXNativeTarget; - buildConfigurationList = E2FD60FE9EDBD632725DB0B417A9B342 /* Build configuration list for PBXNativeTarget "Clavier" */; + buildConfigurationList = 5BA0953A73FC9A4A0996566E031D5A09 /* Build configuration list for PBXNativeTarget "Clavier" */; buildPhases = ( - 10CDEEC1DFA20133CE1E22A1758DD7DE /* Headers */, - 25CDDE1A481E4F9E91BB5CF25685F4B3 /* Sources */, - 1B1543001AF01BD73E119813761CFC70 /* Frameworks */, - 1EFB1AE2A9873EF7AA8D5468BAAC34E0 /* Resources */, + 9CFB4C971A9497A363FBF77EE1ADF7F1 /* Headers */, + E72678B1A424C482C565F91CDD1104EF /* Sources */, + DCFB081CF50AA20B8DA89CBFBC0A337B /* Frameworks */, + 2F982C76418F2FA5CCD07E5A9D728472 /* Resources */, ); buildRules = ( ); @@ -1190,7 +1234,7 @@ buildConfigurationList = CFC80D9B52C5E0F4C6B873FB8C755C3C /* Build configuration list for PBXNativeTarget "Builder" */; buildPhases = ( 18D7608DAAA952B7AE8ACBE6D37E79A0 /* Headers */, - D700C1AFAD2DADBB91AC7275AF755219 /* Sources */, + 4025977D47B648C494F43E74FDBCCC9D /* Sources */, 89BA9CF1B88E9A3EE82C519985A5EDFB /* Frameworks */, 955AE56E3CA576076728D30AD27D8951 /* Resources */, ); @@ -1209,8 +1253,8 @@ BFDFE7DC352907FC980B868725387E98 /* Project object */ = { isa = PBXProject; attributes = { - LastSwiftUpdateCheck = 1240; - LastUpgradeCheck = 1240; + LastSwiftUpdateCheck = 1300; + LastUpgradeCheck = 1300; }; buildConfigurationList = 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -1237,28 +1281,28 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 1EFB1AE2A9873EF7AA8D5468BAAC34E0 /* Resources */ = { + 1DD6016A3ACC70756DC9008DB06D92AE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 3413B9835E742CB3B9CA0E560F12FB2E /* Resources */ = { + 2F982C76418F2FA5CCD07E5A9D728472 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 56CE6779324CECE6B02CC519176C38D8 /* Resources */ = { + 3413B9835E742CB3B9CA0E560F12FB2E /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 71417AF05ADC048680EC070AD54395D5 /* Resources */ = { + 56CE6779324CECE6B02CC519176C38D8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1289,77 +1333,83 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 25CDDE1A481E4F9E91BB5CF25685F4B3 /* Sources */ = { + 4025977D47B648C494F43E74FDBCCC9D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 0822D2362FCE28CE9AF0D0DD09FC4992 /* Clavier-dummy.m in Sources */, - C05F31EC32F5325FE0907C3AC85ED1F1 /* ClavierLayoutGuide.swift in Sources */, - 97ECF3FDB42C6A6C3AD1127F7E4EC824 /* Extensions.swift in Sources */, - 1F7DAA306074029268825D335AB43F6D /* SafeAreaKeyboardLayoutGuide.swift in Sources */, + DFB160A96C4602BA8C37455CC0B41A01 /* Builder.swift in Sources */, + C6E46447914DE94FA5D6E7441A95DAD9 /* Builder-dummy.m in Sources */, + E4C2EB1548D6A9F54D527A9E39961606 /* BuilderConfig.swift in Sources */, + 7829CFEBBC9B733A1E3342F4A811348F /* PropertyAssigner.swift in Sources */, + 8E37010D77F00054207AAB5614E199CC /* Protocols.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 480CA959E27A15A1D21E0AEFDB6DE4C8 /* Sources */ = { + 41D6FE3CFF8577A1F5B864A10EC997F7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 304841A0848FF5B0F853834BA5F9CB1D /* Pods-Draftsman_Tests-dummy.m in Sources */, + 48F427629ACF37FC7E46886BEEF17F92 /* AnchorExtractable.swift in Sources */, + 3556BEE645602CB9C68B8F8D1B30CFA1 /* AnchorPair.swift in Sources */, + DFACA462D29ECBEAAEDE1FAC2B158BF6 /* Array+Extensions.swift in Sources */, + 1727648662D3A856676BD5832FC9786E /* Axis.swift in Sources */, + 2FC84B1BA7C1F9D0A867E48C2650325C /* AxisAnchor.swift in Sources */, + B100560D6E0326FF5E7FEDBCF88D1CFE /* AxisAnchorRelation.swift in Sources */, + CD58FF53AE597F9EA4127A42C017CE19 /* ConstraintBuilder.swift in Sources */, + AA6CDD31E830F6464D8767710780B908 /* ConstraintBuilderRootRecoverable.swift in Sources */, + 97A3C65C1FD86376B61E1BB31BB93835 /* ContainerShortcuts.swift in Sources */, + 3BA9050C1EEABD7BC296C529793DD4B3 /* Dimension.swift in Sources */, + 443C2716AB6D39616CE30A88ECB9D0D8 /* DimensionAnchor.swift in Sources */, + 70C01A2C1BD7B9735BF5173F6CCD4BDB /* DimensionAnchorRelation.swift in Sources */, + FD534E4AE3BEE09DCEAFB3DA673AEF29 /* Draftsman-dummy.m in Sources */, + AB72EE2B41A690442ADD196BB45B3F51 /* Enumeration.swift in Sources */, + 78FBE0829DAF1648B58E97DD49A619A9 /* IdentifiedAnchorRelation.swift in Sources */, + EA75AE8D9FDC5EBE5AA06EA29F0E97E1 /* LayoutAnchor.swift in Sources */, + 9AEDE52279381927D9A235C6820C9AD1 /* LayoutAxisAnchor.swift in Sources */, + A7B3E2C99BFA7878231314A4F51C4CC6 /* LayoutDraft.swift in Sources */, + 0CE37CB21ED2A5C430316F17D0220781 /* LayoutDraftBuilder.swift in Sources */, + 233AF90A7F1EBD21009129289BA3439B /* LayoutPlan.swift in Sources */, + 21CC7C4011CEB43267767EEFAE0780EB /* LayoutWithAnchors.swift in Sources */, + ED883CDE6EFB7D9D1483987E59332718 /* NSLayoutConstraint+Extensions.swift in Sources */, + BA9C12BB1044F3FA4F3172CDD26B4CDC /* NSLayoutDimension+Extensions.swift in Sources */, + D0BD0D26A9309FE896005D62591A0584 /* Pair.swift in Sources */, + 746D8827B7478AA47FDFA8935C17F1CE /* PairAnchor.swift in Sources */, + 2B9937345129BB40AB3DD48B11600DC5 /* PairAnchorRelation.swift in Sources */, + B8FA83E016F82F17A2A23EFF37E90E7A /* PairConstant.swift in Sources */, + 4CB1EF15D5DC23A3A8A6B494832A5857 /* PlanComponent.swift in Sources */, + 7934FA4A46E10952D984E4D1D88262A7 /* PlanContext.swift in Sources */, + 51470AF888F24DCA2AB70970EA378563 /* Planned.swift in Sources */, + B2C4EA6AA5437E49E5E4DB9C3C49E706 /* PlannedDraft.swift in Sources */, + D6FFD2E89FCB51115EF331F7D251CAE9 /* PrioritizedAnchorRelation.swift in Sources */, + F9AB9D23F19EF6D4272DF0CEDBD3DE80 /* Quad.swift in Sources */, + 3ACBFE23C8DD9735BD13D34646B2BC97 /* QuadAnchor.swift in Sources */, + F66AE856EBABEA498EDF767261592646 /* QuadAnchorRelation.swift in Sources */, + 9B65363F43A81C92936A53AED0608A7B /* RelationShortcuts.swift in Sources */, + 969DDBB4B1A874B040569E468A94D504 /* ScrollableStackView.swift in Sources */, + 05491EC8EA9A10873C046410F10DEB27 /* Single.swift in Sources */, + D8F2DC6217EA618F75BECB84129131D7 /* SingleAnchor.swift in Sources */, + 950F1839C0B12CED8FAC44B42B886097 /* SingleAnchorRelation.swift in Sources */, + 3C9C63106697E85089D89C63D37FBEC5 /* SizeAnchor.swift in Sources */, + F2A85DE7E9E7F38153A3415AE97E13F8 /* SizeAnchorRelation.swift in Sources */, + AEC21F9264EE8A7A104CF8CB42C06AA8 /* SpacerView.swift in Sources */, + 41684FFF99B8ECC401C2615D2E943E50 /* StackCompatible.swift in Sources */, + E50D840B73EEEEECADAB1A5F3FB3E4E0 /* StackedShortcuts.swift in Sources */, + 30E22D085FE34AB9A4BEE09E5E691801 /* TriAnchor.swift in Sources */, + D392AA40467D2C20577EAA3EBD7B3AB0 /* TriAnchorRelation.swift in Sources */, + 246D5517F4301F7FE4247E171CA129AE /* TriConstant.swift in Sources */, + FC740D424C63DF7BDC9979648F3F8D39 /* Trio.swift in Sources */, + 1F0026558FCDC1DABC8AB97C0941EFA9 /* UIKit+Extensions.swift in Sources */, + F99C5F7BBC48F994B34D2CF6A0ABEAA3 /* UIView+Extensions.swift in Sources */, + B0F9074A2AD569E1FCB12342D5247410 /* ViewPlan.swift in Sources */, + DCD86D8A86A3F44C27CE1AD81C60014F /* ViewPlanBuilder.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4970B250CE577AE15F7E1BA7F9D74E07 /* Sources */ = { + 480CA959E27A15A1D21E0AEFDB6DE4C8 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6E9CF7B9023BC352D8A18AD980A579A0 /* AnchorExtractable.swift in Sources */, - 31F87AF73D9A5F18541E5DC768E31FC4 /* AnchorPair.swift in Sources */, - E8FD9CBD1EE4618472818616F3B4DC7E /* Axis.swift in Sources */, - 7B8F252D4398C875CE9D707A7CC555E5 /* AxisAnchor.swift in Sources */, - 794A4683D2CC855C09A4280554A04015 /* AxisAnchorRelation.swift in Sources */, - 740EA96B039CA809BD0C8E9FF7C05A38 /* ConstraintBuilder.swift in Sources */, - 567284108DCE582F0AC3584C6844039C /* ConstraintBuilderRootRecoverable.swift in Sources */, - F9761422C469099AE7D864CB25FF43D7 /* Dimension.swift in Sources */, - D98C9FFD1E7CEDB9718CDC5B3B43BA0C /* DimensionAnchor.swift in Sources */, - F1B936C380DEC9B10D66549A7D48AFF3 /* DimensionAnchorRelation.swift in Sources */, - 03D6B4572EC3B438DD0ACCDEA803B48A /* Draftsman-dummy.m in Sources */, - B6B9D13ACD0BDEE4383F2EBF28AE960B /* Enumeration.swift in Sources */, - 1F6099FDF039ADA0D6D6A2BFEE148BF5 /* IdentifiedAnchorRelation.swift in Sources */, - 08E9D56AB0FB640B7CAA2CB97EA84359 /* LayoutAnchor.swift in Sources */, - CCEB6E9391D7C8BD953C868E77B35BF3 /* LayoutAxisAnchor.swift in Sources */, - CDFC2FB1C61D8ED5A656F7D81397A51F /* LayoutDraft.swift in Sources */, - B8341CB966AB4301E695EA6BA8434C44 /* LayoutDraftBuilder.swift in Sources */, - 7EA5733A597A87700FCF283E94C31101 /* LayoutPlan.swift in Sources */, - E39C0C0125560F093181D80353A79EC8 /* LayoutWithAnchors.swift in Sources */, - A797CAAF4F9DF5220E84432904DF754F /* NSLayoutConstraint+Extensions.swift in Sources */, - 33D129928A0B66D5A780E8348605B742 /* NSLayoutDimension+Extensions.swift in Sources */, - 8287DC1C87F3278CB7DD51D4EC5FE0D3 /* Pair.swift in Sources */, - DEB3583A39304607B54A6569DAA3A5FF /* PairAnchor.swift in Sources */, - F68761380E710C5BE715652D3281AA74 /* PairAnchorRelation.swift in Sources */, - EE92DC271EB1AB86BD57B51601BE0D34 /* PairConstant.swift in Sources */, - 76B4E66F5CCE543B7AAF93A1C8449944 /* PlanComponent.swift in Sources */, - CB509AA2B4CFC7A7F252B62FC2FCF95C /* PlanContext.swift in Sources */, - 7CC0A71F28BB69420551D2214A7907A7 /* Planned.swift in Sources */, - 6B6DB611AB396C7A77761585ABF9A33A /* PlannedDraft.swift in Sources */, - 7A9EFAD9D05F58AEFD9D51A592E14563 /* PrioritizedAnchorRelation.swift in Sources */, - 43C6EEAFF22F0E19DF80782AA737F6D2 /* Quad.swift in Sources */, - 4427E9EEDEC264E61F38BCE476D5CC98 /* QuadAnchor.swift in Sources */, - C08A1951949EF07292FA218ACBA7A21B /* QuadAnchorRelation.swift in Sources */, - 440EF0353C58325A9F1D98B397EF4838 /* Single.swift in Sources */, - 221EB784287DF0D0F4F231F943C35F93 /* SingleAnchor.swift in Sources */, - 8902A3ED845ABDA286BB703931DFA331 /* SingleAnchorRelation.swift in Sources */, - E48D5FD95749F4985086DD2E4F686426 /* SizeAnchor.swift in Sources */, - C0451587E5DF84DAA505246252F2D8AB /* SizeAnchorRelation.swift in Sources */, - 551F313ED7F0FCA5ED09C951D4A0AE3D /* StackCompatible.swift in Sources */, - AD7C1FA2A3E4020F6EC99EAECCBCFBB2 /* TriAnchor.swift in Sources */, - 67003AFC9C455DBF1958F99413794E60 /* TriAnchorRelation.swift in Sources */, - 4756EFB1D272DA61F567521BF120BE5B /* TriConstant.swift in Sources */, - 38CC5A70476A437EB7D7CC9716F578DF /* Trio.swift in Sources */, - 7338346428E4AB8300942D6E /* Array+Extensions.swift in Sources */, - 28254898F20E2F4173C2DAF7CD7C70CF /* UIKit+Extensions.swift in Sources */, - 5DEBA72C49A443389125AB766BC35F14 /* UIView+Extensions.swift in Sources */, - 0A6438BB6510B1D52B84E73C935C62B3 /* ViewPlan.swift in Sources */, - 380F23EA9D2ED0E0A3FACBEA64E329C3 /* ViewPlanBuilder.swift in Sources */, + 304841A0848FF5B0F853834BA5F9CB1D /* Pods-Draftsman_Tests-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1478,76 +1528,77 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D700C1AFAD2DADBB91AC7275AF755219 /* Sources */ = { + E72678B1A424C482C565F91CDD1104EF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CA7981D7578EEDE210D420C939F9ACF2 /* Buildable.swift in Sources */, - B33DBB8BCB935B6F8B1CE43C99983517 /* Builder.swift in Sources */, - 30EC9E30DCFECAD38154A2440CAA74C9 /* Builder-dummy.m in Sources */, - F079013DA271BD05A2A3B0C065C2B44F /* BuilderConfig.swift in Sources */, - 76974B6FF7A8313A520C569403D07803 /* PropertyAssigner.swift in Sources */, + A085ADDD5EE53D490FA112241A6333EA /* Clavier-dummy.m in Sources */, + 9043C685084E17D09BCA8C797AE20BD9 /* ClavierGlobalConfig.swift in Sources */, + D8AF0A6CE8C38C3DB55A2FF8B5B8882B /* ClavierLayoutGuide.swift in Sources */, + F201E51769383034D951AA3D645818B9 /* Extensions.swift in Sources */, + 2BD6A58E79CE1B0D436A4CE32DADFBB4 /* SafeAreaKeyboardLayoutGuide.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 267880FBFAC9274E3A8C4892616208AC /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Quick; - target = C82891EAB7293DBEE916B21F57E8474D /* Quick */; - targetProxy = 431791C8FE73FC4D64BCB4B3BEA7B5DA /* PBXContainerItemProxy */; - }; - 3BDCF8FE18DD87F7F9BC4FAAF3C37D0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Clavier; - target = A0746DCD7C48E9F6BAB723766294323A /* Clavier */; - targetProxy = 22B40D437883FE1B9221DD9AB31114B5 /* PBXContainerItemProxy */; - }; - 465E744C1C48666E9F97985E2C0C8B89 /* PBXTargetDependency */ = { + 759E6FA7AAD6D0DD91396D927EF08A46 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Draftsman; target = 6A3AC2D6739DCB3DEBEB81CF81B207F2 /* Draftsman */; - targetProxy = 7B992F08DD4FAE8AC81EC7A03EA5639E /* PBXContainerItemProxy */; + targetProxy = 7AEE7661B2AFD412596B7AF16AFB0406 /* PBXContainerItemProxy */; }; - 66B3972E40A426101722A31B6A424784 /* PBXTargetDependency */ = { + 8F911BBF95C7B436F26E747DFF6D2740 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Clavier; - target = A0746DCD7C48E9F6BAB723766294323A /* Clavier */; - targetProxy = F90E5BE4744AF0546705394F60B3BC75 /* PBXContainerItemProxy */; + name = Quick; + target = C82891EAB7293DBEE916B21F57E8474D /* Quick */; + targetProxy = 586370206914785CEA07E33B1110EDDE /* PBXContainerItemProxy */; }; - 7B5B2D494D319EA4817316031ED7E9A4 /* PBXTargetDependency */ = { + AD1A9C169107F1DB876357C8FA7B4A92 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Builder; target = ED7AB6873A9DA430A18E0109776D3707 /* Builder */; - targetProxy = FB2A60EA449D94D480C39682BFE66147 /* PBXContainerItemProxy */; + targetProxy = 9A429C918075BE371219A3BCFE83653C /* PBXContainerItemProxy */; }; - 8C42D75E9192557989074080F4881180 /* PBXTargetDependency */ = { + AFBDC24132ED01C98C303C0B7BF756BF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Clavier; + target = A0746DCD7C48E9F6BAB723766294323A /* Clavier */; + targetProxy = 8C284B2D17C51272C70927EE0ED98445 /* PBXContainerItemProxy */; + }; + C5F1CB56E680CDEF77F35BF31714470B /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "Pods-Draftsman_Example"; target = 377352EA226808E63CAAC3307066E129 /* Pods-Draftsman_Example */; - targetProxy = D85EF329E45D0FC3C5C6D975B7C2478B /* PBXContainerItemProxy */; + targetProxy = 9AB3D4142E52E18D54535312C4B765A3 /* PBXContainerItemProxy */; + }; + DEBD9E2FB4ECDD5E06EC31D4614CC4A7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Nimble; + target = 6F13695E06195A78EA8A95F8C7ED0D2F /* Nimble */; + targetProxy = DD40A1289FB5D02B8184464BFBE512DA /* PBXContainerItemProxy */; }; - B2A7C9B22F44E6D25F45A345611CA5C1 /* PBXTargetDependency */ = { + EF4560BE4E66C54F903C53F0C41143EE /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Builder; target = ED7AB6873A9DA430A18E0109776D3707 /* Builder */; - targetProxy = 51869FD1E3DCD723A143F71CEE7B2FEA /* PBXContainerItemProxy */; + targetProxy = 748614E69E2A7E52EBA4BD858177D47B /* PBXContainerItemProxy */; }; - EAB2EBE824F632E9648DABEE05C258F7 /* PBXTargetDependency */ = { + EF9EA9AE90F62AF7FB2C7B87055A520A /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = Nimble; - target = 6F13695E06195A78EA8A95F8C7ED0D2F /* Nimble */; - targetProxy = 77229856FD25DC45E25D88D4F6A721C1 /* PBXContainerItemProxy */; + name = Clavier; + target = A0746DCD7C48E9F6BAB723766294323A /* Clavier */; + targetProxy = 7AE33DC03BC1FB2D2A1DEE385B0D9553 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0EA84E6444C6152F55F8CFB957BBA414 /* Release */ = { + 1DE3A21174EA3AADF7A6FCF6C2BE9C9C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 606E55C7D4659D3147263FD9E9E9F779 /* Draftsman.release.xcconfig */; + baseConfigurationReference = CF4DCECCFF94A65847696D7332A6E67C /* Pods-Draftsman_Example.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1558,18 +1609,19 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Draftsman/Draftsman-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Draftsman/Draftsman-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Draftsman/Draftsman.modulemap"; - PRODUCT_MODULE_NAME = Draftsman; - PRODUCT_NAME = Draftsman; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1577,11 +1629,10 @@ }; name = Release; }; - 1DE3A21174EA3AADF7A6FCF6C2BE9C9C /* Release */ = { + 1FBAA31A42CF33066161CD50FD2A7BF9 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CF4DCECCFF94A65847696D7332A6E67C /* Pods-Draftsman_Example.release.xcconfig */; + baseConfigurationReference = 8CE723DD5D2077D2F2D939774AC11A34 /* Clavier.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1592,19 +1643,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Clavier/Clavier-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Clavier/Clavier-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; + IPHONEOS_DEPLOYMENT_TARGET = 10.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Clavier/Clavier.modulemap"; + PRODUCT_MODULE_NAME = Clavier; + PRODUCT_NAME = Clavier; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.1; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -1680,7 +1730,7 @@ }; 31BF29E1EDC292A971DFB5461AA22837 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 20AF5E46E2ABD3532996C3C3EC9F68CB /* Builder.release.xcconfig */; + baseConfigurationReference = 60BCE8590B988E71894E4D7989749C18 /* Builder.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1713,7 +1763,7 @@ }; 5BD7DF7AE52C363EF4A7DF144DD5F931 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2E9880838EA02E9CAA10EF9415C75888 /* Nimble.debug.xcconfig */; + baseConfigurationReference = 00A372A8D92CB46FEE8F7398121F970A /* Nimble.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1743,7 +1793,7 @@ }; 5BDE5BE883646CF9462199AA12CE00D0 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0198DA4F840D028F705FBE0868C86AE /* Builder.debug.xcconfig */; + baseConfigurationReference = 97CCAAD4AD2A29053F844CD1D9DF0BCE /* Builder.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1862,7 +1912,8 @@ MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; STRIP_INSTALLED_PRODUCT = NO; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; SYMROOT = "${SRCROOT}/../build"; }; @@ -1870,7 +1921,7 @@ }; 7E02862B36C4C3E2A4061EA864A1D82A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7E48511FE1C8A618EF30102A166E6D2D /* Quick.debug.xcconfig */; + baseConfigurationReference = 9C0B07D720F9ACDCC4DA506EADF16EBE /* Quick.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1932,9 +1983,9 @@ }; name = Debug; }; - 98FEC9589004E42C3A8DB0A86582AC7F /* Release */ = { + 97A608F250ACE0BFEBB306E6EECF8745 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80D27C80B55B01693AAE179933CFFAF7 /* Clavier.release.xcconfig */; + baseConfigurationReference = 93EE8D87901E3F3A46AF2BDDAFFE34E7 /* Clavier.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -1959,15 +2010,14 @@ SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_VERSION = 5.1; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = Debug; }; A5BA22D4099F2DB7899F68DF2A6484DC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E0A95CBB7822CF12F88E0B85D2CEE4F7 /* Nimble.release.xcconfig */; + baseConfigurationReference = 71D90F98116E28683C388103A5B89671 /* Nimble.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -1996,9 +2046,9 @@ }; name = Release; }; - A642D70D6C5CF0DBED1FEC4C801212EE /* Debug */ = { + ABDC333191EA6961EE8B443D14FFCD3B /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4690550048C2785171CE757C714A3605 /* Draftsman.debug.xcconfig */; + baseConfigurationReference = 996E26B4E82E7723430DD570F4BFF406 /* Draftsman.debug.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; @@ -2030,7 +2080,7 @@ }; C7F58B5218183E8949843CF69C1CE9A5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E87A6FF45B5A9BE7F76413E50802181A /* Quick.release.xcconfig */; + baseConfigurationReference = 928A2B838F2BB77FCDD4007C91279353 /* Quick.release.xcconfig */; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2059,11 +2109,10 @@ }; name = Release; }; - DE5565938DE0EA6EFAF309DE0EFE4E8E /* Release */ = { + CB6E182DCC87972F6BD63CBC1B262CC7 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B460F0A785DA5881C3BCC3E878E1EEC7 /* Pods-Draftsman_Tests.release.xcconfig */; + baseConfigurationReference = 35EC45A911F8598E9F4DFD17412482E6 /* Draftsman.release.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2074,19 +2123,18 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - INFOPLIST_FILE = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Draftsman/Draftsman-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Draftsman/Draftsman-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/Draftsman/Draftsman.modulemap"; + PRODUCT_MODULE_NAME = Draftsman; + PRODUCT_NAME = Draftsman; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_VERSION = 5.5; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -2094,10 +2142,11 @@ }; name = Release; }; - FC6A63D2BEBB161EB0C2D017321F5AB7 /* Debug */ = { + DE5565938DE0EA6EFAF309DE0EFE4E8E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45A744AC14E4F12A8725E7D7857DC2E4 /* Clavier.debug.xcconfig */; + baseConfigurationReference = B460F0A785DA5881C3BCC3E878E1EEC7 /* Pods-Draftsman_Tests.release.xcconfig */; buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; ARCHS = "$(ARCHS_STANDARD_64_BIT)"; CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2108,23 +2157,25 @@ DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; - GCC_PREFIX_HEADER = "Target Support Files/Clavier/Clavier-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Clavier/Clavier-Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 10.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Clavier/Clavier.modulemap"; - PRODUCT_MODULE_NAME = Clavier; - PRODUCT_NAME = Clavier; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_VERSION = 5.1; TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; /* End XCBuildConfiguration section */ @@ -2138,6 +2189,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 3BA5963DCDEEECC39069627D199FA046 /* Build configuration list for PBXNativeTarget "Draftsman" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + ABDC333191EA6961EE8B443D14FFCD3B /* Debug */, + CB6E182DCC87972F6BD63CBC1B262CC7 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2147,6 +2207,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 5BA0953A73FC9A4A0996566E031D5A09 /* Build configuration list for PBXNativeTarget "Clavier" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97A608F250ACE0BFEBB306E6EECF8745 /* Debug */, + 1FBAA31A42CF33066161CD50FD2A7BF9 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 6061464F0C2AB10C6FB6C82DB79A27B3 /* Build configuration list for PBXNativeTarget "Pods-Draftsman_Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2174,15 +2243,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CBACDDA535B46082000731FE853DAC03 /* Build configuration list for PBXNativeTarget "Draftsman" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A642D70D6C5CF0DBED1FEC4C801212EE /* Debug */, - 0EA84E6444C6152F55F8CFB957BBA414 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; CFC80D9B52C5E0F4C6B873FB8C755C3C /* Build configuration list for PBXNativeTarget "Builder" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -2192,15 +2252,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E2FD60FE9EDBD632725DB0B417A9B342 /* Build configuration list for PBXNativeTarget "Clavier" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FC6A63D2BEBB161EB0C2D017321F5AB7 /* Debug */, - 98FEC9589004E42C3A8DB0A86582AC7F /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/Example/Pods/Target Support Files/Builder/Builder-Info.plist b/Example/Pods/Target Support Files/Builder/Builder-Info.plist index 2660a93..21a30b4 100644 --- a/Example/Pods/Target Support Files/Builder/Builder-Info.plist +++ b/Example/Pods/Target Support Files/Builder/Builder-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 1.0.4 + 1.1.0 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Clavier/Clavier-Info.plist b/Example/Pods/Target Support Files/Clavier/Clavier-Info.plist index bdac57c..763f9a6 100644 --- a/Example/Pods/Target Support Files/Clavier/Clavier-Info.plist +++ b/Example/Pods/Target Support Files/Clavier/Clavier-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 2.0.1 + 2.0.3 CFBundleSignature ???? CFBundleVersion diff --git a/Example/Pods/Target Support Files/Draftsman/Draftsman-Info.plist b/Example/Pods/Target Support Files/Draftsman/Draftsman-Info.plist index e822e16..62bad7c 100644 --- a/Example/Pods/Target Support Files/Draftsman/Draftsman-Info.plist +++ b/Example/Pods/Target Support Files/Draftsman/Draftsman-Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 3.0.6 + 3.0.7 CFBundleSignature ???? CFBundleVersion diff --git a/Package.resolved b/Package.resolved index 0df196b..2f05c5c 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "repositoryURL": "https://github.com/hainayanda/Builder.git", "state": { "branch": null, - "revision": "135f18c811c2e75f4a2fc8aae5e02c6c37d8d672", - "version": "1.0.5" + "revision": "e04db3d4ea46bf4c374ecc1a31d6de4d48dac156", + "version": "1.1.0" } }, { @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/hainayanda/Clavier.git", "state": { "branch": null, - "revision": "acd31f2629d20b2df77ccb440ab2cb6bc2f7cfc6", - "version": "2.0.2" + "revision": "a669eece7105cee029a3c11a5084169fe44879fd", + "version": "2.0.3" } } ] diff --git a/Package.swift b/Package.swift index 4b00444..9f6b9cb 100644 --- a/Package.swift +++ b/Package.swift @@ -15,8 +15,8 @@ let package = Package( ) ], dependencies: [ - .package(url: "https://github.com/hainayanda/Clavier.git", from: "2.0.2"), - .package(url: "https://github.com/hainayanda/Builder.git", from: "1.0.5"), + .package(url: "https://github.com/hainayanda/Clavier.git", from: "2.0.3"), + .package(url: "https://github.com/hainayanda/Builder.git", from: "1.1.0"), // uncomment code below to test // .package(url: "https://github.com/Quick/Quick.git", from: "5.0.1"), // .package(url: "https://github.com/Quick/Nimble.git", from: "10.0.0") From b863b0354eed3d9c1443bf041c44592a494c956a Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:40:11 +0700 Subject: [PATCH 02/13] Add ScrollableStackView --- .../CustomView/ScrollableStackView.swift | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift diff --git a/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift b/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift new file mode 100644 index 0000000..8ffe054 --- /dev/null +++ b/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift @@ -0,0 +1,126 @@ +// +// File.swift +// +// +// Created by Nayanda Haberty on 9/1/23. +// + +import Foundation +#if canImport(UIKit) +import UIKit + +public class ScrollableStackView: UIScrollView, Planned { + let alignment: UIStackView.Alignment + let spacing: CGFloat + public var axis: NSLayoutConstraint.Axis { + didSet { + stackView.axis = axis + } + } + + lazy var stackView: UIStackView = UIStackView( + axis: axis, + distribution: .equalSpacing, + alignment: alignment, + spacing: spacing + ) + + public override var subviews: [UIView] { + var allSubviews = super.subviews + allSubviews.append(contentsOf: stackView.subviews) + return allSubviews + } + + @LayoutPlan + public var viewPlan: ViewPlan { + if axis == .vertical { + stackView.drf + .width.equal(with: .parent) + .edges.equal(with: .parent) + } else { + stackView.drf + .height.equal(with: .parent) + .edges.equal(with: .parent) + } + } + + public override init(frame: CGRect) { + self.alignment = .center + self.spacing = .zero + self.axis = .vertical + super.init(frame: frame) + } + + public init( + frame: CGRect = .zero, + axis: NSLayoutConstraint.Axis, + margins: UIEdgeInsets? = nil, + alignment: UIStackView.Alignment = .center, + spacing: CGFloat = .zero) { + self.axis = axis + self.alignment = alignment + self.spacing = spacing + super.init(frame: frame) + if let margins { + self.stackView.layoutMargins = margins + self.stackView.isLayoutMarginsRelativeArrangement = true + } + applyPlan() + } + + required init?(coder: NSCoder) { + self.axis = .vertical + self.alignment = .center + self.spacing = .zero + super.init(coder: coder) + applyPlan() + } +} + +extension ScrollableStackView: StackCompatible { + + public override var layoutMargins: UIEdgeInsets { + get { + stackView.layoutMargins + } + set { + stackView.layoutMargins = newValue + } + } + + public var isLayoutMarginsRelativeArrangement: Bool { + get { + stackView.isLayoutMarginsRelativeArrangement + } + set { + stackView.isLayoutMarginsRelativeArrangement = newValue + } + } + + public var arrangedSubviews: [UIView] { + stackView.arrangedSubviews + } + + public func addArrangedSubview(_ view: UIView) { + stackView.addArrangedSubview(view) + } + + public func removeArrangedSubview(_ view: UIView) { + stackView.removeArrangedSubview(view) + } + + public func insertArrangedSubview(_ view: UIView, at stackIndex: Int) { + stackView.insertArrangedSubview(view, at: stackIndex) + } + + @available(iOS 11.0, *) + public func setCustomSpacing(_ spacing: CGFloat, after arrangedSubview: UIView) { + stackView.setCustomSpacing(spacing, after: arrangedSubview) + } + + @available(iOS 11.0, *) + public func customSpacing(after arrangedSubview: UIView) -> CGFloat { + stackView.customSpacing(after: arrangedSubview) + } +} +#endif From a8aad2f4962acd237084a7e6bd78f5f14c72a5b5 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:40:24 +0700 Subject: [PATCH 03/13] Add SpacerView --- .../Utilities/CustomView/SpacerView.swift | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 Draftsman/Classes/Utilities/CustomView/SpacerView.swift diff --git a/Draftsman/Classes/Utilities/CustomView/SpacerView.swift b/Draftsman/Classes/Utilities/CustomView/SpacerView.swift new file mode 100644 index 0000000..bdac224 --- /dev/null +++ b/Draftsman/Classes/Utilities/CustomView/SpacerView.swift @@ -0,0 +1,96 @@ +// +// SpacerView.swift +// Draftsman +// +// Created by Nayanda Haberty on 11/1/23. +// + +import Foundation +#if canImport(UIKit) +import UIKit + +public class SpacerView: UIView { + + let dimension: CGFloat? + var spaceConstraint: NSLayoutConstraint? + + public init(_ dimension: CGFloat) { + self.dimension = dimension + super.init(frame: .zero) + self.backgroundColor = .clear + } + + public init() { + self.dimension = nil + super.init(frame: .zero) + self.backgroundColor = .clear + } + + func apply(axis: NSLayoutConstraint.Axis) { + spaceConstraint?.isActive = false + guard let dimension else { + super.setContentCompressionResistancePriority(.defaultLow, for: axis) + super.setContentHuggingPriority(.defaultLow, for: axis) + super.setContentCompressionResistancePriority( + defaultContentCompressionResistancePriority(for: axis.crossAxis), + for: axis.crossAxis + ) + super.setContentHuggingPriority( + defaultContentHuggingPriority(for: axis.crossAxis), + for: axis.crossAxis + ) + return + } + switch axis { + case .horizontal: + spaceConstraint = widthAnchor.constraint(greaterThanOrEqualToConstant: dimension) + spaceConstraint?.isActive = true + case .vertical: + spaceConstraint = heightAnchor.constraint(greaterThanOrEqualToConstant: dimension) + spaceConstraint?.isActive = true + @unknown default: + break + } + } + + required init?(coder: NSCoder) { + self.dimension = nil + super.init(coder: coder) + self.backgroundColor = .clear + } + + private var userContentHuggingPriority: [NSLayoutConstraint.Axis: UILayoutPriority] = [:] + public override func setContentHuggingPriority(_ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis) { + super.setContentHuggingPriority(priority, for: axis) + userContentHuggingPriority[axis] = priority + } + + private var userContentCompressionResistancePriority: [NSLayoutConstraint.Axis: UILayoutPriority] = [:] + public override func setContentCompressionResistancePriority(_ priority: UILayoutPriority, for axis: NSLayoutConstraint.Axis) { + super.setContentCompressionResistancePriority(priority, for: axis) + userContentCompressionResistancePriority[axis] = priority + } + + private func defaultContentHuggingPriority(for axis: NSLayoutConstraint.Axis) -> UILayoutPriority { + userContentHuggingPriority[axis.crossAxis] ?? UILayoutPriority(250) + } + + private func defaultContentCompressionResistancePriority(for axis: NSLayoutConstraint.Axis) -> UILayoutPriority { + userContentCompressionResistancePriority[axis.crossAxis] ?? UILayoutPriority(750) + } + +} + +extension NSLayoutConstraint.Axis { + var crossAxis: NSLayoutConstraint.Axis { + switch self { + case .horizontal: + return .vertical + case .vertical: + return .horizontal + @unknown default: + return self + } + } +} +#endif From b570b706c1aa7b397aee8a16221e2a3ee4e54e0d Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:44:01 +0700 Subject: [PATCH 04/13] Add array of View compatibilty --- Draftsman/Classes/Draft/LayoutPlan.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Draftsman/Classes/Draft/LayoutPlan.swift b/Draftsman/Classes/Draft/LayoutPlan.swift index ed1e69c..8451000 100644 --- a/Draftsman/Classes/Draft/LayoutPlan.swift +++ b/Draftsman/Classes/Draft/LayoutPlan.swift @@ -9,6 +9,12 @@ import Foundation #if canImport(UIKit) import UIKit +extension Array: PlanComponent where Element: PlanComponent { + public var insertablePlans: [ViewDraft] { + flatMap { $0.insertablePlans } + } +} + @resultBuilder public struct LayoutPlan { public typealias Expression = PlanComponent? From 46c484c0e0e7d0df50390607a02b4feb6bd510d8 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:44:31 +0700 Subject: [PATCH 05/13] Add more contract on StackCompatible --- Draftsman/Classes/Utilities/StackCompatible.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Draftsman/Classes/Utilities/StackCompatible.swift b/Draftsman/Classes/Utilities/StackCompatible.swift index 99c873a..88de0eb 100644 --- a/Draftsman/Classes/Utilities/StackCompatible.swift +++ b/Draftsman/Classes/Utilities/StackCompatible.swift @@ -11,6 +11,9 @@ import UIKit public protocol StackCompatible where Self: UIView { var arrangedSubviews: [UIView] { get } + var axis: NSLayoutConstraint.Axis { get set } + var layoutMargins: UIEdgeInsets { get set } + var isLayoutMarginsRelativeArrangement: Bool { get set } func addArrangedSubview(_ view: UIView) func removeArrangedSubview(_ view: UIView) func insertArrangedSubview(_ view: UIView, at stackIndex: Int) From 35c43e3670de2ec4480e847044514b3447820988 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:45:09 +0700 Subject: [PATCH 06/13] Remove HStackView and VStackView --- .../Extensions/UIView+Extensions.swift | 24 ------------------- 1 file changed, 24 deletions(-) diff --git a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift index 3257cf7..d6450ca 100644 --- a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift +++ b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift @@ -46,30 +46,6 @@ public extension UIStackView { } } -@inlinable public func VStackView( - distribution: UIStackView.Distribution = .fill, - alignment: UIStackView.Alignment = .fill, - spacing: CGFloat = .zero) -> UIStackView { - .init( - axis: .vertical, - distribution: distribution, - alignment: alignment, - spacing: spacing - ) - } - -@inlinable public func HStackView( - distribution: UIStackView.Distribution = .fill, - alignment: UIStackView.Alignment = .fill, - spacing: CGFloat = .zero) -> UIStackView { - .init( - axis: .horizontal, - distribution: distribution, - alignment: alignment, - spacing: spacing - ) - } - public protocol CellWithContentView: UIView { var contentView: UIView { get } } From 67ea50ad385fc2807a3230c01f4c1d8a4d72c22e Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:45:31 +0700 Subject: [PATCH 07/13] Add margins to UIStackView init --- .../Classes/Utilities/Extensions/UIView+Extensions.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift index d6450ca..0dc67c5 100644 --- a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift +++ b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift @@ -35,6 +35,7 @@ public extension UIStackView { @inlinable convenience init( axis: NSLayoutConstraint.Axis, + margins: UIEdgeInsets? = nil, distribution: UIStackView.Distribution = .fill, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero) { @@ -43,6 +44,10 @@ public extension UIStackView { self.distribution = distribution self.alignment = alignment self.spacing = spacing + if let margins { + self.layoutMargins = margins + self.isLayoutMarginsRelativeArrangement = true + } } } From f27076338990bb2e94dc306fa76f3ed09e526c9c Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:45:44 +0700 Subject: [PATCH 08/13] Add more shortcuts --- .../Shortcuts/ContainerShortcuts.swift | 51 ++++++ .../Shortcuts/RelationShortcuts.swift | 164 ++++++++++++++++++ .../Shortcuts/StackedShortcuts.swift | 143 +++++++++++++++ 3 files changed, 358 insertions(+) create mode 100644 Draftsman/Classes/Utilities/Shortcuts/ContainerShortcuts.swift create mode 100644 Draftsman/Classes/Utilities/Shortcuts/RelationShortcuts.swift create mode 100644 Draftsman/Classes/Utilities/Shortcuts/StackedShortcuts.swift diff --git a/Draftsman/Classes/Utilities/Shortcuts/ContainerShortcuts.swift b/Draftsman/Classes/Utilities/Shortcuts/ContainerShortcuts.swift new file mode 100644 index 0000000..e31b01f --- /dev/null +++ b/Draftsman/Classes/Utilities/Shortcuts/ContainerShortcuts.swift @@ -0,0 +1,51 @@ +// +// ContainerShortcuts.swift +// Draftsman +// +// Created by Nayanda Haberty on 12/1/23. +// + +import Foundation +#if canImport(UIKit) +import UIKit + +public final class Margined: LayoutDraft { + + public init(by margins: UIEdgeInsets, _ marginedDraft: () -> LayoutDraft) { + let container = UIView() + container.backgroundColor = .clear + super.init(view: container) + insert { + marginedDraft().fillParent().offsetted(using: margins) + } + } + + public init(by margins: UIEdgeInsets, _ marginedRecoverable: () -> ConstraintBuilderRootRecoverable>) { + let container = UIView() + container.backgroundColor = .clear + super.init(view: container) + insert { + marginedRecoverable().fillParent().offsetted(using: margins) + } + } +} + +extension Margined { + + public convenience init(by margins: UIEdgeInsets, _ marginedView: () -> MarginedView) { + self.init(by: margins) { marginedView().drf } + } + + public convenience init(by margin: CGFloat, _ marginedView: () -> MarginedView) { + self.init(by: UIEdgeInsets(insets: margin), marginedView) + } + + public convenience init(by margin: CGFloat, _ marginedDraft: () -> LayoutDraft) { + self.init(by: UIEdgeInsets(insets: margin), marginedDraft) + } + + public convenience init(by margin: CGFloat, _ marginedRecoverable: () -> ConstraintBuilderRootRecoverable>) { + self.init(by: UIEdgeInsets(insets: margin), marginedRecoverable) + } +} +#endif diff --git a/Draftsman/Classes/Utilities/Shortcuts/RelationShortcuts.swift b/Draftsman/Classes/Utilities/Shortcuts/RelationShortcuts.swift new file mode 100644 index 0000000..c76ba49 --- /dev/null +++ b/Draftsman/Classes/Utilities/Shortcuts/RelationShortcuts.swift @@ -0,0 +1,164 @@ +// +// File.swift +// +// +// Created by Nayanda Haberty on 9/1/23. +// + +import Foundation +#if canImport(UIKit) +import UIKit + +extension ViewDraft where Self: ViewPlanBuilder, Self: LayoutAnchor, Self.Layout: UIView { + + @inlinable public func fillParent() -> QuadAnchorRelation { + edges.equal(with: .parent) + } + + @inlinable public func fillSafeArea() -> QuadAnchorRelation { + edges.equal(with: .safeArea) + } + + @inlinable public func matchParentH() -> PairAnchorRelation { + horizontal.equal(with: .parent) + } + + @inlinable public func matchParentV() -> PairAnchorRelation { + vertical.equal(with: .parent) + } + + @inlinable public func matchSafeAreaH() -> PairAnchorRelation { + horizontal.equal(with: .safeArea) + } + + @inlinable public func matchSafeAreaV() -> PairAnchorRelation { + vertical.equal(with: .safeArea) + } + + @inlinable public func matchParentSize() -> SizeAnchorRelation { + size.equal(with: .parent) + } + + @inlinable public func centered() -> AxisAnchorRelation { + center.equal(with: .parent) + } + + @inlinable public func centeredH() -> SingleAnchorRelation { + centerX.equal(with: .parent) + } + + @inlinable public func centeredV() -> SingleAnchorRelation { + centerY.equal(with: .parent) + } + + @inlinable public func onTopOfKeyboard() -> SingleAnchorRelation { + bottom.equal(with: .top(of: .keyboard)) + } + + @inlinable public func cornered(at position: CornerPosition) -> AxisAnchorRelation { + switch position { + case .topLeft: + return top.left.equal(with: .parent) + case .topLeading: + return top.leading.equal(with: .parent) + case .topRight: + return top.right.equal(with: .parent) + case .topTrailing: + return top.trailing.equal(with: .parent) + case .bottomLeft: + return bottom.left.equal(with: .parent) + case .bottomLeading: + return bottom.leading.equal(with: .parent) + case .bottomRight: + return bottom.right.equal(with: .parent) + case .bottomTrailing: + return bottom.trailing.equal(with: .parent) + } + } + + @inlinable public func widthMatchHeight() -> DimensionAnchorRelation { + width.equal(with: .height(of: .mySelf)) + } + + @inlinable public func heightMatchWidth() -> DimensionAnchorRelation { + height.equal(with: .width(of: .mySelf)) + } + + @inlinable public func sized(_ size: CGSize) -> SizeAnchorConstant { + self.size.equal(with: size) + } +} + +extension ConstraintBuilderRootRecoverable where Root: ViewDraft, Root.Layout: UIView { + @inlinable public func fillParent() -> QuadAnchorRelation { + backToRoot { $0.fillParent() } + } + + @inlinable public func fillSafeArea() -> QuadAnchorRelation { + backToRoot { $0.fillSafeArea() } + } + + @inlinable public func matchParentH() -> PairAnchorRelation { + backToRoot { $0.matchParentH() } + } + + @inlinable public func matchParentV() -> PairAnchorRelation { + backToRoot { $0.matchParentV() } + } + + @inlinable public func matchSafeAreaH() -> PairAnchorRelation { + backToRoot { $0.matchSafeAreaH() } + } + + @inlinable public func matchSafeAreaV() -> PairAnchorRelation { + backToRoot { $0.matchSafeAreaV() } + } + + @inlinable func matchParentSize() -> SizeAnchorRelation { + backToRoot { $0.matchParentSize() } + } + + @inlinable public func centered() -> AxisAnchorRelation { + backToRoot { $0.centered() } + } + + @inlinable public func centeredH() -> SingleAnchorRelation { + backToRoot { $0.centeredH() } + } + + @inlinable public func centeredV() -> SingleAnchorRelation { + backToRoot { $0.centeredV() } + } + + @inlinable public func onTopOfKeyboard() -> SingleAnchorRelation { + backToRoot { $0.onTopOfKeyboard() } + } + + @inlinable public func cornered(at position: CornerPosition) -> AxisAnchorRelation { + backToRoot { $0.cornered(at: position) } + } + + @inlinable public func widthMatchHeight() -> DimensionAnchorRelation { + backToRoot { $0.widthMatchHeight() } + } + + @inlinable public func heightMatchWidth() -> DimensionAnchorRelation { + backToRoot { $0.heightMatchWidth() } + } + + @inlinable public func sized(_ size: CGSize) -> SizeAnchorConstant { + backToRoot { $0.sized(size) } + } +} + +public enum CornerPosition { + case topLeft + case topLeading + case topRight + case topTrailing + case bottomLeft + case bottomLeading + case bottomRight + case bottomTrailing +} +#endif diff --git a/Draftsman/Classes/Utilities/Shortcuts/StackedShortcuts.swift b/Draftsman/Classes/Utilities/Shortcuts/StackedShortcuts.swift new file mode 100644 index 0000000..55e6600 --- /dev/null +++ b/Draftsman/Classes/Utilities/Shortcuts/StackedShortcuts.swift @@ -0,0 +1,143 @@ +// +// File.swift +// +// +// Created by Nayanda Haberty on 9/1/23. +// + +import Foundation +#if canImport(UIKit) +import UIKit + +// MARK: AxisStacked + +public class AxisStacked: LayoutDraft { + + public class var axis: NSLayoutConstraint.Axis { fatalError("Please override the axis") } + + public init(_ stack: UIStackView = UIStackView(), @LayoutPlan _ layouter: () -> ViewPlan) { + stack.axis = Self.axis + super.init(view: stack) + insertStacked(layouter) + } +} + +extension AxisStacked { + + public convenience init( + margins: UIEdgeInsets? = nil, + distribution: UIStackView.Distribution = .fill, + alignment: UIStackView.Alignment = .fill, + spacing: CGFloat = .zero, + @LayoutPlan _ layouter: () -> ViewPlan) { + let stack = UIStackView( + axis: Self.axis, + margins: margins, + distribution: distribution, + alignment: alignment, + spacing: spacing + ) + self.init(stack, layouter) + } + + public convenience init( + margin: CGFloat, + distribution: UIStackView.Distribution = .fill, + alignment: UIStackView.Alignment = .fill, + spacing: CGFloat = .zero, + @LayoutPlan _ layouter: () -> ViewPlan) { + let stack = UIStackView( + axis: Self.axis, + margins: UIEdgeInsets(insets: margin), + distribution: distribution, + alignment: alignment, + spacing: spacing + ) + self.init(stack, layouter) + } +} + +// MARK: HStacked + +public final class HStacked: AxisStacked { + public override class var axis: NSLayoutConstraint.Axis { .horizontal } + + public override init(_ stack: UIStackView = UIStackView(), @LayoutPlan _ layouter: () -> ViewPlan) { + super.init(stack, layouter) + } +} + +// MARK: VStacked + +public final class VStacked: AxisStacked { + public override class var axis: NSLayoutConstraint.Axis { .vertical } + + public override init(_ stack: UIStackView, @LayoutPlan _ layouter: () -> ViewPlan) { + super.init(stack, layouter) + } +} + +// MARK: AxisScrollableStacked + +public class AxisScrollableStacked: LayoutDraft { + + class var axis: NSLayoutConstraint.Axis { fatalError("Please override the axis") } + + public init(_ stack: ScrollableStackView = ScrollableStackView(), @LayoutPlan _ layouter: () -> ViewPlan) { + stack.axis = Self.axis + super.init(view: stack) + insertStacked(layouter) + } +} + +extension AxisScrollableStacked { + + public convenience init( + margins: UIEdgeInsets? = nil, + alignment: UIStackView.Alignment = .center, + spacing: CGFloat = .zero, + @LayoutPlan _ layouter: () -> ViewPlan) { + let stack = ScrollableStackView( + axis: Self.axis, + margins: margins, + alignment: alignment, + spacing: spacing + ) + self.init(stack, layouter) + } + + public convenience init( + margin: CGFloat, + alignment: UIStackView.Alignment = .center, + spacing: CGFloat = .zero, + @LayoutPlan _ layouter: () -> ViewPlan) { + let stack = ScrollableStackView( + axis: Self.axis, + margins: UIEdgeInsets(insets: margin), + alignment: alignment, + spacing: spacing + ) + self.init(stack, layouter) + } +} + +// MARK: HScrollableStacked + +public final class HScrollableStacked: AxisScrollableStacked { + public override class var axis: NSLayoutConstraint.Axis { .horizontal } + + public override init(_ stack: ScrollableStackView = ScrollableStackView(), @LayoutPlan _ layouter: () -> ViewPlan) { + super.init(stack, layouter) + } +} + +// MARK: VScrollableStacked + +public final class VScrollableStacked: AxisScrollableStacked { + public override class var axis: NSLayoutConstraint.Axis { .vertical } + + public override init(_ stack: ScrollableStackView = ScrollableStackView(), @LayoutPlan _ layouter: () -> ViewPlan) { + super.init(stack, layouter) + } +} +#endif From 7edacc3e1e1d03300396c2d16d481eaa5c8361ef Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:46:04 +0700 Subject: [PATCH 09/13] Refactor and make clavier keyboard as default --- Draftsman/Classes/Anchors/Base/DimensionAnchor.swift | 2 +- .../Classes/Anchors/ConstraintBuilderRootRecoverable.swift | 3 +++ Draftsman/Classes/Draft/LayoutDraft.swift | 5 +++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Draftsman/Classes/Anchors/Base/DimensionAnchor.swift b/Draftsman/Classes/Anchors/Base/DimensionAnchor.swift index 7671ae9..06d9ecf 100644 --- a/Draftsman/Classes/Anchors/Base/DimensionAnchor.swift +++ b/Draftsman/Classes/Anchors/Base/DimensionAnchor.swift @@ -45,7 +45,7 @@ extension DimensionAnchor where Root.Layout: UIView, Root: ViewPlanBuilder { create(.lessThanOrEqual, to: otherAnchor) } - func create(_ relation: NSLayoutConstraint.Relation, to otherAnchor: NSLayoutDimension) -> DimensionAnchorRelation { + func create(_ relation: NSLayoutConstraint.Relation, to otherAnchor: NSLayoutDimension) -> DimensionAnchorRelation { .init( root: root, firstAnchor: anchor.extractable, diff --git a/Draftsman/Classes/Anchors/ConstraintBuilderRootRecoverable.swift b/Draftsman/Classes/Anchors/ConstraintBuilderRootRecoverable.swift index f304b21..50ee0a3 100644 --- a/Draftsman/Classes/Anchors/ConstraintBuilderRootRecoverable.swift +++ b/Draftsman/Classes/Anchors/ConstraintBuilderRootRecoverable.swift @@ -15,6 +15,7 @@ public class ConstraintBuilderRootRecoverable ViewPlan) -> Root { backToRoot { $0.insert(layouter) } } @@ -56,6 +58,7 @@ extension ConstraintBuilderRootRecoverable where Root: ViewDraft { } extension ConstraintBuilderRootRecoverable where Root: StackDraft { + @discardableResult @inlinable public func insertStacked(@LayoutPlan _ layouter: () -> ViewPlan) -> Root { backToRoot { $0.insertStacked(layouter) } } diff --git a/Draftsman/Classes/Draft/LayoutDraft.swift b/Draftsman/Classes/Draft/LayoutDraft.swift index c41bb20..2b45b2d 100644 --- a/Draftsman/Classes/Draft/LayoutDraft.swift +++ b/Draftsman/Classes/Draft/LayoutDraft.swift @@ -8,6 +8,7 @@ import Foundation #if canImport(UIKit) import UIKit +import Clavier open class LayoutDraft: ViewPlanBuilder, ViewDraft { public var underlyingView: View @@ -20,6 +21,7 @@ open class LayoutDraft: ViewPlanBuilder, ViewDraft { public init(view: View, plans: [ViewDraft] = []) { self.underlyingView = view + view.useAppleKeyboardLayoutGuideIfAvailable = false super.init(plans: plans) } @@ -47,6 +49,7 @@ open class LayoutDraft: ViewPlanBuilder, ViewDraft { return constraints } + @discardableResult public func insert(@LayoutPlan _ layouter: () -> ViewPlan) -> Self { let viewPlan = layouter() plans.append(contentsOf: viewPlan.insertablePlans) @@ -64,6 +67,7 @@ open class LayoutDraft: ViewPlanBuilder, ViewDraft { guard let stack = context.currentView as? StackCompatible else { return [] } return buildSubview(plans: stackPlans, for: context) { stack.addArrangedSubview($0) + ($0 as? SpacerView)?.apply(axis: stack.axis) } } } @@ -75,6 +79,7 @@ extension LayoutDraft: StackDraft where View: StackCompatible { self.stackPlans = stackPlans } + @discardableResult public func insertStacked(@LayoutPlan _ layouter: () -> ViewPlan) -> Self { let viewPlan = layouter() stackPlans.append(contentsOf: viewPlan.insertablePlans) From 855375060b3f853ff9fe21a06353371c31cac455 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:46:15 +0700 Subject: [PATCH 10/13] Update example --- Example/Draftsman.xcodeproj/project.pbxproj | 122 +++++++++--------- .../xcshareddata/IDEWorkspaceChecks.plist | 8 ++ .../Draftsman/Collection/CollectionCell.swift | 26 ++-- .../Collection/CollectionViewController.swift | 12 +- .../Draftsman/Field/FieldViewController.swift | 32 ++--- Example/Draftsman/Field/TypingField.swift | 15 +-- .../Fragment/FragmentViewController.swift | 48 ++----- Example/Draftsman/Fragment/View.swift | 26 ++-- Example/Draftsman/MainViewController.swift | 28 ++-- Example/Draftsman/Table/TableCell.swift | 24 ++-- 10 files changed, 141 insertions(+), 200 deletions(-) create mode 100644 Example/Draftsman.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Example/Draftsman.xcodeproj/project.pbxproj b/Example/Draftsman.xcodeproj/project.pbxproj index 279d335..1d80030 100644 --- a/Example/Draftsman.xcodeproj/project.pbxproj +++ b/Example/Draftsman.xcodeproj/project.pbxproj @@ -11,8 +11,8 @@ 607FACD81AFB9204008FA782 /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 607FACD71AFB9204008FA782 /* MainViewController.swift */; }; 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDC1AFB9204008FA782 /* Images.xcassets */; }; 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 607FACDE1AFB9204008FA782 /* LaunchScreen.xib */; }; - 7B36887CF43520F1127F0D60 /* Pods_Draftsman_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 689F65CC83EDD28692981986 /* Pods_Draftsman_Tests.framework */; }; - AB4D2D33F426881B3EEE6BAE /* Pods_Draftsman_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D67A2DD748195AA8882D2C04 /* Pods_Draftsman_Example.framework */; }; + 6C46198562F152BDBA98DC84 /* Pods_Draftsman_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4A43813E4194728B2B5BBDA7 /* Pods_Draftsman_Tests.framework */; }; + 90188CD83A02B5F4B075A50E /* Pods_Draftsman_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58F0DD0BC0DE4B115C948F94 /* Pods_Draftsman_Example.framework */; }; BB2A58E9286D884800D749C1 /* TriConstraintsCreationSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB2A58E8286D884800D749C1 /* TriConstraintsCreationSpec.swift */; }; BB3A24342696C17800B8EBA0 /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3A24332696C17800B8EBA0 /* TableViewController.swift */; }; BB3A24362696C18100B8EBA0 /* TableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB3A24352696C18100B8EBA0 /* TableCell.swift */; }; @@ -39,8 +39,8 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0DCF606F0CEF54F076A1BFC9 /* Pods-Draftsman_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Tests.debug.xcconfig"; path = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.debug.xcconfig"; sourceTree = ""; }; - 325D86E7F9CF6572BD001BA8 /* Pods-Draftsman_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Tests.release.xcconfig"; path = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.release.xcconfig"; sourceTree = ""; }; + 4A43813E4194728B2B5BBDA7 /* Pods_Draftsman_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Draftsman_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 58F0DD0BC0DE4B115C948F94 /* Pods_Draftsman_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Draftsman_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD01AFB9204008FA782 /* Draftsman_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Draftsman_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACD41AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 607FACD51AFB9204008FA782 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -49,8 +49,9 @@ 607FACDF1AFB9204008FA782 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; 607FACE51AFB9204008FA782 /* Draftsman_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Draftsman_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 607FACEA1AFB9204008FA782 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 625F2AEFA617EF9E4711AB4B /* Pods-Draftsman_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Example.release.xcconfig"; path = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.release.xcconfig"; sourceTree = ""; }; - 689F65CC83EDD28692981986 /* Pods_Draftsman_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Draftsman_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 847E8D42062AB154810BF9D2 /* Pods-Draftsman_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Example.release.xcconfig"; path = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.release.xcconfig"; sourceTree = ""; }; + 983514DAC95FAC07C2468FCA /* Pods-Draftsman_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Tests.release.xcconfig"; path = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.release.xcconfig"; sourceTree = ""; }; + 9C76CFA222BDDB924FBE5833 /* Pods-Draftsman_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Tests.debug.xcconfig"; path = "Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests.debug.xcconfig"; sourceTree = ""; }; B1D647AACECE19977542CBD4 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; BB2A58E8286D884800D749C1 /* TriConstraintsCreationSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TriConstraintsCreationSpec.swift; sourceTree = ""; }; BB3A24332696C17800B8EBA0 /* TableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; }; @@ -67,8 +68,7 @@ BBC9C43E277B0D1000D8A6F5 /* FragmentViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FragmentViewController.swift; sourceTree = ""; }; BBFD5D3B283D1CDD0006107A /* PairConstraintsCreationSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PairConstraintsCreationSpec.swift; sourceTree = ""; }; BD0E959F2DB3449C143219E9 /* Draftsman.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Draftsman.podspec; path = ../Draftsman.podspec; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - BEBE17ACCF370BCD99DDE61E /* Pods-Draftsman_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Example.debug.xcconfig"; path = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.debug.xcconfig"; sourceTree = ""; }; - D67A2DD748195AA8882D2C04 /* Pods_Draftsman_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Draftsman_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E9112FB060A40CD3B47893EA /* Pods-Draftsman_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Draftsman_Example.debug.xcconfig"; path = "Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example.debug.xcconfig"; sourceTree = ""; }; F877247A03C8FAC0622D7947 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; /* End PBXFileReference section */ @@ -77,7 +77,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AB4D2D33F426881B3EEE6BAE /* Pods_Draftsman_Example.framework in Frameworks */, + 90188CD83A02B5F4B075A50E /* Pods_Draftsman_Example.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -85,7 +85,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7B36887CF43520F1127F0D60 /* Pods_Draftsman_Tests.framework in Frameworks */, + 6C46198562F152BDBA98DC84 /* Pods_Draftsman_Tests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -100,7 +100,7 @@ 607FACE81AFB9204008FA782 /* Tests */, 607FACD11AFB9204008FA782 /* Products */, CA6E9579A694BD1A448DF797 /* Pods */, - E47DEAEB28F4105A261B2CF0 /* Frameworks */, + 73D068D7C495A2D1E9DEE882 /* Frameworks */, ); sourceTree = ""; }; @@ -170,6 +170,15 @@ name = "Podspec Metadata"; sourceTree = ""; }; + 73D068D7C495A2D1E9DEE882 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 58F0DD0BC0DE4B115C948F94 /* Pods_Draftsman_Example.framework */, + 4A43813E4194728B2B5BBDA7 /* Pods_Draftsman_Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; BB3A24322696C15900B8EBA0 /* Table */ = { isa = PBXGroup; children = ( @@ -209,23 +218,14 @@ CA6E9579A694BD1A448DF797 /* Pods */ = { isa = PBXGroup; children = ( - BEBE17ACCF370BCD99DDE61E /* Pods-Draftsman_Example.debug.xcconfig */, - 625F2AEFA617EF9E4711AB4B /* Pods-Draftsman_Example.release.xcconfig */, - 0DCF606F0CEF54F076A1BFC9 /* Pods-Draftsman_Tests.debug.xcconfig */, - 325D86E7F9CF6572BD001BA8 /* Pods-Draftsman_Tests.release.xcconfig */, + E9112FB060A40CD3B47893EA /* Pods-Draftsman_Example.debug.xcconfig */, + 847E8D42062AB154810BF9D2 /* Pods-Draftsman_Example.release.xcconfig */, + 9C76CFA222BDDB924FBE5833 /* Pods-Draftsman_Tests.debug.xcconfig */, + 983514DAC95FAC07C2468FCA /* Pods-Draftsman_Tests.release.xcconfig */, ); path = Pods; sourceTree = ""; }; - E47DEAEB28F4105A261B2CF0 /* Frameworks */ = { - isa = PBXGroup; - children = ( - D67A2DD748195AA8882D2C04 /* Pods_Draftsman_Example.framework */, - 689F65CC83EDD28692981986 /* Pods_Draftsman_Tests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -233,12 +233,12 @@ isa = PBXNativeTarget; buildConfigurationList = 607FACEF1AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Draftsman_Example" */; buildPhases = ( - 075B326C8CCFC668C31443F8 /* [CP] Check Pods Manifest.lock */, + 72F98E1EA2CF8D2CBCB1B200 /* [CP] Check Pods Manifest.lock */, 73D5835728E440D20000AB23 /* Swiftlint */, 607FACCC1AFB9204008FA782 /* Sources */, 607FACCD1AFB9204008FA782 /* Frameworks */, 607FACCE1AFB9204008FA782 /* Resources */, - 2E799402E86C58A70D2F58E0 /* [CP] Embed Pods Frameworks */, + 9A6E10CD389DFDFB1CE87721 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -253,11 +253,11 @@ isa = PBXNativeTarget; buildConfigurationList = 607FACF21AFB9204008FA782 /* Build configuration list for PBXNativeTarget "Draftsman_Tests" */; buildPhases = ( - 5AF17DF3682142E3BC99CC9A /* [CP] Check Pods Manifest.lock */, + 6AA9E6A23A2D97EC9EA1663A /* [CP] Check Pods Manifest.lock */, 607FACE11AFB9204008FA782 /* Sources */, 607FACE21AFB9204008FA782 /* Frameworks */, 607FACE31AFB9204008FA782 /* Resources */, - DD2A791EBBB6492E3868180C /* [CP] Embed Pods Frameworks */, + 43C8D14B2BCDF10EBF6C874F /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,51 +330,49 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 075B326C8CCFC668C31443F8 /* [CP] Check Pods Manifest.lock */ = { + 43C8D14B2BCDF10EBF6C874F /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", + "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", ); + name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Draftsman_Example-checkManifestLockResult.txt", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 2E799402E86C58A70D2F58E0 /* [CP] Embed Pods Frameworks */ = { + 6AA9E6A23A2D97EC9EA1663A /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Builder/Builder.framework", - "${BUILT_PRODUCTS_DIR}/Clavier/Clavier.framework", - "${BUILT_PRODUCTS_DIR}/Draftsman/Draftsman.framework", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Builder.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Clavier.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Draftsman.framework", + "$(DERIVED_FILE_DIR)/Pods-Draftsman_Tests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 5AF17DF3682142E3BC99CC9A /* [CP] Check Pods Manifest.lock */ = { + 72F98E1EA2CF8D2CBCB1B200 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -389,7 +387,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Draftsman_Tests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Draftsman_Example-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -414,24 +412,26 @@ shellPath = /bin/sh; shellScript = "export PATH=\"$PATH:/opt/homebrew/bin\"\nif which swiftlint > /dev/null; then\n swiftlint --config ../.swiftlint.yml\nelse\n echo \"warning: SwiftLint not installed, download from https://github.com/realm/SwiftLint\"\nfi\n"; }; - DD2A791EBBB6492E3868180C /* [CP] Embed Pods Frameworks */ = { + 9A6E10CD389DFDFB1CE87721 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-frameworks.sh", - "${BUILT_PRODUCTS_DIR}/Nimble/Nimble.framework", - "${BUILT_PRODUCTS_DIR}/Quick/Quick.framework", + "${PODS_ROOT}/Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-frameworks.sh", + "${BUILT_PRODUCTS_DIR}/Builder/Builder.framework", + "${BUILT_PRODUCTS_DIR}/Clavier/Clavier.framework", + "${BUILT_PRODUCTS_DIR}/Draftsman/Draftsman.framework", ); name = "[CP] Embed Pods Frameworks"; outputPaths = ( - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Nimble.framework", - "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Quick.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Builder.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Clavier.framework", + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Draftsman.framework", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Draftsman_Tests/Pods-Draftsman_Tests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Draftsman_Example/Pods-Draftsman_Example-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -599,7 +599,7 @@ }; 607FACF01AFB9204008FA782 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BEBE17ACCF370BCD99DDE61E /* Pods-Draftsman_Example.debug.xcconfig */; + baseConfigurationReference = E9112FB060A40CD3B47893EA /* Pods-Draftsman_Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = Draftsman/Info.plist; @@ -615,7 +615,7 @@ }; 607FACF11AFB9204008FA782 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 625F2AEFA617EF9E4711AB4B /* Pods-Draftsman_Example.release.xcconfig */; + baseConfigurationReference = 847E8D42062AB154810BF9D2 /* Pods-Draftsman_Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; INFOPLIST_FILE = Draftsman/Info.plist; @@ -631,7 +631,7 @@ }; 607FACF31AFB9204008FA782 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0DCF606F0CEF54F076A1BFC9 /* Pods-Draftsman_Tests.debug.xcconfig */; + baseConfigurationReference = 9C76CFA222BDDB924FBE5833 /* Pods-Draftsman_Tests.debug.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( @@ -656,7 +656,7 @@ }; 607FACF41AFB9204008FA782 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 325D86E7F9CF6572BD001BA8 /* Pods-Draftsman_Tests.release.xcconfig */; + baseConfigurationReference = 983514DAC95FAC07C2468FCA /* Pods-Draftsman_Tests.release.xcconfig */; buildSettings = { CLANG_ENABLE_MODULES = YES; FRAMEWORK_SEARCH_PATHS = ( diff --git a/Example/Draftsman.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Example/Draftsman.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/Example/Draftsman.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Example/Draftsman/Collection/CollectionCell.swift b/Example/Draftsman/Collection/CollectionCell.swift index 6376ed3..45294b6 100644 --- a/Example/Draftsman/Collection/CollectionCell.swift +++ b/Example/Draftsman/Collection/CollectionCell.swift @@ -24,22 +24,18 @@ class CollectionCell: UICollectionPlannedCell { @LayoutPlan var contentViewPlan: ViewPlan { - UIImageView(image: UIImage(named: "icon_test")).drf.builder - .contentMode(.scaleAspectFit).drf - .top.horizontal.equal(with: .parent).offset(by: 12) - .width.equal(with: .height(of: .mySelf)) - UIStackView(axis: .vertical, distribution: .fillEqually, spacing: 4).drf - .bottom.horizontal.equal(with: .parent).offset(by: 12) - .top.equal(with: .bottom(of: .previous)).offset(by: 8) - .insertStacked { - stackDraft + VStacked(margins: UIEdgeInsets(insets: 12), spacing: 8) { + Margined(by: UIEdgeInsets(insets: 8)) { + UIImageView(image: UIImage(named: "icon_test")).drf.builder + .contentMode(.scaleAspectFit).drf + .widthMatchHeight() } - } - - @LayoutPlan - var stackDraft: ViewPlan { - titleLabel - subtitleLabel + VStacked(distribution: .fillEqually, spacing: 4) { + titleLabel + subtitleLabel + } + } + .fillParent() } override init(frame: CGRect) { diff --git a/Example/Draftsman/Collection/CollectionViewController.swift b/Example/Draftsman/Collection/CollectionViewController.swift index c8bcec8..e80c5fd 100644 --- a/Example/Draftsman/Collection/CollectionViewController.swift +++ b/Example/Draftsman/Collection/CollectionViewController.swift @@ -32,12 +32,8 @@ class CollectionViewController: UIViewController, Planned { .minimumInteritemSpacing(.zero) .itemSize(CGSize(width: cellWidth, height: cellWidth * 1.2)) .build() - lazy var collectionView: UICollectionView = builder( - UICollectionView( - frame: .zero, - collectionViewLayout: collectionLayout - ) - ) + + lazy var collectionView: UICollectionView = builder(UICollectionView(frame: .zero, collectionViewLayout: collectionLayout)) .backgroundColor(.white) .allowsSelection(false) .dataSource(self) @@ -46,8 +42,8 @@ class CollectionViewController: UIViewController, Planned { @LayoutPlan var viewPlan: ViewPlan { collectionView.drf - .horizontal.equal(with: .safeArea) - .vertical.equal(with: .parent) + .matchSafeAreaH() + .matchParentV() } override func viewDidLoad() { diff --git a/Example/Draftsman/Field/FieldViewController.swift b/Example/Draftsman/Field/FieldViewController.swift index 72eaca3..c8b6687 100644 --- a/Example/Draftsman/Field/FieldViewController.swift +++ b/Example/Draftsman/Field/FieldViewController.swift @@ -21,28 +21,22 @@ class FieldViewController: UIPlannedController { lazy var typingField: TypingField = .init() - lazy var baseView: UIView = UIView() - lazy var imageView: UIImageView = UIImageView(image: UIImage(named: "image_test")) - @LayoutPlan var viewPlan: ViewPlan { - baseView.drf - .centerY.lessThan(with: .parent) - .horizontal.equal(with: .safeArea).offset(by: 16) - .bottom.moreThan(to: typingField.drf.top).offset(by: 8) - .insert { - imageView.drf.builder - .contentMode(.scaleAspectFill) - .clipsToBounds(true).drf - .top.horizontal.equal(with: .parent).offset(by: 12) - .height.equal(with: .width(of: .mySelf)).multiplied(by: 0.75) - typingLabel.drf - .bottom.horizontal.equal(with: .parent).offset(by: 12) - .top.equal(with: .bottom(of: .previous)).offset(by: 8) - } + VStacked(margins: UIEdgeInsets(insets: 12), spacing: 8) { + UIImageView(image: UIImage(named: "image_test")).drf + .height.equal(with: .width(of: .mySelf)).multiplied(by: 0.75) + .builder.contentMode(.scaleAspectFill) + .clipsToBounds(true) + typingLabel + } + .centerY.lessThan(with: .parent) + .matchSafeAreaH().offset(by: 16) + .bottom.moreThan(to: typingField.drf.top).offset(by: 8) + typingField.drf - .horizontal.equal(with: .parent) - .bottom.equal(with: .top(of: .keyboard)).priority(.required) + .matchParentH() + .onTopOfKeyboard().priority(.required) } override func viewDidLoad() { diff --git a/Example/Draftsman/Field/TypingField.swift b/Example/Draftsman/Field/TypingField.swift index ada54c2..10ae8c3 100644 --- a/Example/Draftsman/Field/TypingField.swift +++ b/Example/Draftsman/Field/TypingField.swift @@ -22,14 +22,13 @@ class TypingField: UIPlannedView { @LayoutPlan var viewPlan: ViewPlan { - textField.drf - .left.vertical.equal(with: .safeArea).offset(by: 8) - .right.equal(to: button.leftAnchor).offset(by: 8) - .height.equal(to: 30) - button.drf - .right.vertical.equal(with: .safeArea).offset(by: 8) - .width.equal(to: 64) - .height.equal(to: 30) + HStacked(margins: UIEdgeInsets(insets: 8)) { + textField.drf + .height.equal(to: 30) + button.drf + .sized(CGSize(width: 64, height: 30)) + } + .fillParent() } override init(frame: CGRect) { diff --git a/Example/Draftsman/Fragment/FragmentViewController.swift b/Example/Draftsman/Fragment/FragmentViewController.swift index 8104538..82dcb14 100644 --- a/Example/Draftsman/Fragment/FragmentViewController.swift +++ b/Example/Draftsman/Fragment/FragmentViewController.swift @@ -13,8 +13,6 @@ import Builder class FragmentViewController: UIPlannedController { - lazy var scrollView: UIScrollView = UIScrollView() - lazy var stackView: UIStackView = VStackView(distribution: .equalSpacing) lazy var buttonAdd: UIButton = builder(UIButton()) .layer.cornerRadius(8) .backgroundColor(.orange) @@ -23,62 +21,36 @@ class FragmentViewController: UIPlannedController { .layer.cornerRadius(8) .backgroundColor(.orange) .build() - lazy var buttonStack: UIStackView = VStackView( - distribution: .fillEqually, - spacing: 16 - ) + var fragments: [View] = [] { didSet { applyPlan() } } + var counter: Int = 0 @LayoutPlan var viewPlan: ViewPlan { - scrollView.drf - .top.horizontal.equal(with: .safeArea) - .bottom.equal(to: buttonStack.topAnchor).offset(by: 16) - .insert { - scrollContent + VStacked(spacing: 16) { + VScrollableStacked(alignment: .fill) { + fragments.isEmpty ? emptyContent: fragments } - buttonStack.drf - .bottom.horizontal.equal(with: .safeArea).offset(by: 16) - .insertStacked { + VStacked(margins: UIEdgeInsets(insets: 16), distribution: .fillEqually, spacing: 16) { buttonAdd buttonRemove } - } - - @LayoutPlan - var scrollContent: ViewPlan { - stackView.drf - .width.equal(with: .parent) - .edges.equal(with: .parent) - .insertStacked { - if fragments.isEmpty { - emptyContent - } - for fragment in fragments { - fragment - } - } + } + .fillParent() } @LayoutPlan var emptyContent: ViewPlan { - spacing + SpacerView(60) UILabel().drf.builder .text("NO FRAGMENTS") .textAlignment(.center) - spacing - } - - @LayoutPlan - var spacing: ViewPlan { - UIView().drf - .height.equal(to: 60) - .builder.backgroundColor(.clear) + SpacerView(60) } override func viewDidLoad() { diff --git a/Example/Draftsman/Fragment/View.swift b/Example/Draftsman/Fragment/View.swift index c7e1c34..7d778f8 100644 --- a/Example/Draftsman/Fragment/View.swift +++ b/Example/Draftsman/Fragment/View.swift @@ -21,27 +21,17 @@ class View: UIPlannedView { .font(.systemFont(ofSize: 12)) .build() - lazy var imageView: UIImageView = UIImageView(image: UIImage(named: "icon_test")) - lazy var stackView: UIStackView = UIStackView(axis: .vertical, distribution: .fillEqually, spacing: 4) - @LayoutPlan var viewPlan: ViewPlan { - imageView.drf.builder - .contentMode(.scaleAspectFit).drf - .left.vertical.equal(with: .parent).offset(by: 12) - .size.equal(with: CGSize(sides: 56)) - stackView.drf - .right.vertical.equal(with: .parent).offset(by: 12) - .left.equal(with: .right(of: .previous)).offset(by: 8) - .insertStacked { - stackPlan + HStacked(margins: UIEdgeInsets(insets: 12), spacing: 8) { + UIImageView(image: UIImage(named: "icon_test")).drf + .sized(CGSize(sides: 56)) + VStacked(distribution: .fillEqually, spacing: 4) { + titleLabel + subtitleLabel } - } - - @LayoutPlan - var stackPlan: ViewPlan { - titleLabel - subtitleLabel + } + .fillParent() } override init(frame: CGRect) { diff --git a/Example/Draftsman/MainViewController.swift b/Example/Draftsman/MainViewController.swift index 4b77390..db33682 100644 --- a/Example/Draftsman/MainViewController.swift +++ b/Example/Draftsman/MainViewController.swift @@ -32,26 +32,18 @@ class MainViewController: UIPlannedController { .backgroundColor(.orange) .build() - lazy var stackView: UIStackView = VStackView(spacing: 32) - @LayoutPlan var viewPlan: ViewPlan { - stackView.drf - .center.equal(with: .parent) - .horizontal.equal(with: .safeArea).offset(by: 16) - .vertical.moreThan(with: .safeArea).offset(by: 16) - .resistVerticalExpansion(.required) - .insertStacked { - stackPlan - } - } - - @LayoutPlan - var stackPlan: ViewPlan { - buttonToTable - buttonToCollection - buttonToField - buttonToFragment + VStacked(spacing: 32) { + buttonToTable + buttonToCollection + buttonToField + buttonToFragment + } + .centered() + .matchSafeAreaH().offset(by: 16) + .vertical.moreThan(with: .safeArea).offset(by: 16) + .resistVerticalExpansion(.required) } override func viewDidLoad() { diff --git a/Example/Draftsman/Table/TableCell.swift b/Example/Draftsman/Table/TableCell.swift index e7e9aef..b220b22 100644 --- a/Example/Draftsman/Table/TableCell.swift +++ b/Example/Draftsman/Table/TableCell.swift @@ -24,22 +24,16 @@ class TableCell: UITablePlannedCell { @LayoutPlan var contentViewPlan: ViewPlan { - UIImageView(image: UIImage(named: "icon_test")).drf.builder - .contentMode(.scaleAspectFit).drf - .left.vertical.equal(with: .parent).offset(by: 12) - .size.equal(with: CGSize(sides: 56)) - UIStackView(axis: .vertical, distribution: .fillEqually, spacing: 4).drf - .right.vertical.equal(with: .parent).offset(by: 12) - .left.equal(with: .right(of: .previous)).offset(by: 8) - .insertStacked { - stackPlan + HStacked(margins: UIEdgeInsets(insets: 12), spacing: 8) { + UIImageView(image: UIImage(named: "icon_test")).drf + .widthMatchHeight() + .builder.contentMode(.scaleAspectFit).drf + VStacked(margins: UIEdgeInsets(insets: 8), distribution: .fillEqually) { + titleLabel + subtitleLabel } - } - - @LayoutPlan - var stackPlan: ViewPlan { - titleLabel - subtitleLabel + } + .fillParent() } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { From 035b998f19dda973b8e2fa0e05bc684a29e2b53c Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:46:23 +0700 Subject: [PATCH 11/13] Update README --- README.md | 265 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 202 insertions(+), 63 deletions(-) diff --git a/README.md b/README.md index 0558a73..70dfc3b 100644 --- a/README.md +++ b/README.md @@ -112,21 +112,20 @@ class MyViewController: UIViewController, Planned { @LayoutPlan var viewPlan: ViewPlan { - UIStackView(axis: .vertical, spacing: 32).drf - .center.equal(with: .parent) - .horizontal.equal(with: .safeArea).offset(by: 16) - .vertical.moreThan(with: .safeArea).offset(by: 16) - .insertStacked { - if models.isEmpty { - MyView() - MyOtherView() - SomeOtherView() - } else { - for model in models { - MyModeledView(model) - } + VStacked(spacing: 32) { + if models.isEmpty { + MyView() + MyOtherView() + SomeOtherView() + } else { + for model in models { + MyModeledView(model) } } + } + .centered() + .matchSafeAreaH().offset(by: 16) + .vertical.moreThan(with: .safeArea).offset(by: 16) } override func viewDidLoad() { @@ -147,13 +146,12 @@ class MyViewController: UIViewController, Planned { @LayoutPlan var viewPlan: ViewPlan { - UIStackView(axis: .vertical, spacing: 32).drf - .center.equal(with: .parent) - .horizontal.equal(with: .safeArea).offset(by: 16) - .vertical.moreThan(with: .safeArea).offset(by: 16) - .insertStacked { - stackPlan - } + VStacked(spacing: 32) { + stackPlan + } + .centered() + .matchSafeAreaH().offset(by: 16) + .vertical.moreThan(with: .safeArea).offset(by: 16) } @LayoutPlan @@ -424,29 +422,175 @@ myView.drf available explicit anchors are: -- **left(of: )** -- **leading(of: )** -- **right(of: )** -- **trailing(of: )** -- **centerX(of: )** -- **top(of: )** -- **bottom(of: )** -- **centerY(of: )** -- **topLeft(of: )** -- **topLeading(of: )** -- **topRight(of: )** -- **topTrailing(of: )** -- **bottomLeft(of: )** -- **bottomLeading(of: )** -- **bottomRight(of: )** -- **bottomTrailing(of: )** -- **center(of: )** -- **centerLeft(of: )** -- **centerLeading(of: )** -- **centerRight(of: )** -- **centerTrailing(of: )** -- **centerTop(of: )** -- **centerBottom(of: )** +- **left(of:)** +- **leading(of:)** +- **right(of:)** +- **trailing(of:)** +- **centerX(of:)** +- **top(of:)** +- **bottom(of:)** +- **centerY(of:)** +- **topLeft(of:)** +- **topLeading(of:)** +- **topRight(of:)** +- **topTrailing(of:)** +- **bottomLeft(of:)** +- **bottomLeading(of:)** +- **bottomRight(of:)** +- **bottomTrailing(of:)** +- **center(of:)** +- **centerLeft(of:)** +- **centerLeading(of:)** +- **centerRight(of:)** +- **centerTrailing(of:)** +- **centerTop(of:)** +- **centerBottom(of:)** + +### Layout Constraints Shortcuts + +There are several shortcuts for building a layout constraints that can be accessed via `drf`: + +- **fillParent()** which shortcuts of `edges.equal(with: .parent)` +- **fillSafeArea()** which shortcuts of `edges.equal(with: .safeArea)` +- **matchParentH()** which shortcuts of `horizontal.equal(with: .parent)` +- **matchParentV()** which shortcuts of `vertical.equal(with: .parent)` +- **matchSafeAreaH()** which shortcuts of `horizontal.equal(with: .safeArea)` +- **matchSafeAreaV()** which shortcuts of `vertical.equal(with: .safeArea)` +- **matchParentSize()** which shortcuts of `size.equal(with: .parent)` +- **centered()** which shortcuts of `center.equal(with: .parent)` +- **centeredH()** which shortcuts of `centerX.equal(with: .parent)` +- **centeredV()** which shortcuts of `centerY.equal(with: .parent)` +- **cornered(at:)** which shortcuts of `top.left.equal(with: .parent)`, or any other corner +- **widthMatchHeight()** which shortcuts of `width.equal(with: .height(of: .mySelf))` +- **heightMatchWidth()** which shortcuts of `height.equal(with: .width(of: .mySelf))` +- **sized(_:)** which shortcuts of `size.equal(with: givenSize)` + +*** + +## Custom View + +### SpacerView + +You can use SpacerView as a Spacer for UIStackView content: + +```swift +UIScrollView().drf.insertStacked { + MyView() + SpacerView(12) + OtherView() +} +``` + +or leave the init empty if you want the spacer size to be dynamic: + +```swift +UIScrollView().drf.insertStacked { + MyView() + SpacerView() + OtherView() +} +``` + +### ScrollableStackView + +There are custom `UIView` named `ScrollableStackView` which basically a `UIStackView` inside `UIScrollView`. You can use it if you need to stackView that can be scrolled if the content is bigger than the container. It has 2 public init that can be used: + +- **init(frame: CGRect)** +- **init(frame: CGRect = .zero, axis: NSLayoutConstraint.Axis, margins: UIEdgeInsets? = nil, alignment: UIStackView.Alignment = .center, spacing: CGFloat = .zero)** + +Other than that, it can be used like regular `UIStackView` and regular `UIScrollView` minus capability to change its distribution, since it needed to make sure the view behave like what it should. + +*** + +## Layout Helper + +There are some helper that can be used if you want your `viewPlan` shorter and less explicit. This helper will accept `LayoutPlan` closure so you dont need to access it via `drf` but directly on its init + +### HStacked and VStacked + +HStacked and VStacked basically an shortcut to create vertical and horizontal UIStackView without creating it explicitly. It has 3 public init that can be used: + +- **init(_ stack: UIStackView = UIStackView(), @LayoutPlan _ layouter: () -> ViewPlan) {** +- **init(margins: UIEdgeInsets? = nil, distribution: UIStackView.Distribution = .fill, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** +- **init(margin: CGFloat, distribution: UIStackView.Distribution = .fill, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** + +Example: + +```swift +VStacked(distribution: .fillEqually) { + SomeView() + MyView() + OtherView() +} +.fillParent() +``` + +This will be equivalent with: + +```swift +UIStackView(axis: .vertical, distribution: .fillEqually).drf + .fillParent() + .insertStacked { + SomeView() + MyView() + OtherView() + } +``` + +### HScrollableStacked and VScrollableStacked + +`HScrollableStacked` and `VScrollableStacked` basically an shortcut to create vertical and horizontal `ScrollableStackView` without creating it explicitly. It has 3 public init that can be used: + +- **init(_ stack: ScrollableStackView = ScrollableStackView(), @LayoutPlan _ layouter: () -> ViewPlan) {** +- **init(margins: UIEdgeInsets? = nil, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** +- **init(margin: CGFloat, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** + +Example: + +```swift +HScrollableStacked(alignment: .fill) { + SomeView() + MyView() + OtherView() +} +.fillParent() +``` + +This will be equivalent with: + +```swift +ScrollableStackView(axis: .horizontal, alignment: .fill).drf + .fillParent() + .insertStacked { + SomeView() + MyView() + OtherView() + } +``` + +### Margined + +`Margined` is an simple way to add a margin to any `UIView`. Example: + +```swift +Margined(by: 12) { + MyView() +} +.fillParent() +``` + +This will be equivalent with: + +```swift +UIView().drf.builder + .backgroundColor(.clear) + .drf.fillParent() + .insert { + MyView().fillParent().offsetted(by: 12) + } +``` + +*** ## Draftsman Planned @@ -473,15 +617,14 @@ class MyViewController: UIViewController, Planned { @LayoutPlan var viewPlan: ViewPlan { - UIStackView(axis: .vertical, spacing: 32).drf - .center.equal(with: .parent) - .horizontal.equal(with: .safeArea).offset(by: 16) - .vertical.moreThan(with: .safeArea).offset(by: 16) - .insertStacked { - MyView() - MyOtherView() - SomeOtherView() - } + VStacked(spacing: 32) { + MyView() + MyOtherView() + SomeOtherView() + } + .centered() + .matchSafeAreaH().offset(by: 16) + .vertical.moreThan(with: .safeArea).offset(by: 16) } override func viewDidLoad() { @@ -516,17 +659,14 @@ class TableCell: UITableView, PlannedCell { @LayoutPlan var contentViewPlan: ViewPlan { - UIImageView(image: UIImage(named: "icon_test")).drf.builder - .contentMode(.scaleAspectFit).drf - .left.vertical.equal(with: .parent).offset(by: 12) - .size.equal(with: CGSize(sides: 56)) - UIStackView(axis: .vertical, distribution: .fillEqually, spacing: 4).drf - .right.vertical.equal(with: .parent).offset(by: 12) - .left.equal(with: .right(of: .previous)).offset(by: 8) - .insertStacked { + HStacked(margin: 12, spacing: 8) { + UIImageView(image: UIImage(named: "icon_test")).drf + .sized(CGSize(sides: 56)) + VStacked(margin: 12, spacing: 4) { UILabel(text: "title text") UILabel(text: "subtitle text") } + } } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -566,9 +706,8 @@ class MyStack: UIStackView, PlannedStack { @LayoutPlan var stackViewPlan: ViewPlan { - UIImageView(image: UIImage(named: "icon_test")).drf.builder - .contentMode(.scaleAspectFit).drf - .size.equal(with: CGSize(sides: 56)) + UIImageView(image: UIImage(named: "icon_test")) + .sized(CGSize(sides: 56)) UILabel(text: "title text") UILabel(text: "subtitle text") } From 81de1a0591f0d1ce53a201fd912948b33bc3c2d4 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:51:46 +0700 Subject: [PATCH 12/13] Fix the grammar in README --- README.md | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 70dfc3b..cbb216d 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ dependencies: [ ] ``` -Use it in your target as `Draftsman` +Use it in your target as a `Draftsman` ```swift .target( @@ -77,7 +77,7 @@ Draftsman is available under the MIT license. See the LICENSE file for more info ## Basic Usage -Draftsman is `NSLayoutConstraints` and `UIView` hierarchy builder. Draftsman uses a new resultBuilder from Swift that makes the Declarative approach possible. +Draftsman is the `NSLayoutConstraints` and `UIView` hierarchy builder. Draftsman uses a new resultBuilder from Swift that makes the Declarative approach possible. *** @@ -186,7 +186,7 @@ class MyViewController: UIViewController, Planned { ### View Hierarchy -You can create view hierarchy while creating a constraints by using `draftContent` or `drf.insert` method and `insert` method for subview draft (`draftStackedContent` or `drf.insertStacked` and `insertStacked` if its arranged subviews in `UIStackView`). Don't forget to call `apply()` or `build()`, Both will rearrange the view hierarchy but only `apply()` will activate the constraints created. +You can create a view hierarchy while creating constraints by using the `draftContent` or `drf.insert` method and `insert` method for the subview draft (`draftStackedContent` or `drf.insertStacked` and `insertStacked` if its arranged subviews in `UIStackView`). Don't forget to call `apply()` or `build()`, Both will rearrange the view hierarchy but only `apply()` will activate the constraints created. ```swift view.draftContent { @@ -201,7 +201,7 @@ view.draftContent { }.apply() ``` -The hierarchy of View is just like how the closure is declared in your code. +The hierarchy of Views is just like how the closure is declared in your code. The above code actually will do the following instruction sequentially: 1. `view` create and insert a new `UIView()` @@ -228,7 +228,7 @@ You could insert components as much as you need, it will fit all the Views just ### Using Builder -You can build your view using [Builder](https://github.com/hainayanda/Builder) library built-in in the Draftsman by calling `builder` property and get back to Draftsman by calling `drf` again: +You can build your view using [Builder](https://github.com/hainayanda/Builder) library built-in in the Draftsman by calling the `builder` property and get back to Draftsman by calling `drf` again: ```swift myView.drf @@ -271,12 +271,12 @@ This can be used to create a constraint using one of these three methods: - **moreThan(to:)** - **lessThan(to:)** -Those methods can accept basic `NSLayoutAnchor` from `UIKit` or using `Anchor` from `Draftsman` as long it's in the same Axis. -To add a constant, use one of `offset(by:)` or `inset(by:)` methods. offset` is spacing going to the outer part of the anchor and `inset` are spacing going to the inner part of the anchor: +Those methods can accept basic `NSLayoutAnchor` from `UIKit` or use `Anchor` from `Draftsman` as long it's in the same Axis. +To add a constant, use one of the `offset(by:)` or `inset(by:)` methods. offset` is the spacing going to the outer part of the anchor and `inset` are spacing going to the inner part of the anchor: ![alt text](https://github.com/hainayanda/Draftsman/blob/master/offset_and_inset.png) -For center anchor, offset and inset can be described by this picture: +For center anchor, offset and inset can be described in this picture: ![alt text](https://github.com/hainayanda/Draftsman/blob/master/offset_and_inset_center.png) @@ -306,8 +306,8 @@ This can be used to create a constraint using one of these three methods: - **moreThan(to:)** - **lessThan(to:)** -Those methods can accept basic `NSLayoutDimension` from `UIKit` or using dimension `Anchor` from `Draftsman`. -To add a constant, use one of `added(by:)`, `substracted(by:)` or `multiplied(by: )` method. +Those methods can accept basic `NSLayoutDimension` from `UIKit` or use dimension `Anchor` from `Draftsman`. +To add a constant, use one of the `added(by:)`, `substracted(by:)`, or `multiplied(by: )` methods. You can then add priority or/and an identifier for the constraints created. Dimensioning can be achieved using constant too: @@ -319,7 +319,7 @@ myView.drf .width.lessThan(to: 128).priority(.required).identifier("width") ``` -Very similar except it accept `CGFloat` +Very similar except it accepts `CGFloat` ### Combining Two or More Anchors @@ -331,7 +331,7 @@ myView.drf .bottom.left.right.moreThan(to: anyOther.drf.top.left.right) ``` -It will be the similar to single anchors, but you can only be passed `Draftsman Anchor` with the same Axis combination: +It will be similar to single anchors, but you can only be passed `Draftsman Anchor` with the same Axis combination: - all same anchors combination can be related to each other - **top.left**, **top.right**, **bottom.left**, **bottom.right** and **centerX.centerY** are all can be related to each other @@ -372,8 +372,8 @@ for offsets and insets, `CGFloat` is compatible with all. But if you need to ass - **VerticalInsets** for vertical anchors insets - **HorizontalOffsets** for horizontal anchors offsets - **HorizontalInsets** for horizontal anchors insets -- **AxisOffsets** for cross position anchors offsets which is just a typealias of `CGPoint` -- **AxisInsets** for cross position anchors insets which is just a typealias of `CGPoint` +- **AxisOffsets** for cross position anchors offsets which are just a typealias of `CGPoint` +- **AxisInsets** for cross position anchors insets which are just a typealias of `CGPoint` - **EdgeOffsets** for 3 and 4 position anchors offsets which is just a typealias of `UIEdgeInsets` - **EdgeInsets** for 3 and 4 position anchors insets which is just a typealias of `UIEdgeInsets` @@ -387,7 +387,7 @@ myView.drf .bottom.horizontal.moreThan(to: view.safeAreaLayoutGuide) ``` -On the example above, it will create equal constraints between `myView` vertical anchors and `otherView` vertical anchors, then it will create another with `myView` bottom and `view.safeAreaLayoutGuide` bottom. +In the example above, it will create equal constraints between `myView` vertical anchors and `otherView` vertical anchors, then it will create another with `myView` bottom and `view.safeAreaLayoutGuide` bottom. ### Anonymous Anchor @@ -448,7 +448,7 @@ available explicit anchors are: ### Layout Constraints Shortcuts -There are several shortcuts for building a layout constraints that can be accessed via `drf`: +There are several shortcuts for building layout constraints that can be accessed via `drf`: - **fillParent()** which shortcuts of `edges.equal(with: .parent)` - **fillSafeArea()** which shortcuts of `edges.equal(with: .safeArea)` @@ -493,22 +493,22 @@ UIScrollView().drf.insertStacked { ### ScrollableStackView -There are custom `UIView` named `ScrollableStackView` which basically a `UIStackView` inside `UIScrollView`. You can use it if you need to stackView that can be scrolled if the content is bigger than the container. It has 2 public init that can be used: +There are custom `UIView` named `ScrollableStackView` which is a `UIStackView` inside `UIScrollView`. You can use it if you need a `UIStackView` that can be scrolled if the content is bigger than the container. It has 2 public init that can be used: - **init(frame: CGRect)** - **init(frame: CGRect = .zero, axis: NSLayoutConstraint.Axis, margins: UIEdgeInsets? = nil, alignment: UIStackView.Alignment = .center, spacing: CGFloat = .zero)** -Other than that, it can be used like regular `UIStackView` and regular `UIScrollView` minus capability to change its distribution, since it needed to make sure the view behave like what it should. +Other than that, it can be used like regular `UIStackView` and regular `UIScrollView` minus the capability to change its distribution, since it needed to make sure the view behaves as it should. *** ## Layout Helper -There are some helper that can be used if you want your `viewPlan` shorter and less explicit. This helper will accept `LayoutPlan` closure so you dont need to access it via `drf` but directly on its init +Some helpers can be used if you want your `viewPlan` shorter and less explicit. This helper will accept `LayoutPlan` closure so you don't need to access it via `drf` but directly on its init ### HStacked and VStacked -HStacked and VStacked basically an shortcut to create vertical and horizontal UIStackView without creating it explicitly. It has 3 public init that can be used: +`HStacked` and `VStacked` are a shortcut to create vertical and horizontal UIStackView without creating it explicitly. It has 3 public init that can be used: - **init(_ stack: UIStackView = UIStackView(), @LayoutPlan _ layouter: () -> ViewPlan) {** - **init(margins: UIEdgeInsets? = nil, distribution: UIStackView.Distribution = .fill, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** @@ -539,7 +539,7 @@ UIStackView(axis: .vertical, distribution: .fillEqually).drf ### HScrollableStacked and VScrollableStacked -`HScrollableStacked` and `VScrollableStacked` basically an shortcut to create vertical and horizontal `ScrollableStackView` without creating it explicitly. It has 3 public init that can be used: +`HScrollableStacked` and `VScrollableStacked` are a shortcut to create vertical and horizontal `ScrollableStackView` without creating it explicitly. It has 3 public init that can be used: - **init(_ stack: ScrollableStackView = ScrollableStackView(), @LayoutPlan _ layouter: () -> ViewPlan) {** - **init(margins: UIEdgeInsets? = nil, alignment: UIStackView.Alignment = .fill, spacing: CGFloat = .zero, @LayoutPlan _ layouter: () -> ViewPlan)** @@ -570,7 +570,7 @@ ScrollableStackView(axis: .horizontal, alignment: .fill).drf ### Margined -`Margined` is an simple way to add a margin to any `UIView`. Example: +`Margined` is a simple way to add a margin to any `UIView`. Example: ```swift Margined(by: 12) { @@ -732,4 +732,4 @@ You can use `UIPlannedStack` since its a typealias of `UIStackView & PlannedStac ## Contribute -You know how, just clone and do pull request +You know how, just clone and do a pull request From a52edbc4d609b2c22b3c79de118c63a3a7dd2cd0 Mon Sep 17 00:00:00 2001 From: Nayanda Haberty Date: Sat, 14 Jan 2023 11:59:12 +0700 Subject: [PATCH 13/13] Fix some code for older compiler --- .../Classes/Utilities/CustomView/ScrollableStackView.swift | 2 +- Draftsman/Classes/Utilities/CustomView/SpacerView.swift | 2 +- Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift b/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift index 8ffe054..60def8c 100644 --- a/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift +++ b/Draftsman/Classes/Utilities/CustomView/ScrollableStackView.swift @@ -61,7 +61,7 @@ public class ScrollableStackView: UIScrollView, Planned { self.alignment = alignment self.spacing = spacing super.init(frame: frame) - if let margins { + if let margins = margins { self.stackView.layoutMargins = margins self.stackView.isLayoutMarginsRelativeArrangement = true } diff --git a/Draftsman/Classes/Utilities/CustomView/SpacerView.swift b/Draftsman/Classes/Utilities/CustomView/SpacerView.swift index bdac224..9aa9662 100644 --- a/Draftsman/Classes/Utilities/CustomView/SpacerView.swift +++ b/Draftsman/Classes/Utilities/CustomView/SpacerView.swift @@ -28,7 +28,7 @@ public class SpacerView: UIView { func apply(axis: NSLayoutConstraint.Axis) { spaceConstraint?.isActive = false - guard let dimension else { + guard let dimension = self.dimension else { super.setContentCompressionResistancePriority(.defaultLow, for: axis) super.setContentHuggingPriority(.defaultLow, for: axis) super.setContentCompressionResistancePriority( diff --git a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift index 0dc67c5..df3e701 100644 --- a/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift +++ b/Draftsman/Classes/Utilities/Extensions/UIView+Extensions.swift @@ -44,7 +44,7 @@ public extension UIStackView { self.distribution = distribution self.alignment = alignment self.spacing = spacing - if let margins { + if let margins = margins { self.layoutMargins = margins self.isLayoutMarginsRelativeArrangement = true }