Sha256: 78fc792cf3643aa730ab449ea71e58a54630b9626b4da398d9c10761b875c171
Contents?: true
Size: 899 Bytes
Versions: 3
Compression:
Stored size: 899 Bytes
Contents
require_relative 'node' require_relative 'sexp_extensions' module Reek module AST # Maps AST node types to sublasses of ASTNode extended with the relevant # utility modules. # # @api private class ASTNodeClassMap def initialize @klass_map = {} end def klass_for(type) klass_map[type] ||= Class.new(Node).tap do |klass| extension = extension_map[type] klass.send :include, extension if extension end end def extension_map @extension_map ||= begin assoc = SexpExtensions.constants.map do |const| [ const.to_s.sub(/Node$/, '').downcase.to_sym, SexpExtensions.const_get(const) ] end Hash[assoc] end end private private_attr_reader :klass_map end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
reek-3.3.1 | lib/reek/ast/ast_node_class_map.rb |
reek-3.3.0 | lib/reek/ast/ast_node_class_map.rb |
reek-3.2 | lib/reek/ast/ast_node_class_map.rb |