SkillAgentSearch skills...

Resolver

:confetti_ball: A simple resolver in Swift

Install / Use

/learn @onmyway133/Resolver
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Resolver

❤️ Support my app ❤️

❤️❤️😇😍🤘❤️❤️

A simple resolver for Swift

[![CI Status](http://img.shields.io/travis/Khoa Pham/Resolver.svg?style=flat)](https://travis-ci.org/Khoa Pham/Resolver) Version License Platform

Usage

To run the example project, clone the repo, and run pod install from the Example directory first.

Features

Taking example from Swinject

Supposed we have classes and protocols like this

protocol AnimalType {
    var name: String? { get }
}

class Cat: AnimalType {
    let name: String?

    init(name: String?) {
        self.name = name
    }
}

protocol PersonType {
    var pet: AnimalType { get }
    func play() -> String
}

class PetOwner: PersonType {
    let pet: AnimalType

    init(pet: AnimalType) {
        self.pet = pet
    }

    func play() -> String {
        let name = pet.name ?? "someone"
        return "I'm playing with \(name)."
    }
}

Simple factory

let resolver = Resolver()
resolver.register {
    Cat(name: "tom") as AnimalType
}

let cat = try! resolver.resolve() as AnimalType
XCTAssert(cat.name == "tom")

Tag

let resolver = Resolver()
resolver.register(tag: "tom") {
    Cat(name: "tom") as AnimalType
}

resolver.register(tag: "meo") {
    Cat(name: "meo") as AnimalType
}

let tom = try! resolver.resolve(tag: "tom") as AnimalType
let meo = try! resolver.resolve(tag: "meo") as AnimalType

XCTAssert(tom.name == "tom")
XCTAssert(meo.name == "meo")

Argument

let resolver = Resolver()

resolver.register {
    Cat(name: "tom") as AnimalType
}

resolver.register { cat in
    PetOwner(pet: cat) as PersonType
}

let cat = try! resolver.resolve() as AnimalType
let owner = try! resolver.resolve(arg1: cat) as PersonType

XCTAssert(owner.pet.name == "tom")
XCTAssert(owner.play() == "I'm playing with tom.")

Singleton

let cat = Cat(name: "tom") as AnimalType

let resolver = Resolver()
resolver.registerSingleton(cat)

let someCat = try! resolver.resolve() as AnimalType
XCTAssert(someCat as! Cat === cat as! Cat)

Installation

Resolver is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod "Resolver"

Author

Khoa Pham, onmyway133@gmail.com

License

Resolver is available under the MIT license. See the LICENSE file for more info.

View on GitHub
GitHub Stars15
CategoryDevelopment
Updated5y ago
Forks1

Languages

Swift

Security Score

80/100

Audited on Aug 10, 2020

No findings