Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swift 3 conversion Xcode 8 GM #228

Merged
merged 18 commits into from
Sep 25, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ DerivedData
*.ipa
*.xcuserstate

Carthage/
Pods/
.DS_Store
1 change: 1 addition & 0 deletions .swift-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.0
13 changes: 6 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
language: objective-c
osx_image: xcode7.3
before_install:
- brew update
- brew install carthage || brew outdated carthage || brew upgrade carthage
osx_image: xcode8
install:
- gem install xcpretty
- carthage bootstrap --platform "ios osx"
- gem install cocoapods --pre
script:
- set -o pipefail && xcodebuild -scheme 'Cartography-Mac' test | xcpretty -c
- set -o pipefail && xcodebuild -scheme 'Cartography-iOS' -sdk iphonesimulator test | xcpretty -c
- pod update
- set -o pipefail && xcodebuild -workspace Cartography.xcworkspace -scheme 'Cartography-Mac' test | xcpretty -c
- set -o pipefail && env NSUnbufferedIO=YES xcodebuild -workspace ./Cartography.xcworkspace -scheme Cartography-iOS -destination 'platform=iOS Simulator,name=iPhone 6s Plus' build test | xcpretty

env:
global:
secure: odPR+Uvp5Enxc8qlFxuUo+aYVf1zS9xF7t2at4IXAJtP0wegwmG8dYOZ5IiMZP/gbBtAWWYc2en4NVnqS9K9wPFIrKdShMwBGnRcsYPj3b6kH/vQM/OLwzYFit2oSqhR3n4RP5UM+lc4jJnfqrK7StMY6ZxCkvLdZkMbFGqVJ20=
2 changes: 0 additions & 2 deletions Cartfile.private

This file was deleted.

2 changes: 0 additions & 2 deletions Cartfile.resolved

This file was deleted.

230 changes: 208 additions & 22 deletions Cartography.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions Cartography.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

20 changes: 10 additions & 10 deletions Cartography/Align.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import UIKit
import AppKit
#endif

private func makeEqual<P: RelativeEquality>(attribute: LayoutProxy -> P, first: LayoutProxy, rest: [LayoutProxy]) -> [NSLayoutConstraint] {
private func makeEqual<P: RelativeEquality>(_ attribute: (LayoutProxy) -> P, first: LayoutProxy, rest: [LayoutProxy]) -> [NSLayoutConstraint] {
return rest.reduce([]) { acc, current in
current.view.car_translatesAutoresizingMaskIntoConstraints = false

Expand All @@ -27,7 +27,7 @@ private func makeEqual<P: RelativeEquality>(attribute: LayoutProxy -> P, first:
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(top first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(top first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.top }, first: first, rest: rest)
}

Expand All @@ -38,7 +38,7 @@ public func align(top first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutCo
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(right first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(right first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.right }, first: first, rest: rest)
}

Expand All @@ -49,7 +49,7 @@ public func align(right first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayout
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(bottom first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(bottom first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.bottom }, first: first, rest: rest)
}

Expand All @@ -60,7 +60,7 @@ public func align(bottom first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayou
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(left first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(left first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.left }, first: first, rest: rest)
}

Expand All @@ -71,7 +71,7 @@ public func align(left first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutC
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(leading first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(leading first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.leading }, first: first, rest: rest)
}

Expand All @@ -82,7 +82,7 @@ public func align(leading first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayo
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(trailing first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(trailing first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.trailing }, first: first, rest: rest)
}

Expand All @@ -93,7 +93,7 @@ public func align(trailing first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLay
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(centerX first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(centerX first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.centerX }, first: first, rest: rest)
}

Expand All @@ -104,7 +104,7 @@ public func align(centerX first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayo
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(centerY first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(centerY first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.centerY }, first: first, rest: rest)
}

Expand All @@ -115,6 +115,6 @@ public func align(centerY first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayo
///
/// - returns: An array of `NSLayoutConstraint` instances.
///
public func align(baseline first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
@discardableResult public func align(baseline first: LayoutProxy, _ rest: LayoutProxy...) -> [NSLayoutConstraint] {
return makeEqual({ $0.baseline }, first: first, rest: rest)
}
40 changes: 20 additions & 20 deletions Cartography/Compound.swift
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ public protocol RelativeCompoundEquality : Compound { }
///
/// - returns: An `NSLayoutConstraint`.
///
public func == <P: RelativeCompoundEquality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
@discardableResult public func == <P: RelativeCompoundEquality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value)
}

Expand All @@ -39,7 +39,7 @@ public func == <P: RelativeCompoundEquality>(lhs: P, rhs: Expression<P>) -> [NSL
/// `translatesAutoresizingMaskIntoConstraints` set to `false`.
/// - parameter rhs: The other property.
///
public func == <P: RelativeCompoundEquality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
@discardableResult public func == <P: RelativeCompoundEquality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, to: rhs)
}

Expand All @@ -55,8 +55,8 @@ public protocol RelativeCompoundInequality : Compound { }
///
/// - returns: An `NSLayoutConstraint`.
///
public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.LessThanOrEqual)
@discardableResult public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.lessThanOrEqual)
}

/// Declares a property greater than or equal to another compound property.
Expand All @@ -67,8 +67,8 @@ public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConst
///
/// - returns: An `NSLayoutConstraint`.
///
public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.GreaterThanOrEqual)
@discardableResult public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.greaterThanOrEqual)
}

/// Declares a property less than or equal to the result of an expression.
Expand All @@ -79,8 +79,8 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: P) -> [NSLayoutConst
///
/// - returns: An `NSLayoutConstraint`.
///
public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: NSLayoutRelation.LessThanOrEqual)
@discardableResult public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: NSLayoutRelation.lessThanOrEqual)
}

/// Declares a property greater than or equal to the result of an expression.
Expand All @@ -91,8 +91,8 @@ public func <= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
///
/// - returns: An `NSLayoutConstraint`.
///
public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: NSLayoutRelation.GreaterThanOrEqual)
@discardableResult public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [NSLayoutConstraint] {
return lhs.context.addConstraint(lhs, coefficients: rhs.coefficients, to: rhs.value, relation: NSLayoutRelation.greaterThanOrEqual)
}

#if os(iOS) || os(tvOS)
Expand All @@ -106,7 +106,7 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func == <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
@discardableResult public func == <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs)
}

Expand All @@ -119,7 +119,7 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func == <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
@discardableResult public func == <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0])
}

Expand All @@ -132,8 +132,8 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func >= <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.GreaterThanOrEqual)
@discardableResult public func >= <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.greaterThanOrEqual)
}

/// Declares a property less than or equal to a layout support.
Expand All @@ -145,8 +145,8 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func <= <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.LessThanOrEqual)
@discardableResult public func <= <P: RelativeEquality>(lhs: P, rhs: LayoutSupport) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs, relation: NSLayoutRelation.lessThanOrEqual)
}

/// Declares a property greater than or equal to the result of a layout support expression.
Expand All @@ -158,8 +158,8 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func >= <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: NSLayoutRelation.GreaterThanOrEqual)
@discardableResult public func >= <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: NSLayoutRelation.greaterThanOrEqual)
}

/// Declares a property less than or equal to the result of a layout support expression.
Expand All @@ -171,8 +171,8 @@ public func >= <P: RelativeCompoundInequality>(lhs: P, rhs: Expression<P>) -> [N
/// - returns: An `NSLayoutConstraint`.
///

public func <= <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: NSLayoutRelation.LessThanOrEqual)
@discardableResult public func <= <P: RelativeEquality>(lhs: P, rhs: Expression<LayoutSupport>) -> NSLayoutConstraint {
return lhs.context.addConstraint(lhs, to: rhs.value, coefficients: rhs.coefficients[0], relation: NSLayoutRelation.lessThanOrEqual)
}

#endif
24 changes: 15 additions & 9 deletions Cartography/Constrain.swift
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import Foundation
/// replaced.
/// - parameter block: A block that declares the layout for `view`.
///
public func constrain(view: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: LayoutProxy -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ view: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy) -> ()) -> ConstraintGroup {
let context = Context()
block(LayoutProxy(context, view))
group.replaceConstraints(context.constraints)
Expand All @@ -31,7 +31,7 @@ public func constrain(view: View, replace group: ConstraintGroup = ConstraintGro
/// replaced.
/// - parameter block: A block that declares the layout for the views.
///
public func constrain(view1: View, _ view2: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: (LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ view1: View, _ view2: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
let context = Context()
block(LayoutProxy(context, view1), LayoutProxy(context, view2))
group.replaceConstraints(context.constraints)
Expand All @@ -48,7 +48,7 @@ public func constrain(view1: View, _ view2: View, replace group: ConstraintGroup
/// replaced.
/// - parameter block: A block that declares the layout for the views.
///
public func constrain(view1: View, _ view2: View, _ view3: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: (LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ view1: View, _ view2: View, _ view3: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
let context = Context()
block(LayoutProxy(context, view1), LayoutProxy(context, view2), LayoutProxy(context, view3))
group.replaceConstraints(context.constraints)
Expand All @@ -66,7 +66,7 @@ public func constrain(view1: View, _ view2: View, _ view3: View, replace group:
/// replaced.
/// - parameter block: A block that declares the layout for the views.
///
public func constrain(view1: View, _ view2: View, _ view3: View, _ view4: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: (LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ view1: View, _ view2: View, _ view3: View, _ view4: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
let context = Context()
block(LayoutProxy(context, view1), LayoutProxy(context, view2), LayoutProxy(context, view3), LayoutProxy(context, view4))
group.replaceConstraints(context.constraints)
Expand All @@ -85,7 +85,7 @@ public func constrain(view1: View, _ view2: View, _ view3: View, _ view4: View,
/// replaced.
/// - parameter block: A block that declares the layout for the views.
///
public func constrain(view1: View, _ view2: View, _ view3: View, _ view4: View, _ view5: View, replace group: ConstraintGroup = ConstraintGroup(), @noescape block: (LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ view1: View, _ view2: View, _ view3: View, _ view4: View, _ view5: View, replace group: ConstraintGroup = ConstraintGroup(), block: (LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy, LayoutProxy) -> ()) -> ConstraintGroup {
let context = Context()
block(LayoutProxy(context, view1), LayoutProxy(context, view2), LayoutProxy(context, view3), LayoutProxy(context, view4), LayoutProxy(context, view5))
group.replaceConstraints(context.constraints)
Expand All @@ -100,7 +100,7 @@ public func constrain(view1: View, _ view2: View, _ view3: View, _ view4: View,
/// replaced.
/// - parameter block: A block that declares the layout for `views`.
///
public func constrain(views: [View], replace group: ConstraintGroup = ConstraintGroup(), @noescape block: ([LayoutProxy]) -> ()) -> ConstraintGroup {
@discardableResult public func constrain(_ views: [View], replace group: ConstraintGroup = ConstraintGroup(), block: ([LayoutProxy]) -> ()) -> ConstraintGroup {
let context = Context()
block(views.map({ LayoutProxy(context, $0) }))
group.replaceConstraints(context.constraints)
Expand All @@ -115,10 +115,16 @@ public func constrain(views: [View], replace group: ConstraintGroup = Constraint
/// replaced.
/// - parameter block: A block that declares the layout for `views`.
///
public func constrain<T: Hashable>(views: [T: View], replace group: ConstraintGroup = ConstraintGroup(), @noescape block: ([T : LayoutProxy] -> ())) -> ConstraintGroup {
@discardableResult public func constrain<T: Hashable>(_ views: [T: View], replace group: ConstraintGroup = ConstraintGroup(), block: (([T : LayoutProxy]) -> ())) -> ConstraintGroup {
let context = Context()
let proxies = views.map { ($0, LayoutProxy(context, $1)) }
block(Dictionary(proxies))
var dict = [T:LayoutProxy]()

proxies.forEach {
dict[$0.0] = $0.1
}

block(dict)
group.replaceConstraints(context.constraints)

return group
Expand All @@ -128,6 +134,6 @@ public func constrain<T: Hashable>(views: [T: View], replace group: ConstraintGr
///
/// - parameter clear: The `ConstraintGroup` whose constraints should be removed.
///
public func constrain(clear group: ConstraintGroup) {
@discardableResult public func constrain(clear group: ConstraintGroup) {
group.replaceConstraints([])
}
10 changes: 5 additions & 5 deletions Cartography/ConstraintGroup.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ import Foundation
public class ConstraintGroup {
private var constraints: [Constraint] = []

@available(OSX, introduced=10.10)
@available(iOS, introduced=8.0)
@available(OSX, introduced: 10.10)
@available(iOS, introduced: 8.0)
public var active: Bool {
get {
return constraints
.map { $0.layoutConstraint.active }
.map { $0.layoutConstraint.isActive }
.reduce(true) { $0 && $1 }
}
set {
for constraint in constraints {
constraint.layoutConstraint.active = newValue
constraint.layoutConstraint.isActive = newValue
}
}
}
Expand All @@ -30,7 +30,7 @@ public class ConstraintGroup {

}

internal func replaceConstraints(constraints: [Constraint]) {
internal func replaceConstraints(_ constraints: [Constraint]) {
for constraint in self.constraints {
constraint.uninstall()
}
Expand Down
Loading