class Byebug::InfoCommand::BreakpointsCommand


Information about current breakpoints

def self.description

def self.description
  <<-EOD
    inf[o] b[reakpoints]
    #{short_description}
  EOD
end

def self.regexp

def self.regexp
  /^\s* b(?:reakpoints)? (?:\s+ (.+))? \s*$/x
end

def self.short_description

def self.short_description
  'Status of user settable breakpoints'
end

def execute

def execute
  return puts('No breakpoints.') if Byebug.breakpoints.empty?
  breakpoints = Byebug.breakpoints.sort_by(&:id)
  if @match[1]
    indices = @match[1].split(/ +/).map(&:to_i)
    breakpoints = breakpoints.select { |b| indices.member?(b.id) }
    if breakpoints.empty?
      return errmsg('No breakpoints found among list given')
    end
  end
  puts 'Num Enb What'
  breakpoints.each { |b| info_breakpoint(b) }
end

def info_breakpoint(brkpt)

def info_breakpoint(brkpt)
  expr = brkpt.expr.nil? ? '' : " if #{brkpt.expr}"
  y_n = brkpt.enabled? ? 'y' : 'n'
  interp = format('%-3d %-3s at %s:%s%s',
                  brkpt.id, y_n, brkpt.source, brkpt.pos, expr)
  puts interp
  hits = brkpt.hit_count
  return unless hits > 0
  s = (hits > 1) ? 's' : ''
  puts "  breakpoint already hit #{hits} time#{s}"
end