class Reek::AST::ASTNodeClassMap


utility modules.
Maps AST node types to sublasses of ASTNode extended with the relevant

def extension_map

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
      assoc.to_h
    end
end

def initialize

def initialize
  @klass_map = {}
end

def klass_for(type)

def klass_for(type)
  klass_map[type] ||= Class.new(Node).tap do |klass|
    extension = extension_map[type]
    # TODO: map node type to constant directly.
    klass.send :include, extension if extension
  end
end