Class: ConstStricter::ConstVisitor
- Inherits:
-
Prism::Visitor
- Object
- Prism::Visitor
- ConstStricter::ConstVisitor
- Defined in:
- lib/const_stricter/const_visitor.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#const_map ⇒ Object
readonly
Returns the value of attribute const_map.
Instance Method Summary collapse
-
#initialize ⇒ ConstVisitor
constructor
A new instance of ConstVisitor.
- #visit_child_nodes(node) ⇒ Object
- #visit_constant_path_node(node) ⇒ Object
- #visit_constant_read_node(node, force_global_scope: false) ⇒ Object
Constructor Details
#initialize ⇒ ConstVisitor
Returns a new instance of ConstVisitor.
13 14 15 16 17 |
# File 'lib/const_stricter/const_visitor.rb', line 13 def initialize @const_path = [] @current_const = ConstName.new @const_map = ConstMap.new end |
Instance Attribute Details
#const_map ⇒ Object (readonly)
Returns the value of attribute const_map.
7 8 9 |
# File 'lib/const_stricter/const_visitor.rb', line 7 def const_map @const_map end |
Instance Method Details
#visit_child_nodes(node) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/const_stricter/const_visitor.rb', line 46 def visit_child_nodes(node) if !@current_const.empty? && !node.is_a?(Prism::ConstantPathNode) unless @current_const.parent.dynamic # slice возвращает код ноды, включая все дочерние # в родительскую цепочку добавляется только самый верхний уровень # connection.module::Jobs::ImportProductsJob @current_const.unshift( ConstNamePart.new(node.slice).tap do |name_part| name_part.line_no = node.location.start_line name_part.dynamic = true end, ) end if node.compact_child_nodes.empty? # Values()::USER_ID @const_map.push(const_path: @const_path, const_name: @current_const) @current_const = ConstName.new end end super end |
#visit_constant_path_node(node) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/const_stricter/const_visitor.rb', line 19 def visit_constant_path_node(node) if node.compact_child_nodes.empty? # include ::ComponentViewPath не вызывает visit_constant_read_node visit_constant_read_node(node, force_global_scope: true) else @current_const.unshift( ConstNamePart.new(node.name.to_s).tap do |name_part| name_part.line_no = node.location.start_line end, ) visit_child_nodes(node) end end |
#visit_constant_read_node(node, force_global_scope: false) ⇒ Object
36 37 38 39 40 41 42 43 44 |
# File 'lib/const_stricter/const_visitor.rb', line 36 def visit_constant_read_node(node, force_global_scope: false) @current_const.unshift( ConstNamePart.new(node.name.to_s).tap do |name_part| name_part.line_no = node.location.start_line end, ) @const_map.push(const_path: force_global_scope ? EMPTY_ARRAY : @const_path, const_name: @current_const) @current_const = ConstName.new end |