class Pry::Command::AmendLine

def amended_input(string)

Returns:
  • (String) - A new string with the amendments applied to it.

Parameters:
  • string (String) -- The string to amend.
def amended_input(string)
  input_array = eval_string.each_line.to_a
  if arg_string == "!"
    delete_from_array(input_array, line_range)
  elsif arg_string.start_with?(">")
    insert_into_array(input_array, line_range)
  else
    replace_in_array(input_array, line_range)
  end
  input_array.join
end

def delete_from_array(array, range)

def delete_from_array(array, range)
  array.slice!(range)
end

def insert_into_array(array, range)

def insert_into_array(array, range)
  insert_slot = Array(range).first
  array.insert(insert_slot, arg_string[1..-1] + "\n")
end

def line_count

Returns:
  • (Fixnum) - The number of lines currently in `eval_string` (the input buffer).
def line_count
  eval_string.lines.count
end

def line_range

Returns:
  • (Range, Fixnum) - The lines or line.
def line_range
  start_line_number, end_line_number = start_and_end_line_number
  if start_line_number
    zero_indexed_range_from_one_indexed_numbers(start_line_number,
                                                end_line_number)
  else
    line_count - 1
  end
end

def process

def process
  raise CommandError, "No input to amend." if eval_string.empty?
  eval_string.replace amended_input(eval_string)
  run "fix-indent"
  run "show-input"
end

def replace_in_array(array, range)

def replace_in_array(array, range)
  array[range] = arg_string + "\n"
end

def start_and_end_line_number

Returns:
  • (Array, nil) -
def start_and_end_line_number
  start_line_number, end_line_number = args
  end_line_number ||= start_line_number.to_i
  [start_line_number.to_i, end_line_number.to_i] if start_line_number
end

def zero_indexed_range_from_one_indexed_numbers(start_line_number, end_line_number)

Returns:
  • (Range) - The zero-indexed range.

Parameters:
  • end_line_number (Fixnum) -- One-indexed number.
  • start_line_number (Fixnum) -- One-indexed number.
def zero_indexed_range_from_one_indexed_numbers(start_line_number, end_line_number)
  # FIXME: one_index_number is a horrible name for this method
  one_index_number(start_line_number)..one_index_number(end_line_number)
end