class Pry::Code::CodeRange

@api private
Represents a range of lines in a code listing.

def find_end_index(lines)

Returns:
  • (Integer) -
def find_end_index(lines)
  return end_line if end_line < 0
  (lines.index { |loc| loc.lineno > end_line } || 0) - 1
end

def find_start_index(lines)

Returns:
  • (Integer) -
def find_start_index(lines)
  return start_line if start_line < 0
  lines.index { |loc| loc.lineno >= start_line } || lines.length
end

def force_set_end_line

Returns:
  • (void) -
def force_set_end_line
  if start_line.is_a?(Range)
    set_end_line_from_range
  else
    @end_line ||= start_line
  end
end

def indices(lines)

Returns:
  • (Array) -

Parameters:
  • lines (Array) --
def indices(lines)
  [find_start_index(lines), find_end_index(lines)]
end

def indices_range(lines)

Returns:
  • (Range) -

Parameters:
  • lines (Array) --
def indices_range(lines)
  Range.new(*indices(lines))
end

def initialize(start_line, end_line = nil)

Parameters:
  • end_line (Integer?) --
  • start_line (Integer) --
def initialize(start_line, end_line = nil)
  @start_line = start_line
  @end_line   = end_line
  force_set_end_line
end

def set_end_line_from_range

Returns:
  • (void) -
def set_end_line_from_range
  @end_line = start_line.last
  @end_line -= 1 if start_line.exclude_end?
  @start_line = start_line.first
end