Sha256: c64de99d5356a1747546643bf58fa23179e0684b54dfea73d35ef67eaf2d20ad

Contents?: true

Size: 609 Bytes

Versions: 1

Compression:

Stored size: 609 Bytes

Contents

require "metaid"

module Introspection

  module Receivers

    class NullMetaclass
      def ancestors
        Array.new
      end
    end

    class NullReceiver
      def metaclass
        NullMetaclass.new
      end

      def receivers
        Array.new
      end
    end

    def superklass
      respond_to?(:superclass) ? superclass : NullReceiver.new
    end

    def local_receivers
      [metaclass] + metaclass.ancestors - superklass.metaclass.ancestors
    end

    def receivers
      local_receivers + superklass.receivers
    end

  end
end

class Object
  include Introspection::Receivers
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
introspection-0.0.1 lib/introspection/receivers.rb