Class: Synvert::Rewriter::InsertAction

Inherits:
Rewriter::Action
  • Object
show all
Defined in:
lib/synvert/rewriter/action.rb

Instance Method Summary collapse

Instance Method Details

#insert_indent(node) ⇒ Object



40
41
42
43
44
45
46
# File 'lib/synvert/rewriter/action.rb', line 40

def insert_indent(node)
  if [:block, :class].include? node.type
    ' ' * (node.indent + 2)
  else
    ' ' * node.indent
  end
end

#insert_position(node) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/synvert/rewriter/action.rb', line 29

def insert_position(node)
  case node.type
  when :block
    node.children[1].loc.expression.end_pos
  when :class
    node.children[0].loc.expression.end_pos
  else
    node.children.last.loc.expression.end_pos
  end
end

#rewrite(source, node) ⇒ Object



24
25
26
27
# File 'lib/synvert/rewriter/action.rb', line 24

def rewrite(source, node)
  source[insert_position(node), 0] = "\n" + insert_indent(node) + node.to_source(@code)
  source
end