Class: Lagoon::Analyzer::AstModelReferenceAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
lib/lagoon/analyzer/ast_model_reference_analyzer.rb

Instance Method Summary collapse

Instance Method Details

#analyze(file_paths, action_names, controller_names: nil, model_names: [], associations: {}, helper_models: {}, callback_methods: []) ⇒ Object



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