def handle_module exp, tracker_class, parent = nil
name = class_name(exp.module_name)
if @current_module
outer_module = @current_module
name = (outer_module.name.to_s + "::" + name.to_s).to_sym
end
if @current_class
name = (@current_class.name.to_s + "::" + name.to_s).to_sym
end
if @tracker.libs[name]
@current_module = @tracker.libs[name]
@current_module.add_file @file_name, exp
else
@current_module = tracker_class.new name, parent, @file_name, exp, @tracker
@tracker.libs[name] = @current_module
end
exp.body = process_all! exp.body
if outer_module
@current_module = outer_module
else
@current_module = nil
end
exp
end