Sha256: 21824b29fbe93f56e041db1bba1831fa8a240db6634e050f9c235c8dc1ac8661

Contents?: true

Size: 923 Bytes

Versions: 2

Compression:

Stored size: 923 Bytes

Contents

module ObjectAttorney

  module Delegation

    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_exposed_getters(getter)
    end

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

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
object_attorney-2.8.1 lib/object_attorney/delegation.rb
object_attorney-2.8.0 lib/object_attorney/delegation.rb