All Projects → onmyway133 → Resolver

onmyway133 / Resolver

Licence: MIT License
🎊 A simple resolver in Swift

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Resolver

di.libx.js
💉 di.libx.js - Lightweight & non intrusive Dependency Injection module that supports async/deferred resolution and uglified support
Stars: ✭ 32 (+113.33%)
Mutual labels:  dependency-injection
TVToday
iOS TV Shows app with TMDb Api. RxSwift, MVVM, Clean Architecture. Tuist + Swift Package Manager
Stars: ✭ 27 (+80%)
Mutual labels:  dependency-injection
SocketHook
Socket hook is an injector based on EasyHook (win only) which redirect the traffic to your local server.
Stars: ✭ 38 (+153.33%)
Mutual labels:  dependency-injection
siringa
Minimalist dependency injection library for Python that embraces type annotations syntax
Stars: ✭ 51 (+240%)
Mutual labels:  dependency-injection
lifeline-rs
A dependency injection library for message-based applications
Stars: ✭ 32 (+113.33%)
Mutual labels:  dependency-injection
framework
The target of this framework is to help in all the needs of a full featured API REST, from top to bottom, and at the same time having the best possible performance and security.
Stars: ✭ 88 (+486.67%)
Mutual labels:  dependency-injection
ECommerceProjectWithWebAPI
.NET 5.0 Web API İle E-Ticaret Sitesi Yapımı MVC,Win Form,Angular ve Mobil
Stars: ✭ 35 (+133.33%)
Mutual labels:  dependency-injection
EvaEngine.js
A micro service development engine for node.js
Stars: ✭ 31 (+106.67%)
Mutual labels:  dependency-injection
simple-container
Yet another DI container
Stars: ✭ 12 (-20%)
Mutual labels:  dependency-injection
pythondi
Python lightweight dependency injection library
Stars: ✭ 26 (+73.33%)
Mutual labels:  dependency-injection
granitic
Web/micro-services and IoC framework for Golang developers
Stars: ✭ 32 (+113.33%)
Mutual labels:  dependency-injection
dagger-track
Gradle plugin to add clock trackings to your dagger components and subcomponents
Stars: ✭ 59 (+293.33%)
Mutual labels:  dependency-injection
scorpion
Simple IoC for ruby
Stars: ✭ 16 (+6.67%)
Mutual labels:  dependency-injection
nestjs-stripe
Provides an injectable Stripe client to nestjs modules
Stars: ✭ 126 (+740%)
Mutual labels:  dependency-injection
opyoid
Dependency injection library for Python
Stars: ✭ 34 (+126.67%)
Mutual labels:  dependency-injection
kapsule
Minimalist dependency injection library for Kotlin.
Stars: ✭ 165 (+1000%)
Mutual labels:  dependency-injection
ToDoApp
📱My android playground app - Simple and Fastest todo app - developing to cover most android concepts, simple logic can make me focus more on framework
Stars: ✭ 28 (+86.67%)
Mutual labels:  dependency-injection
Medicine
Code-driven component injection toolkit for Unity.
Stars: ✭ 28 (+86.67%)
Mutual labels:  dependency-injection
brisk-ioc
fast light brisk ioc/di container on nodejs; Node下快速 轻量的IoC/DI容器,依赖注入,配合装饰器使用
Stars: ✭ 12 (-20%)
Mutual labels:  dependency-injection
ControllerAutowire
[DEPRECATED] Use Controller autowiring by default since Symfony 3.3
Stars: ✭ 24 (+60%)
Mutual labels:  dependency-injection

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, [email protected]

License

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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].