Sha256: 73c96cfea58240832320fe27a13b155f48ddb2d901139620f6ae86b4ec182efe

Contents?: true

Size: 1.18 KB

Versions: 26

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module DeepCover
  # Helps redefine methods in overriden_modules.
  # For each methods in Mod, this defines `<method>_with{out}_deep_cover`.
  # Set `active` to true or false to alias <method> to one or the other.
  module ModuleOverride
    attr_reader :overriden_modules

    def active=(active)
      each do |mod, method_name|
        mod.send :alias_method, method_name, :"#{method_name}_#{active ? 'with' : 'without'}_deep_cover"
        if mod == ::Kernel
          mod.send :private, method_name
        end
      end
    end

    def override(*modules)
      @overriden_modules = modules
      each do |mod, method_name|
        mod.send :alias_method, :"#{method_name}_without_deep_cover", method_name
        mod.send :define_method, :"#{method_name}_with_deep_cover", instance_method(method_name)
        if mod == ::Kernel
          mod.send :private, :"#{method_name}_without_deep_cover"
          mod.send :private, :"#{method_name}_with_deep_cover"
        end
      end
    end

    def each(&block)
      overriden_modules.each do |mod|
        instance_methods(false).each do |method_name|
          yield mod, method_name
        end
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
deep-cover-core-1.1.0 lib/deep_cover/module_override.rb
deep-cover-core-1.0.0 lib/deep_cover/module_override.rb
deep-cover-core-0.8.1 lib/deep_cover/module_override.rb
deep-cover-core-0.8.0 lib/deep_cover/module_override.rb
deep-cover-core-0.7.10 lib/deep_cover/module_override.rb
deep-cover-core-0.7.9 lib/deep_cover/module_override.rb
deep-cover-core-0.7.8 lib/deep_cover/module_override.rb
deep-cover-core-0.7.7 lib/deep_cover/module_override.rb
deep-cover-core-0.7.6 lib/deep_cover/module_override.rb
deep-cover-core-0.7.5 lib/deep_cover/module_override.rb
deep-cover-core-0.7.4 lib/deep_cover/module_override.rb
deep-cover-core-0.7.3 lib/deep_cover/module_override.rb
deep-cover-core-0.7.2 lib/deep_cover/module_override.rb
deep-cover-core-0.7.1 lib/deep_cover/module_override.rb
deep-cover-core-0.7.0 lib/deep_cover/module_override.rb
deep-cover-core-0.6.4 lib/deep_cover/module_override.rb
deep-cover-core-0.6.3 lib/deep_cover/module_override.rb
deep-cover-core-0.6.3.pre lib/deep_cover/module_override.rb
deep-cover-0.6.2 lib/deep_cover/module_override.rb
deep-cover-0.6.1 lib/deep_cover/module_override.rb