10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
# File 'lib/lagoon/analyzer/ast_model_reference_analyzer.rb', line 10
def analyze(file_paths, action_names, controller_names: nil, model_names: [], associations: {},
helper_models: {}, callback_methods: [])
collector = ControllerScopeCollector.new(controller_names: controller_names)
Array(file_paths).uniq.each do |file_path|
parse_file(file_path).accept(collector)
end
visitor = MethodReferenceVisitor.new(
methods: collector.methods,
model_names: model_names,
associations: associations,
helper_models: helper_models
)
action_names.each_with_object({}) do |action_name, result|
action = action_name.to_s
next unless collector.methods.key?(action)
callbacks = collector.callbacks_for(action) | callback_methods.map(&:to_s)
result[action] = visitor.models_for(action, callbacks: callbacks)
end
end
|