Class: Canon::DiffFormatter::PrettyDiffFormatter
- Inherits:
-
Object
- Object
- Canon::DiffFormatter::PrettyDiffFormatter
- Defined in:
- lib/canon/diff_formatter/pretty_diff_formatter.rb
Overview
Handles the pretty_diff rendering pipeline for text-LCS diffs.
Bypasses DiffNodeMapper entirely — runs Diff::LCS.sdiff on plain-text lines and renders with context windowing and colorization.
Instance Method Summary collapse
-
#format(doc1, doc2, format:) ⇒ String
Format a text-LCS diff between two documents.
-
#initialize(use_color:, context_lines:) ⇒ PrettyDiffFormatter
constructor
A new instance of PrettyDiffFormatter.
Constructor Details
#initialize(use_color:, context_lines:) ⇒ PrettyDiffFormatter
Returns a new instance of PrettyDiffFormatter.
13 14 15 16 |
# File 'lib/canon/diff_formatter/pretty_diff_formatter.rb', line 13 def initialize(use_color:, context_lines:) @use_color = use_color @context_lines = context_lines end |
Instance Method Details
#format(doc1, doc2, format:) ⇒ String
Format a text-LCS diff between two documents.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/canon/diff_formatter/pretty_diff_formatter.rb', line 24 def format(doc1, doc2, format:) format_name = format.to_s.upcase output = [] output << colorize("Pretty diff (#{format_name} mode):", :cyan, :bold) return output.join("\n") if doc1.nil? || doc2.nil? lines1 = doc1.lines.map(&:chomp) lines2 = doc2.lines.map(&:chomp) hunks = ::Diff::LCS.sdiff(lines1, lines2) output << render_pretty_diff(hunks) output.join("\n") end |