4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/module_mapper/map.rb', line 4
def self.from(content:, filename:)
orig_stderr = $stderr.clone
orig_stdout = $stdout.clone
$stderr.reopen File.new('/dev/null', 'w')
$stdout.reopen File.new('/dev/null', 'w')
begin
parser = Analyst.for_source(content)
containers = parser.top_level_entities.select{|e| e.respond_to? :all_methods}
containers << containers.map(&:classes)
containers.flatten!.reject!{ |container| container.all_methods.empty? }
containers.map do |container|
{
module_name: container.full_name,
filename: filename
}
end
rescue
containers = [
{
module_name: "Unknown",
filename: filename
}
]
ensure
$stdout.reopen orig_stdout
$stderr.reopen orig_stderr
end
end
|