younata / Ra

Dependency Injector for swift
MIT License
8 stars 2 forks source link

Ra: Dependency Injection in swift

From wikipedia:

All forms of life were believed to have been created by Ra, who called each of them into existence by speaking their secret names. Alternatively humans were created from Ra's tears and sweat, hence the Egyptians call themselves the "Cattle of Ra."

Build Status

Usage

import Ra

let injector = Ra.Injector()

injector.create(NSObject) // returns an NSObject, no need to cast

injector.bind("test", to: "result")
injector.create("test") // returns "result", must cast.

injector.bind("test") { injector in
  return ["hello": "world"]
}

injector.create("test") // returns ["Hello": "world"], is evaluated/created when this is called.
// note that this just overwrote the previous binding.

injector.removeBinding("test")
injector.create("test") // returns nil

Installing

Carthage

For Swift 2.0/2.1

For Swift 1.2

For Swift 1.1

Cocoapods

Make sure that use_frameworks! is defined in your Podfile

For Swift 2.0/2.1

For Swift 1.2

For Swift 1.1

Swift Package Manager

add .Package(url: "https://github.com/younata/Ra", majorVersion: 1) to the dependencies array in your Package.swift file.

=======

ChangeLog

1.0.0

0.5.0

injector.bind(NSObject, toInstance: NSObject())

injector.create(NSObject) === injector.create(NSObject) // true

struct MyStruct {
    var myValue = 10

    init() {}
}

var myStruct = MyStruct()

myStruct.myValue = 100

injector.bind(MyStruct, toInstance: myStruct)
injector.create(MyStruct)?.myValue // 10

0.4.0

0.3.1

0.3.0

0.2.0

0.1.0

=======

License

MIT