Commit c1ad536

mo khan <mo@mokhan.ca>
2013-03-16 04:01:42
proxy methods that accept a block
1 parent 8cfc1a1
Changed files (2)
invocation.rb
@@ -2,14 +2,19 @@ module Booty
   class Invocation
     attr_reader :instance, :method, :arguments
 
-    def initialize(instance, method, args)
+    def initialize(instance, method, args, block)
       @instance = instance
       @method = method
       @arguments = args
+      @block = block
     end
 
     def proceed
-      instance.public_send(@method, @arguments) 
+      if @block
+        instance.public_send(@method, @arguments, @block)
+      else
+        instance.public_send(@method, @arguments)
+      end
     end
   end
 end
proxy.rb
@@ -7,13 +7,13 @@ module Booty
     end
 
     def add_interceptor(method, interceptor)
-      self.class.define_method(method.to_sym) do |*args|
-        interceptor.intercept(create_invocation_for(method, args))
+      self.class.define_method(method.to_sym) do |*args, &block|
+        interceptor.intercept(create_invocation_for(method, args, block))
       end
     end
 
-    def create_invocation_for(method, args)
-      Invocation.new(@target, method, args)
+    def create_invocation_for(method, args, block)
+      Invocation.new(@target, method, args, block)
     end
 
     def method_missing(method, *args, &block)