Module: Orbacle::AstUtils

Included in:
Builder, FindCallUnderPosition, FindDefinitionUnderPosition
Defined in:
lib/orbacle/ast_utils.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.const_prename_and_name_to_string(prename_ast, name_ast) ⇒ Object



9
10
11
# File 'lib/orbacle/ast_utils.rb', line 9

def self.const_prename_and_name_to_string(prename_ast, name_ast)
  (prename(prename_ast) + [name_ast.to_s]).compact.join("::")
end

.const_to_string(const_ast) ⇒ Object



5
6
7
# File 'lib/orbacle/ast_utils.rb', line 5

def self.const_to_string(const_ast)
  get_nesting(const_ast).flatten.join("::")
end

.get_nesting(ast_const) ⇒ Object



13
14
15
# File 'lib/orbacle/ast_utils.rb', line 13

def self.get_nesting(ast_const)
  [prename(ast_const.children[0]), ast_const.children[1].to_s]
end

.prename(ast_const) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/orbacle/ast_utils.rb', line 17

def self.prename(ast_const)
  if ast_const.nil?
    []
  else
    prename(ast_const.children[0]) + [ast_const.children[1].to_s]
  end
end

Instance Method Details

#build_position_range_from_ast(ast) ⇒ Object



25
26
27
# File 'lib/orbacle/ast_utils.rb', line 25

def build_position_range_from_ast(ast)
  build_position_range_from_parser_range(ast.loc.expression)
end

#build_position_range_from_parser_range(parser_range) ⇒ Object



29
30
31
32
33
# File 'lib/orbacle/ast_utils.rb', line 29

def build_position_range_from_parser_range(parser_range)
  PositionRange.new(
    Position.new(parser_range.begin.line - 1, parser_range.begin.column),
    Position.new(parser_range.end.line - 1, parser_range.end.column - 1))
end