lib/mutant/require_highjack.rb in mutant-0.7.9 vs lib/mutant/require_highjack.rb in mutant-0.8.0

- old
+ new

@@ -1,63 +1,24 @@ module Mutant # Require highjack - class RequireHighjack - include Concord.new(:target, :callback) + module RequireHighjack - # Return original method + # Install require callback # + # @param [Module] target + # @param [#call] callback + # # @return [#call] + # the original implementation on singleton # # @api private # - attr_reader :original - - # Run block with highjacked require - # - # @return [self] - # - # @api private - # - def run - infect - yield - self - ensure - disinfect - end - - # Infect kernel with highjack - # - # @return [self] - # - # @api private - # - def infect - callback = @callback - @original = target.method(:require) - target.module_eval do - undef :require - define_method(:require) do |logical_name| - callback.call(logical_name) + def self.call(target, callback) + target.method(:require).tap do + target.module_eval do + define_method(:require, &callback) + public :require end - module_function :require - end - end - - # Imperfectly disinfect kernel from highjack - # - # @return [self] - # - # @api private - # - def disinfect - original = @original - target.module_eval do - undef :require - define_method(:require) do |logical_name| - original.call(logical_name) - end - module_function :require end end end # RequireHighjack end # Mutant