Sha256: 9f64f519b303f3bf15990a9759ebf05966f75bcfc7438d95b2650788c72097f1

Contents?: true

Size: 863 Bytes

Versions: 4

Compression:

Stored size: 863 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
    #
    # @api private
    #
    def self.included(host)
      super
      host.extend(ClassMethods)
    end

  end # Delegator
end # Mutant

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
mutant-0.5.23 lib/mutant/delegator.rb
mutant-0.5.22 lib/mutant/delegator.rb
mutant-0.5.21 lib/mutant/delegator.rb
mutant-0.5.20 lib/mutant/delegator.rb