GitHub - Nonchalant/FactoryProvider: Generate boilerplate of factory Swift frame...
source link: https://github.com/Nonchalant/FactoryProvider
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
README.md
? FactoryProvider ?
Generate boilerplate of factory Swift framework.
Requirements
- Swift 4+
- Xcode 9+
Platforms
FactoryProvider works on the following platforms:
- iOS 8+
- Mac OSX 10.9+
- watchOS 2+
- tvOS 9+
Supports
- Enum
- Struct
FactoryProvider
1. Installation
CocoaPods
FactoryProvider runtime is available through CocoaPods. To install it, simply add the following line to your test target in your Podfile:
pod "FactoryProvider"
And add the following Run script
build phase to your test target's Build Phases
:
"${PODS_ROOT}/FactoryProvider/generate" --config .factory.yml
After running once, locate Factories.generated.swift
and drag it into your Xcode test target group.
.factory.yml
includes: # paths of file or directory to generate - Input/SubInput1 - Input/SubInput2/Source.swift excludes: # paths of file or directory not to generate - Input/SubInput1/SubSubInput - Input/SubInput2/Source.swift testables: # testable targets - target1 - target2 output: output/Factories.generated.swift # path of generated file
2. Usage
You can get a instance to call Factory<TypeName>.provide()
. Each properties are set to default value.
struct Climber { let name: String let age: Int } let climber = Factory<Climber>.provide() // Climber(name: "", age: 0) let optClimber = Factory<Climber?>.provide() // Optional(Climber(name: "", age: 0)) let arrayClimber = Factory<[Climber]>.provide() // [Climber(name: "", age: 0)]
3. Lens
Factory<TypeName>.provide()
provides fixed instance. You can modify each property by Lens.
Get
let name = Factory<Climber>.provide().name or Climber._name.get(Factory<Climber>.provide()) // ""
Set
import FactoryProvider let climber = Factory<Climber>.provide() |> Climber._name *~ "Climber" // Climber(name: "Climber", age: 0)
Modify
import FactoryProvider let name = Factory<Climber>.provide() |> Climber._name *~ { "Climber" |> { $0 + $0 } }() // Climber(name: "ClimberClimber", age: 0)
Compose
import FactoryProvider struct Climber { let id: Id let name: String struct Id { let value: String } } let climber1 = Factory<Climber>.provide() // Climber(id: Id(value: ""), name: "") let climber2 = climber1 |> Climber._id * Climber.Id._value *~ "id" // Climber(id: Id(value: "id"), name: "")
Libraries
License
FactoryProvider is available under the MIT License.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK