https://github.com/onmyway133/construction
:construction_worker: The many ways to construct and configure your entity
https://github.com/onmyway133/construction
construction constructor init ios swift
Last synced: 9 months ago
JSON representation
:construction_worker: The many ways to construct and configure your entity
- Host: GitHub
- URL: https://github.com/onmyway133/construction
- Owner: onmyway133
- License: other
- Created: 2015-12-30T04:29:58.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2016-04-28T21:08:52.000Z (almost 10 years ago)
- Last Synced: 2025-05-11T21:03:22.023Z (9 months ago)
- Topics: construction, constructor, init, ios, swift
- Language: Swift
- Homepage:
- Size: 423 KB
- Stars: 33
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
# Construction
The many ways to construct and configure your entity. Work for struct and class
[](https://travis-ci.org/onmyway133/Construction)
[](http://cocoadocs.org/docsets/Construction)
[](https://github.com/Carthage/Carthage)
[](http://cocoadocs.org/docsets/Construction)
[](http://cocoadocs.org/docsets/Construction)

## Usage
### construct
- Free function
- Construct a struct and configure it
`Person`
```swift
struct Person {
var name: String = ""
var age: Int = 0
var website: NSURL?
init() {
}
}
extension Person: Initable {}
```
```swift
let person: Person = construct {
$0.name = "Luffy"
$0.age = 17
}
XCTAssertEqual(person.name, "Luffy")
XCTAssertEqual(person.age, 17)
XCTAssertNil(person.website)
```
### build
- Free function
- Build an existing struct
```swift
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`
```swift
class Car {
var model: String = ""
var price: Int = 0
}
extension Car: Configurable {}
```
```swift
let car = build(Car()) {
$0.model = "Tesla Model 3"
$0.price = 35_000
}
XCTAssertEqual(car.model, "Tesla Model 3")
XCTAssertEqual(car.price, 35_000)
```
### configure
- Member function
- Configure existing object
```swift
let car = Car().configure {
$0.model = "Tesla Model 3"
$0.price = 35_000
}
XCTAssertEqual(car.model, "Tesla Model 3")
XCTAssertEqual(car.price, 35_000)
```
## Installation
**Construction** is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
pod 'Construction'
```
**Construction** is also available through [Carthage](https://github.com/Carthage/Carthage).
To install just write into your Cartfile:
```ruby
github "onmyway133/Construction"
```
## Author
Khoa Pham, onmyway133@gmail.com
## Contributing
We would love you to contribute to **Construction**, check the [CONTRIBUTING](https://github.com/onmyway133/Construction/blob/master/CONTRIBUTING.md) file for more info.
## License
**Construction** is available under the MIT license. See the [LICENSE](https://github.com/onmyway133/Construction/blob/master/LICENSE.md) file for more info.