class Haml::Parser

def next_line

def next_line
  line = @template.shift || raise(StopIteration)
  # `flat?' here is a little outdated,
  # so we have to manually check if either the previous or current line
  # closes the flat block, as well as whether a new block is opened.
  line_defined = instance_variable_defined?(:@line)
  @line.tabs if line_defined
  unless (flat? && !closes_flat?(line) && !closes_flat?(@line)) ||
      (line_defined && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s])
    return next_line if line.text.empty?
    handle_multiline(line)
  end
  @next_line = line
end