Sha256: d63a5f8788be438d9c48f45b83ea2305f233b0a5a5ccd992270c11553c8ffc24

Contents?: true

Size: 1.5 KB

Versions: 1

Compression:

Stored size: 1.5 KB

Contents

require 'private_please/tracking/line_change_tracker'
module PrivatePlease
  module Tracking

    class << self

      def after_instance_method_call(method_name, zelf_class)
        store_call_to_tracked_method(
          candidate       = PrivatePlease::Candidate.for_instance_method(zelf_class, method_name),
          is_outside_call = (caller_class != zelf_class)
        )
      end

      def after_singleton_method_call(method_name, zelf_class)
        store_call_to_tracked_method(
          candidate       = PrivatePlease::Candidate.for_class_method(zelf_class, method_name),
          is_outside_call = (caller_class != zelf_class)
        )
      end

    private

      def caller_class
        call_initiator = LineChangeTracker.call_initiator
        if call_initiator.nil?
          #TODO : investigate why and how this happens
        end
        (caller_is_class_method = call_initiator.is_a?(Class)) ?
            call_initiator :
            call_initiator.class
      end

      def store_call_to_tracked_method(candidate, is_outside_call)
        is_outside_call ?
            PrivatePlease.calls_store.store_outside_call(candidate) :
            PrivatePlease.calls_store.store_inside_call( candidate)
      end

    end

  end
end

require 'private_please/tracking/utils'
require 'private_please/tracking/instrumentor'
require 'private_please/tracking/extension'
require 'private_please/tracking/instruments_all_methods_below'
require 'private_please/tracking/instruments_automatically_all_methods_in_all_classes'

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
private_please-0.0.4 lib/private_please/tracking.rb