Sha256: 8cbda7a67d3808e383bcd06c935e598f1e9378313325cc665b126d1c17fa353c
Contents?: true
Size: 1.98 KB
Versions: 2
Compression:
Stored size: 1.98 KB
Contents
module Mutant class Matcher class Method # Matcher for instance methods class Instance < self SUBJECT_CLASS = Subject::Method::Instance # Dispatching builder, detects memoizable case # # @param [Cache] cache # @param [Class, Module] scope # @param [UnboundMethod] method # # @return [Matcher::Method::Instance] # # @api private # def self.build(cache, scope, method) name = method.name if scope.ancestors.include?(::Memoizable) && scope.memoized?(name) return Memoized.new(cache, scope, method) end super end # Return identification # # @return [String] # # @api private # def identification "#{scope.name}##{method_name}" end memoize :identification NAME_INDEX = 0 private # Check if node is matched # # @param [Parser::AST::Node] node # # @return [true] # if node matches method # # @return [false] # otherwise # # @api private # def match?(node) location = node.location || return expression = location.expression || return expression.line == source_line && node.type == :def && node.children[NAME_INDEX] == method_name end # Matcher for memoized instance methods class Memoized < self SUBJECT_CLASS = Subject::Method::Instance::Memoized private # Return source location # # @return [Array] # # @api private # def source_location scope.unmemoized_instance_method(method.name).source_location end end # Memoized end # Instance end # Method end # Matcher end # Mutant
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
mutant-0.5.21 | lib/mutant/matcher/method/instance.rb |
mutant-0.5.20 | lib/mutant/matcher/method/instance.rb |