Module: Txray::Namespaces

Defined in:
lib/txray/method_index.rb

Class Method Summary collapse

Class Method Details

.each(node, namespace = "", &block) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/txray/method_index.rb', line 102

def each(node, namespace = "", &block)
  return if node.nil?

  case node
  when Prism::ClassNode, Prism::ModuleNode
    child = join(namespace, NodeHelpers.constant_name(node.constant_path))
    block.call(child, node)
    each(node.body, child, &block)
  when Prism::SingletonClassNode
    each(node.body, namespace, &block)
  else
    block.call(namespace, node)
    node.compact_child_nodes.each { |c| each(c, namespace, &block) }
  end
end

.join(namespace, name) ⇒ Object



118
119
120
121
122
# File 'lib/txray/method_index.rb', line 118

def join(namespace, name)
  return namespace if name.nil?

  namespace.empty? ? name : "#{namespace}::#{name}"
end