class SimpleCovJSONFormatter::SourceFileFormatter

def branch_coverage

def branch_coverage
  {
    branches: branches
  }
end

def branches

def branches
  branches = []
  @source_file.branches.each do |branch|
    branches << parse_branch(branch)
  end
  branches
end

def format

def format
  if SimpleCov.branch_coverage?
    line_coverage.merge(branch_coverage)
  else
    line_coverage
  end
end

def initialize(source_file)

def initialize(source_file)
  @source_file = source_file
  @line_coverage = nil
end

def line_coverage

def line_coverage
  @line_coverage ||= {
    lines: lines
  }
end

def lines

def lines
  lines = []
  @source_file.lines.each do |line|
    lines << parse_line(line)
  end
  lines
end

def parse_branch(branch)

def parse_branch(branch)
  {
    type: branch.type,
    start_line: branch.start_line,
    end_line: branch.end_line,
    coverage: parse_line(branch)
  }
end

def parse_line(line)

def parse_line(line)
  return line.coverage unless line.skipped?
  'ignored'
end