Class: ConstStricter::ScopedConstVisitor

Inherits:
ConstVisitor
  • Object
show all
Defined in:
lib/const_stricter/scoped_const_visitor.rb

Instance Attribute Summary

Attributes inherited from ConstVisitor

#const_map

Instance Method Summary collapse

Methods inherited from ConstVisitor

#initialize, #visit_child_nodes, #visit_constant_path_node, #visit_constant_read_node

Constructor Details

This class inherits a constructor from ConstStricter::ConstVisitor

Instance Method Details

#visit_class_node(node) ⇒ Object



9
10
11
# File 'lib/const_stricter/scoped_const_visitor.rb', line 9

def visit_class_node(node)
  visit_scoped_node(node)
end

#visit_module_node(node) ⇒ Object



5
6
7
# File 'lib/const_stricter/scoped_const_visitor.rb', line 5

def visit_module_node(node)
  visit_scoped_node(node)
end

#visit_scoped_node(node) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/const_stricter/scoped_const_visitor.rb', line 13

def visit_scoped_node(node)
  const_name_visitor = ConstVisitor.new
  node.constant_path.accept(const_name_visitor)

  const_name = const_name_visitor.const_map.keys[0]

  @const_map.push(const_path: @const_path, const_name:)

  @const_path << const_name

  # первый дочерний элемент - это название модуля/класса (constant_path)
  node.compact_child_nodes[1..].each do |child_node|
    child_node.accept(self)
  end

  @const_path.pop if const_name
end