"""Utilities for generating and displaying code diffs."""
import difflib
from typing import Tuple
def generate_diff(original: str,
proposed: str,
filename: str = "file") -> str:
"""Generate unified diff between original and proposed content.
Args:
original: Original file content
proposed: Proposed file content
filename: Name of the file being diffed
Returns:
Unified diff as a string
"""
original_lines = original.splitlines(keepends=True)
proposed_lines = proposed.splitlines(keepends=True)
diff = difflib.unified_diff(
original_lines,
proposed_lines,
fromfile=f"{filename} (original)",
tofile=f"{filename} (proposed)",
lineterm=''
)
return ''.join(diff)
def colorize_diff(diff: str) -> str:
"""Add color to diff for terminal display using Rich.
Args:
diff: The diff string to colorize
Returns:
Colorized diff ready for terminal display
"""
from rich.console import Console
from rich.syntax import Syntax
console = Console()
syntax = Syntax(diff, "diff", theme="monokai", line_numbers=True)
# Return the rendered syntax
return syntax