lib/method_found/interceptor.rb in method_found-0.1.1 vs lib/method_found/interceptor.rb in method_found-0.1.2

- old
+ new

@@ -1,8 +1,15 @@ module MethodFound class Interceptor < Module - def initialize(regex, &intercept_block) + attr_reader :regex + + def initialize(regex = nil, &intercept_block) + define_method_missing(regex, &intercept_block) unless regex.nil? + end + + def define_method_missing(regex, &intercept_block) + @regex = regex define_method :method_missing do |method_name, *arguments, &method_block| if matches = regex.match(method_name) instance_exec(method_name, matches, *arguments, &intercept_block) else super(method_name, *arguments, &method_block) @@ -10,14 +17,14 @@ end define_method :respond_to_missing? do |method_name, include_private = false| (method_name =~ regex) || super(method_name, include_private) end + end - define_method :inspect do - klass = self.class - name = klass.name || klass.inspect - "#<#{name}: #{regex.inspect}>" - end + def inspect + klass = self.class + name = klass.name || klass.inspect + "#<#{name}: #{regex.inspect}>" end end end