Sha256: 0ae59d0677331c85a9b9d8f5e4ca2f6ebacced30037a5acb56f99383afe13de0

Contents?: true

Size: 1.86 KB

Versions: 4

Compression:

Stored size: 1.86 KB

Contents

require 'overrides_tracker/version'

# dependency for extracting method bodies and comments
require 'method_source'

require 'overrides_tracker/version'
require 'overrides_tracker/methods_collector'
require 'overrides_tracker/string_colorizer'
require 'overrides_tracker/util'
require 'overrides_tracker/comparer'
require 'overrides_tracker/api'
require 'overrides_tracker/hash_decorator'

module OverridesTracker
end

# We only want to do this core ruby monkey patching when using cli
if defined? OVERRIDES_TRACKER_TRACKING_ENABLED
  Object.class_eval do
    class << self
      def inherited(subclass)
        puts "Reading...#{subclass.name}"
        subclass.class_eval do
          TracePoint.trace(:end) do |t|
            if subclass == t.self
              save_methods_of_class(subclass)
              t.disable
            end
          end
        end
      end

      def save_methods_of_class(clazz)
        inst_methods = clazz.instance_methods(false)
        inst_methods.each do |inst_method|
          method = clazz.instance_method(inst_method)
          method_hash = OverridesTracker::Util.method_hash(method)
          OverridesTracker::MethodsCollector.instance.add_method_for_class(:instance_methods, clazz.name, inst_method,
                                                                           method_hash)
        end

        single_methods = clazz.singleton_methods(false)
        single_methods.each do |single_method|
          next unless single_method != :overrides_tracker_finished_file

          method = clazz.singleton_method(single_method)
          method_hash = OverridesTracker::Util.method_hash(method)
          OverridesTracker::MethodsCollector.instance.add_method_for_class(:singleton_methods, clazz.name,
                                                                           single_method, method_hash)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
overrides_tracker-0.3.1 lib/overrides_tracker.rb
overrides_tracker-0.3.0 lib/overrides_tracker.rb
overrides_tracker-0.2.3 lib/overrides_tracker.rb
overrides_tracker-0.2.1 lib/overrides_tracker.rb