Sha256: eda5079ab4dcc8f1404c3423b8ddd8bd02ad60ce2037ec0cec83d7717a636af4
Contents?: true
Size: 1.5 KB
Versions: 7
Compression:
Stored size: 1.5 KB
Contents
module Mutant class Expression # Explicit method expression class Method < self MATCHERS = IceNine.deep_freeze( '.' => Matcher::Methods::Singleton, '#' => Matcher::Methods::Instance ) register( /\A(?<scope_name>#{SCOPE_PATTERN})(?<scope_symbol>[.#])(?<method_name>#{METHOD_NAME_PATTERN})\z/ ) # Return method matcher # # @param [Env] env # # @return [Matcher::Method] # # @api private # def matcher(env) methods_matcher = MATCHERS.fetch(scope_symbol).new(env, scope) method = methods_matcher.methods.detect do |meth| meth.name.equal?(method_name) end or raise NameError, "Cannot find method #{method_name}" methods_matcher.matcher.build(env, scope, method) end private # Return scope name # # @return [String] # # @api private # def scope_name match[__method__] end # Return scope # # @return [Class, Method] # # @api private # def scope Mutant.constant_lookup(scope_name) end # Return method name # # @return [String] # # @api private # def method_name match[__method__].to_sym end # Return scope symbol # # @return [Symbol] # # @api private # def scope_symbol match[__method__] end end # Method end # Expression end # Mutant
Version data entries
7 entries across 7 versions & 1 rubygems