Class: Lowkey::MethodDefVisitor

Inherits:
Object
  • Object
show all
Includes:
Query
Defined in:
lib/visitors/method_def_visitor.rb

Instance Method Summary collapse

Methods included from Query

#namespace, #query

Constructor Details

#initialize(file_proxy:, parent_map:) ⇒ MethodDefVisitor

Returns a new instance of MethodDefVisitor.



12
13
14
15
# File 'lib/visitors/method_def_visitor.rb', line 12

def initialize(file_proxy:, parent_map:)
  @file_proxy = file_proxy
  @parent_map = parent_map
end

Instance Method Details

#visit(method_node) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/visitors/method_def_visitor.rb', line 17

def visit(method_node)
  namespace = namespace(node: method_node, parent_map:)
  module_proxy = file_proxy[namespace]
  method_proxy = ProxyFactory.method_proxy(method_node:, file_proxy:)

  module_proxy.keyed_methods[method_node.name] = method_proxy

  # TODO: Implemented as tagged methods similar to tagged params.
  if ModuleProxy.class_method?(method_node:, parent_map:)
    module_proxy.class_methods[method_node.name] = method_proxy
  elsif module_proxy.class <= ClassProxy
    module_proxy.instance_methods[method_node.name] = method_proxy
  end
end