Sha256: 424aeabbddf1b157fbe1ac2a599eea71d5caa5b7c4380dd122c0b26fa20db627

Contents?: true

Size: 772 Bytes

Versions: 2

Compression:

Stored size: 772 Bytes

Contents

require "metaclass"

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
      receivers = []
      receivers << __metaclass__ if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1.0')
      receivers += __metaclass__.ancestors
      receivers -= superklass.__metaclass__.ancestors
      receivers
    end

    def receivers
      local_receivers + superklass.receivers
    end

  end
end

class Object
  include Introspection::Receivers
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
introspection-0.0.4 lib/introspection/receivers.rb
introspection-0.0.3 lib/introspection/receivers.rb