This is a small utility component that you can use in your applications to ease the management of dependencies between objects. The idea is simple, you have a factory object (we'll call this the injector) where you define some mappings. Each mapping has a unique id defined by you. From different modules you can query the injector to give you a new instance of a specific mapping. Within classes you can define dependecies which will be satisfied on creation of a new instance of that specific class. It can be used in both browser and nodejs apps.
npm install coffee-sweetener
Some people like coffee as it is, others like it with sugar. Same it's true for components like this one, some people like them others can live without them. But not be afraid of trying it as, not like sugar, it will keep your applications slim.
# define a class class MyClass sayYeah: -> console.log "YEAH!" # get the Injector CoffeeSweetener = require "coffee-sweetener" Injector = new CoffeeSweetener() # map MyClass in the Injector Injector.map klass: MyClass # ask the Injector to give you a new instance of MyClass instance = Injector.getInstanceOf "MyClass" # use the instance instance.sayYeah() # this prints "YEAH!" to the console
# define a class class Wheels printOut: -> console.log "Cool Wheels" # define a class with injection points class Car inject: wheels: "Wheels" describe: -> console.log "This car has some #{@wheels.printOut}" # get the Injector CoffeeSweetener = require "coffee-sweetener" Injector = new CoffeeSweetener() # map Wheels in the Injector Injector.map klass: Wheels # map Car in the Injector Injector.map klass: Car # ask the Injector to give you a new instance of Car myCar = Injector.getInstanceOf "Car" # use the instance myCar.describe() # this prints "This car has some Cool Wheels" to the console
The API is inspired by SwiftSuspenders which I used while developing Flashy things.