class RubyDetective::AST::Nodes::ClassDeclarationNode

Constants

CLASS_NAME_NODE_INDEX
INHERITANCE_CLASS_NAME_NODE_INDEX
PREPENDED_NAMESPACE_NODE_INDEX

Public Instance Methods

class_name() click to toggle source
# File lib/ruby_detective/ast/nodes/class_declaration_node.rb, line 6
def class_name
  children[CLASS_NAME_NODE_INDEX].constant_name
end
declared_namespace() click to toggle source
# File lib/ruby_detective/ast/nodes/class_declaration_node.rb, line 21
def declared_namespace
  prepended_namespace =
    children[CLASS_NAME_NODE_INDEX]
    .children[PREPENDED_NAMESPACE_NODE_INDEX]

  return [class_name] unless prepended_namespace.constant_reference_node?
  # This scenario happens when we have a class declaration with inline
  # namespace, like this: class MyNamespace::MyClass
  prepended_namespace.constant_path + [class_name]
end
inheritance_class_name() click to toggle source
# File lib/ruby_detective/ast/nodes/class_declaration_node.rb, line 11
def inheritance_class_name
  inherited_class_constant = children[INHERITANCE_CLASS_NAME_NODE_INDEX]
  # If this child isn't a ConstantReference node it means it doesn't
  # have a declared class inheritance like "class Foo::Bar"
  return unless inherited_class_constant.constant_reference_node?

  inherited_class_constant.constant_name
end
type() click to toggle source
# File lib/ruby_detective/ast/nodes/class_declaration_node.rb, line 32
def type
  :class
end