Sha256: fda76526ffabab46485b800149761d73c4687d365f234f81c629b0053250b1db

Contents?: true

Size: 680 Bytes

Versions: 10

Compression:

Stored size: 680 Bytes

Contents

class MasterDelegator

  alias_method :original_respond_to?, :respond_to?

  def respond_to?(sym)
    original_respond_to?(sym) || @requester.respond_to?(sym)
  end

  def method_missing(sym, *args, &block)
    if original_respond_to?(sym)
      result = super(sym, *args, &block)
    elsif @requester.respond_to?(sym)
      result = @requester.send(sym, *args, &block)
    else
      # let it go
      return super(sym, *args, &block)
    end
    delegate_parse result
  end
  
  protected
  
  def delegate(what, *args, &block)
    delegate_parse @requester.send(what, *args, &block)
  end
  
  def delegate_parse(result)
    (result == @requester) ? self : result
  end
  
end

Version data entries

10 entries across 10 versions & 2 rubygems

Version Path
restfulie-nosqlite-1.0.4 lib/restfulie/client/master_delegator.rb
restfulie-1.1.1 lib/restfulie/client/master_delegator.rb
restfulie-1.1.0 lib/restfulie/client/master_delegator.rb
restfulie-nosqlite-1.0.3 lib/restfulie/client/master_delegator.rb
restfulie-1.0.3 lib/restfulie/client/master_delegator.rb
restfulie-1.0.0 lib/restfulie/client/master_delegator.rb
restfulie-1.0.0.beta5 lib/restfulie/client/master_delegator.rb
restfulie-1.0.0.beta4 lib/restfulie/client/master_delegator.rb
restfulie-1.0.0.beta1 lib/restfulie/client/master_delegator.rb
restfulie-0.1.0.beta1 lib/restfulie/client/master_delegator.rb