Module: Hashira::Analysis::TypeWalk
- Defined in:
- lib/hashira/analysis/type_walk.rb
Class Method Summary collapse
- .each_child_definition(node, prefix) ⇒ Object
- .each_definition(node, prefix = []) {|node, full| ... } ⇒ Object
- .type_node?(node) ⇒ Boolean
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
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
18 |
# File 'lib/hashira/analysis/type_walk.rb', line 18 def type_node?(node) = node.is_a?(Prism::ClassNode) || node.is_a?(Prism::ModuleNode) |