class RSpec::Core::Formatters::DocumentationFormatter

@private

def current_indentation(offset=0)

def current_indentation(offset=0)
  '  ' * (@group_level + offset)
end

def example_failed(failure)

def example_failed(failure)
  output.puts failure_output(failure.example)
  flush_messages
  @example_running = false
end

def example_group_finished(_notification)

def example_group_finished(_notification)
  @group_level -= 1 if @group_level > 0
end

def example_group_started(notification)

def example_group_started(notification)
  output.puts if @group_level == 0
  output.puts "#{current_indentation}#{notification.group.description.strip}"
  @group_level += 1
end

def example_passed(passed)

def example_passed(passed)
  output.puts passed_output(passed.example)
  flush_messages
  @example_running = false
end

def example_pending(pending)

def example_pending(pending)
  output.puts pending_output(pending.example,
                             pending.example.execution_result.pending_message)
  flush_messages
  @example_running = false
end

def example_started(_notification)

def example_started(_notification)
  @example_running = true
end

def failure_output(example)

def failure_output(example)
  ConsoleCodes.wrap("#{current_indentation}#{example.description.strip} " \
                    "(FAILED - #{next_failure_index})",
                    :failure)
end

def flush_messages

def flush_messages
  @messages.each do |message|
    output.puts "#{current_indentation(1)}#{message}"
  end
  @messages.clear
end

def initialize(output)

def initialize(output)
  super
  @group_level = 0
  @example_running = false
  @messages = []
end

def message(notification)

def message(notification)
  if @example_running
    @messages << notification.message
  else
    output.puts "#{current_indentation}#{notification.message}"
  end
end

def next_failure_index

def next_failure_index
  @next_failure_index ||= 0
  @next_failure_index += 1
end

def passed_output(example)

def passed_output(example)
  ConsoleCodes.wrap("#{current_indentation}#{example.description.strip}", :success)
end

def pending_output(example, message)

def pending_output(example, message)
  ConsoleCodes.wrap("#{current_indentation}#{example.description.strip} " \
                    "(PENDING: #{message})",
                    :pending)
end