From 44fa9371e33cc4a995dd7ecec22f0e5d6083a3cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anders=20T=C3=B6rnqvist?= Date: Thu, 9 Jun 2011 16:04:39 -0700 Subject: [PATCH] replaced delegation with forwardable --- lib/resto/extra/delegation.rb | 26 -------------------------- lib/resto/request/base.rb | 10 +++++----- lib/resto/request/factory.rb | 10 +++++----- 3 files changed, 10 insertions(+), 36 deletions(-) delete mode 100644 lib/resto/extra/delegation.rb diff --git a/lib/resto/extra/delegation.rb b/lib/resto/extra/delegation.rb deleted file mode 100644 index b047d1e..0000000 --- a/lib/resto/extra/delegation.rb +++ /dev/null @@ -1,26 +0,0 @@ -# encoding: utf-8 - -module Resto - module Extra - module Delegation - - def delegate(*methods) - options = methods.pop - to = options[:to] - unless options.is_a?(Hash) && to - raise ArgumentError, "Delegation needs a target. Supply an options - hash with a :to key as the last argument - (e.g. delegate :hello, :to => :greeter)." - end - - methods.each do |method| - class_eval <<-EOS - def #{method}(*args, &block) - #{to}.__send__(#{method.inspect}, *args, &block) - end - EOS - end - end - end - end -end diff --git a/lib/resto/request/base.rb b/lib/resto/request/base.rb index d971296..bd73250 100644 --- a/lib/resto/request/base.rb +++ b/lib/resto/request/base.rb @@ -1,23 +1,23 @@ # encoding: utf-8 -require 'resto/extra/delegation' +require 'forwardable' +require 'resto/extra/copy' require 'resto/request/uri' require 'resto/request/header' require 'resto/request/option' require 'resto/request/factory' require 'resto/translator/request_factory' -require 'resto/extra/copy' module Resto module Request class Base - extend Resto::Extra::Delegation + extend Forwardable include Resto::Request::Header include Resto::Request::Uri include Resto::Request::Option - delegate :head, :head!, :get, :get!, :post, :post!, - :put, :put!, :delete, :delete!, :to => :@request + def_delegators :@request, :head, :head!, :get, :get!, :post, :post!, + :put, :put!, :delete, :delete! def initialize(request=Resto::Request::Factory) @request_klass = request diff --git a/lib/resto/request/factory.rb b/lib/resto/request/factory.rb index e6a4cc4..95c8401 100644 --- a/lib/resto/request/factory.rb +++ b/lib/resto/request/factory.rb @@ -1,16 +1,16 @@ # encoding: utf-8 require 'net/https' -require 'resto/extra/delegation' +require 'forwardable' module Resto module Request class Factory - extend Resto::Extra::Delegation + extend Forwardable - delegate :read_host, :read_port, :options, :read_body, :composed_path, - :composed_headers, :scheme, :use_ssl, :current_formatter, - :to => :@request + def_delegators :@request, :read_host, :read_port, :options, :read_body, + :composed_path, :composed_headers, :scheme, :use_ssl, + :current_formatter def initialize(request) @request = request