Method: Primer::Forms::BufferRewriter.rewrite

Defined in:
app/lib/primer/forms/buffer_rewriter.rb

.rewrite(code) ⇒ Object


10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'app/lib/primer/forms/buffer_rewriter.rb', line 10

def rewrite(code)
  parser = new(code, "(code)", 0)
  parser.parse

  line_offsets = calc_line_offsets(code)

  code.dup.tap do |result|
    parser.var_refs.reverse_each do |lineno, stop|
      line_offset = line_offsets[lineno]
      stop += line_offset
      stop -= 1 if stop < code.length
      start = stop - "@output_buffer".length
      result[start...stop] = "output_buffer"
    end
  end
end