Class: GitAuto::Formatters::DiffFormatter

Inherits:
Object
  • Object
show all
Defined in:
lib/git_auto/formatters/diff_formatter.rb

Instance Method Summary collapse

Instance Method Details

#format(diff) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/git_auto/formatters/diff_formatter.rb', line 6

def format(diff)
  return "No changes" if diff.empty?

  formatted = []
  current_file = nil

  diff.each_line do |line|
    case line
    when /^diff --git/
      current_file = extract_file_name(line)
      formatted << "\nChanges in #{current_file}:"
    when /^index |^---|\+\+\+/
      next
    when /^@@ .* @@/
      formatted << format_hunk_header(line)
    when /^\+/
      formatted << "Added: #{line[1..].strip}"
    when /^-/
      formatted << "Removed: #{line[1..].strip}"
    when /^ /
      formatted << "Context: #{line.strip}" unless line.strip.empty?
    end
  end

  formatted.join("\n")
end