class Steep::Names::Module

def self.from_node(node)

def self.from_node(node)
  case node.type
  when :const, :casgn
    namespace = namespace_from_node(node.children[0]) or return
    name = node.children[1]
    new(namespace: namespace, name: name)
  end
end

def self.namespace_from_node(node)

def self.namespace_from_node(node)
  case node&.type
  when nil
    AST::Namespace.empty
  when :cbase
    AST::Namespace.root
  when :const
    namespace_from_node(node.children[0])&.yield_self do |parent|
      parent.append(node.children[1])
    end
  end
end