README.md in spank-0.0.1 vs README.md in spank-0.0.2

- old
+ new

@@ -1,8 +1,8 @@ # Spank -TODO: Write a gem description +A simple light weight inversion of control container written in ruby. ## Installation Add this line to your application's Gemfile: @@ -16,10 +16,94 @@ $ gem install spank ## Usage -TODO: Write usage instructions here +Register a single component and resolve it. + +```ruby + + container = Container.new + container.register(:item) do + "ITEM" + end + container.register(:pants) { jeans } + container.register(:pants) { dress_pants } + item = container.resolve(:item) + +``` + +Register multiple items, and resolve them. + +```ruby + + container = Container.new + container.register(:pants) { jeans } + container.register(:pants) { dress_pants } + pants = container.resolve_all(:item) + +``` + +Register a singleton. + +```ruby + + container = Container.new + container.register(:singleton) { fake }.as_singleton + single_instance = container.resolve(:singleton) + same_instance = container.resolve(:singleton) + +``` + +Automatic dependency resolution. + +```ruby + + class Child + def initialize(mom,dad) + end + end + + container = Container.new + container.register(:mom) { mom } + container.register(:dad) { dad } + child = sut.build(Child) + +``` + +Register selective interceptors. + +```ruby + + class Interceptor + def intercept(invocation) + invocation.proceed + end + end + + class Command + def run(input) + end + end + + container = Container.new + container.register(:command) { Command.new }.intercept(:run).with(Interceptor.new) + proxy = container.resolve(:command) + proxy.run("hi") + +``` + +[Static gateway](http://codebetter.com/jpboodhoo/2007/10/15/the-static-gateway-pattern/) to connect to the container. + +```ruby + + container = Container.new + Spank::IOC.bind_to(container) + Spank::IOC.resolve(:item) + +``` + +Enjoy! ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`)