Sha256: dfb26071d5d19269eda26097ba2a9f56df4c5b6806428c831e38546c41835fdc

Contents?: true

Size: 801 Bytes

Versions: 6

Compression:

Stored size: 801 Bytes

Contents

module Mutant
  module Delegator
    module ClassMethods

    private

      # Create delegators to object
      #
      # @return [undefined]
      #
      # @api private
      #
      def delegate(*names)
        names.each(&method(:define_delegator))
      end

      # Create delegator to object
      #
      # @param [Symbol] name
      #
      # @return [undefined]
      #
      # @api private
      #
      def define_delegator(name)
        define_method(name) do
          object.public_send(name)
        end
        private name
      end

    end # ClassMethods

    # Hook called when module is included
    #
    # @param [Class,Module] host
    #
    # @api private
    #
    def self.included(host)
      super
      host.extend(ClassMethods)
    end

  end # Delegator
end # Mutant

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
mutant-0.5.19 lib/mutant/delegator.rb
mutant-0.5.18 lib/mutant/delegator.rb
mutant-0.5.17 lib/mutant/delegator.rb
mutant-0.5.16 lib/mutant/delegator.rb
mutant-0.5.15 lib/mutant/delegator.rb
mutant-0.5.14 lib/mutant/delegator.rb