Sha256: 31f2f270456bd1c170639ac8c195ff00a4c89d71990f7f4ba5eaf2346ce6893d

Contents?: true

Size: 895 Bytes

Versions: 1

Compression:

Stored size: 895 Bytes

Contents

module Mutant
  # A simple delegator with opinions
  module Delegator
    # Class level mixins
    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
    #
    # @return [undefined]
    #
    # @api private
    #
    def self.included(host)
      super
      host.extend(ClassMethods)
    end

  end # Delegator
end # Mutant

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
mutant-0.5.24 lib/mutant/delegator.rb