class RailInspector::Visitor::Load
Public Class Methods
# File tools/rail_inspector/lib/rail_inspector/visitor/load.rb, line 8 def initialize(&block) @current_loads = block @namespace_stack = [] end
Public Instance Methods
# File tools/rail_inspector/lib/rail_inspector/visitor/load.rb, line 27 def visit_call_node(node) case node.name when :require case node.arguments.arguments[0] in Prism::StringNode[unescaped:] @current_loads.call[:requires] << unescaped else # dynamic require, like "active_support/cache/#{store}" end when :autoload case node.arguments.arguments in [Prism::SymbolNode[unescaped:]] namespaced_const = @namespace_stack.join("::") namespaced_const << "::" << unescaped @current_loads.call[:autoloads] << namespaced_const.underscore in [Prism::SymbolNode, Prism::StringNode[unescaped:]] @current_loads.call[:autoloads] << unescaped end end end
Calls superclass method
# File tools/rail_inspector/lib/rail_inspector/visitor/load.rb, line 13 def visit_module_node(node) case node.constant_path in Prism::ConstantReadNode[name:] @namespace_stack << name in Prism::ConstantPathNode @namespace_stack << node.constant_path.full_name end super @namespace_stack.pop end
Also aliased as: visit_class_node