Module: Hashira::Analysis::TypeWalk

Defined in:
lib/hashira/analysis/type_walk.rb

Class Method Summary collapse

Class Method Details

.each_child_definition(node, prefix) ⇒ Object



20
21
22
23
# File 'lib/hashira/analysis/type_walk.rb', line 20

def each_child_definition(node, prefix, &)
  children = node ? node.compact_child_nodes : []
  children.each { each_definition(_1, prefix, &) }
end

.each_definition(node, prefix = []) {|node, full| ... } ⇒ Object

Yields:

  • (node, full)


10
11
12
13
14
15
16
# File 'lib/hashira/analysis/type_walk.rb', line 10

def each_definition(node, prefix = [], &)
  return each_child_definition(node, prefix, &) unless type_node?(node)

  full = prefix + Syntax.path_segments(node.constant_path)
  yield(node, full)
  each_child_definition(node.body, full, &)
end

.type_node?(node) ⇒ Boolean

Returns:

  • (Boolean)


18
# File 'lib/hashira/analysis/type_walk.rb', line 18

def type_node?(node) = node.is_a?(Prism::ClassNode) || node.is_a?(Prism::ModuleNode)