Skip to content

Commit

Permalink
Merge pull request #228 from raphaelcruzeiro/swift3
Browse files Browse the repository at this point in the history
Swift 3 conversion Xcode 8 GM
  • Loading branch information
orta authored Sep 25, 2016
2 parents ecdeffd + 87d4ab3 commit 751b3f8
Show file tree
Hide file tree
Showing 34 changed files with 464 additions and 219 deletions.
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

0 comments on commit 751b3f8

Please sign in to comment.