class RailInspector::Visitor::Attribute

Constants

ATTRIBUTE_METHODS

Attributes

Public Class Methods

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

Public Instance Methods

# File tools/rail_inspector/lib/rail_inspector/visitor/attribute.rb, line 26
             def visit_command(node)
  attr_access = node.message.value
  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.parts.map { |p| p.value.value }

  @attribute_map[full_namespace][attr_access].merge(attributes)
end
# File tools/rail_inspector/lib/rail_inspector/visitor/attribute.rb, line 16
def with_namespace(node)
  @namespace_stack << node.constant.constant.value
  visit_child_nodes(node)
  @namespace_stack.pop
end
Also aliased as: visit_module, visit_class