The many ways to construct and configure your entity. Work for struct and class
- Free function
- Construct a struct and configure it
Person
struct Person {
var name: String = ""
var age: Int = 0
var website: NSURL?
init() {
}
}
extension Person: Initable {}
let person: Person = construct {
$0.name = "Luffy"
$0.age = 17
}
XCTAssertEqual(person.name, "Luffy")
XCTAssertEqual(person.age, 17)
XCTAssertNil(person.website)
- Free function
- Build an existing struct
var person = Person() // Declare as `var`
build(&person) { // Use `&`
$0.name = "Luffy"
$0.age = 17
}
XCTAssertEqual(person.name, "Luffy")
XCTAssertEqual(person.age, 17)
XCTAssertNil(person.website)
- Build an existing object
Car
class Car {
var model: String = ""
var price: Int = 0
}
extension Car: Configurable {}
let car = build(Car()) {
$0.model = "Tesla Model 3"
$0.price = 35_000
}
XCTAssertEqual(car.model, "Tesla Model 3")
XCTAssertEqual(car.price, 35_000)
- Member function
- Configure existing object
let car = Car().configure {
$0.model = "Tesla Model 3"
$0.price = 35_000
}
XCTAssertEqual(car.model, "Tesla Model 3")
XCTAssertEqual(car.price, 35_000)
Construction is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Construction'
Construction is also available through Carthage. To install just write into your Cartfile:
github "onmyway133/Construction"
Khoa Pham, onmyway133@gmail.com
We would love you to contribute to Construction, check the CONTRIBUTING file for more info.
Construction is available under the MIT license. See the LICENSE file for more info.