Sha256: 5e8b68a4e34c2ffbd94c7dc5118671c2d6cbf2ea727d2118c84ac6bbbd3ad2a5

Contents?: true

Size: 1.01 KB

Versions: 13

Compression:

Stored size: 1.01 KB

Contents

module ObjectAttorney

  module Delegation

    module MissingMethods

      def method_missing(method, *args, &block)
        represented_object.send(method, *args, &block)
      end

    end

    def zuper_method(method_name, *args)
      self.superclass.send(method_name, *args) if self.superclass.respond_to?(method_name)
    end

    def properties(*_properties)
      _properties.each { |property| delegate_property(property) }
    end

    def getters(*_getters)
      _getters.each { |getter| delegate_getter(getter) }
    end

    def setters(*_setters)
      _setters.each { |getter| delegate_setter(getter) }
    end

    
    protected ##################### PROTECTED #####################

    def delegate_property(property)
      delegate_getter(property)
      delegate_setter(property)
    end

    def delegate_getter(getter)
      delegate getter, to: :represented_object
      add_attribute_key getter
    end

    def delegate_setter(setter)
      delegate "#{setter}=", to: :represented_object
    end

  end

end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
object_attorney-2.10.12 lib/object_attorney/delegation.rb
object_attorney-2.10.11 lib/object_attorney/delegation.rb
object_attorney-2.10.10 lib/object_attorney/delegation.rb
object_attorney-2.10.9 lib/object_attorney/delegation.rb
object_attorney-2.10.7 lib/object_attorney/delegation.rb
object_attorney-2.10.6 lib/object_attorney/delegation.rb
object_attorney-2.10.5 lib/object_attorney/delegation.rb
object_attorney-2.10.3 lib/object_attorney/delegation.rb
object_attorney-2.10.2 lib/object_attorney/delegation.rb
object_attorney-2.10.1 lib/object_attorney/delegation.rb
object_attorney-2.9.4 lib/object_attorney/delegation.rb
object_attorney-2.9.3 lib/object_attorney/delegation.rb
object_attorney-2.9.2 lib/object_attorney/delegation.rb