class RailInspector::Visitor::Attribute

Constants

ATTRIBUTE_METHODS

Attributes

Public Class Methods

# File tools/rail_inspector/lib/rail_inspector/visitor/attribute.rb, line 10
def initialize
  @attribute_map = {}
  @namespace_stack = []
end

Public Instance Methods

# File tools/rail_inspector/lib/rail_inspector/visitor/attribute.rb, line 24
def visit_call_node(node)
  attr_access = node.name
  return unless ATTRIBUTE_METHODS.include?(attr_access)

  full_namespace = @namespace_stack.join("::")

  @attribute_map[full_namespace] ||= {}
  @attribute_map[full_namespace][attr_access] ||= Set.new

  attributes = node.arguments.arguments.map { |p| p.value }

  @attribute_map[full_namespace][attr_access].merge(attributes)
end
# File tools/rail_inspector/lib/rail_inspector/visitor/attribute.rb, line 15
def with_namespace(node)
  @namespace_stack << node.constant_path.name
  visit_child_nodes(node)
  @namespace_stack.pop
end