Module: Hamlit::Parsers::Multiline

Includes:
Concerns::LineReader
Included in:
Hamlit::Parser
Defined in:
lib/hamlit/parsers/multiline.rb

Instance Method Summary collapse

Methods included from Concerns::LineReader

#current_line, #empty_line?, #next_line, #read_lines, #reset_lines, #skip_lines

Instance Method Details

#preprocess_multilines(template) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/hamlit/parsers/multiline.rb', line 8

def preprocess_multilines(template)
  reset_lines(template.split("\n"))
  result = []

  while @lines[@current_lineno + 1]
    @current_lineno += 1

    unless end_with_pipe?(current_line)
      result << current_line
      next
    end

    prefix = current_line[/\A */]
    lines  = scan_multilines

    result << prefix + build_multiline(lines)
    (lines.length - 1).times { result << '' }
  end
  result.map { |line| "#{line}\n" }.join
end