Module: Hashira::Analysis::Syntax

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

Class Method Summary collapse

Class Method Details

.direct_definitions(type_node) ⇒ Object



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

def direct_definitions(type_node)
  body = type_node.body
  statements = body.is_a?(Prism::StatementsNode) ? body.body : [body]
  statements.grep(Prism::DefNode)
end

.name_of(node) ⇒ Object



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

def name_of(node) = [node.name.to_s]

.path_segments(node) ⇒ Object



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

def path_segments(node)
  case node
  when Prism::ConstantReadNode then [node.name.to_s]
  when Prism::ConstantPathNode then path_segments(node.parent) + name_of(node)
  else []
  end
end