module Mutant class Mutator # Registry for mutators module Registry # Return registry state # # @return [Hash] # # @api private # def self.registry @registry ||= {} end private_class_method :registry # Register mutator class for AST node class # # @param [Class] ast_class # @param [Class] mutator_class # # @api private # # @return [self] # def self.register(ast_class,mutator_class) registry[ast_class]=mutator_class self end # Lookup mutator class for AST node class # # @param [Class] ast_class # # @return [Class] # # @raise [ArgumentError] # raises argument error when mutator class cannot be found # # @api private # def self.lookup(ast_class) registry.fetch(ast_class) do raise ArgumentError,"No mutator to handle: #{ast_class.inspect}" end end end end end