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