2012-07-23 22:54:35 +02:00
|
|
|
module Mutant
|
2012-07-31 04:10:37 +02:00
|
|
|
class Matcher
|
2012-07-23 22:54:35 +02:00
|
|
|
class Method < Matcher
|
2012-07-26 19:25:23 +02:00
|
|
|
# Matcher for instance methods
|
2012-07-23 22:54:35 +02:00
|
|
|
class Instance < Method
|
2012-07-26 19:25:23 +02:00
|
|
|
|
2012-07-23 22:54:35 +02:00
|
|
|
private
|
2012-07-26 19:25:23 +02:00
|
|
|
|
2012-07-24 01:41:08 +02:00
|
|
|
# Return method instance
|
2012-07-31 04:10:37 +02:00
|
|
|
#
|
2012-07-24 01:41:08 +02:00
|
|
|
# @return [UnboundMethod]
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
#
|
2012-07-23 22:54:35 +02:00
|
|
|
def method
|
|
|
|
constant.instance_method(method_name)
|
|
|
|
end
|
|
|
|
|
2012-07-31 04:10:37 +02:00
|
|
|
# Return matched node class
|
|
|
|
#
|
2012-07-24 01:41:08 +02:00
|
|
|
# @return [Rubinius::AST::Define]
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
#
|
2012-07-23 22:54:35 +02:00
|
|
|
def node_class
|
|
|
|
Rubinius::AST::Define
|
|
|
|
end
|
2012-07-26 19:25:23 +02:00
|
|
|
|
|
|
|
# Return matched node
|
|
|
|
#
|
|
|
|
# @return [Rubinus::AST::Define]
|
|
|
|
#
|
|
|
|
# @api private
|
|
|
|
#
|
|
|
|
def matched_node
|
|
|
|
last_match = nil
|
|
|
|
ast.walk do |predicate, node|
|
|
|
|
last_match = node if match?(node)
|
|
|
|
predicate
|
|
|
|
end
|
|
|
|
last_match
|
|
|
|
end
|
2012-07-23 22:54:35 +02:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|