def handle_class exp, collection, tracker_class
name = class_name(exp.class_name)
parent = class_name exp.parent_name
if @current_class
outer_class = @current_class
name = (outer_class.name.to_s + "::" + name.to_s).to_sym
end
if @current_module
name = (@current_module.name.to_s + "::" + name.to_s).to_sym
end
if collection[name]
@current_class = collection[name]
@current_class.add_file @file_name, exp
else
@current_class = tracker_class.new name, parent, @file_name, exp, @tracker
collection[name] = @current_class
end
exp.body = process_all! exp.body
yield if block_given?
if outer_class
@current_class = outer_class
else
@current_class = nil
end
exp
end