class MetaCommit::Models::Line

Attributes

content_offset[RW]
line_origin[RW]
new_lineno[RW]
old_lineno[RW]

Public Instance Methods

compute_column(old_file_content, new_file_content) click to toggle source

Compares old_lineno line of old_file_content and new_lineno of new_file_content @param [String] old_file_content @param [String] new_file_content @return [Numeric, Nil] index of first different symbol in string

# File lib/meta_commit/models/line.rb, line 9
def compute_column(old_file_content, new_file_content)
  return if old_file_content.empty? || new_file_content.empty?
  return if old_lineno == -1 || new_lineno == -1

  old_file_lines = old_file_content.lines.map(&:chomp)
  old_file_lines = old_file_lines.push('') if old_file_content.end_with?("\n")
  old_line = old_file_lines[old_lineno - 1]

  new_file_lines = new_file_content.lines.map(&:chomp)
  new_file_lines = new_file_lines.push('') if new_file_content.end_with?("\n")
  new_line = new_file_lines[new_lineno - 1]

  return if old_line.empty? || new_line.empty?

  old_line.each_char.with_index do |char, index|
    return index if (char != new_line[index])
  end

  old_line.length
end