Metadata-Version: 2.4
Name: diff2latex
Version: 0.1.0
Summary: Simple utility that produces diffs in a LaTeX format
Home-page: https://github.com/divadiahim/diff2latex
Author: divadiahim
Author-email: 
Maintainer: divadiahim
License: MIT
Project-URL: Homepage, https://github.com/divadiahim/diff2latex
Project-URL: Repository, https://github.com/divadiahim/diff2latex
Project-URL: Bug Reports, https://github.com/divadiahim/diff2latex/issues
Keywords: diff,latex,pdf,git,version-control,documentation
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Text Processing :: Markup :: LaTeX
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: click>=8.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: Pygments>=2.0.0
Requires-Dist: typing-extensions>=4.0.0
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: isort; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Dynamic: home-page
Dynamic: license-file
Dynamic: requires-python

# diff2latex

A simple utility that produces github-styled diffs in a synthesizable LaTeX format.

## Requirements

- `lualatex` for pdf generation (optional, only needed for PDF output)
- `python` 3.7+

## Installation

### From PyPI (recommended)

```sh
pip install diff2latex
```

### From source

1. Clone this repository
   ```sh
   git clone https://github.com/divadiahim/diff2latex.git
   cd diff2latex
   ```
2. Install dependencies and build the package
   ```sh
   pip install -r requirements.txt
   pip install -e .
   ```

## Usage

### Command Line Interface

- Grab 2 files that you want to diff and generate a plain diff `diff -u file_1 file_2 > example.diff`.
- To generate a LaTeX diff run `diff2latex --highlight="default" build example.diff output`. This will create a directory named `output` containing `example.tex`.
- To additionally generate a pdf pass the `--pdf-output` flag.

### Library Usage

You can also use diff2latex as a Python library for programmatic diff processing:

#### Simple Usage

```python
import diff2latex

# Convert diff content to LaTeX
diff_content = """--- old.py
+++ new.py
@@ -1,2 +1,2 @@
-print("Hello")
+print("Hello, World!")
"""

latex_output = diff2latex.diff_to_latex(
    diff_content,
    highlight_style="github",
    file_extension=".py"
)

# Save to file
with open("output.tex", "w") as f:
    f.write(latex_output)

# Or create PDF directly
diff2latex.create_diff_pdf(diff_content, "output.pdf", highlight_style="github")
```

#### Class-based Processing

```python
from diff2latex import DiffProcessor

# Create processor with default settings
processor = DiffProcessor(
    font_family="Monaco",
    highlight_style="monokai",
    file_extension=".cpp"
)

# Process multiple diffs with consistent styling
latex1 = processor.process(diff_content1)
latex2 = processor.process(diff_content2)

# Create PDFs
processor.create_pdf(diff_content1, "diff1.pdf")
processor.create_pdf(diff_content2, "diff2.pdf")
```

#### Advanced Usage

```python
from diff2latex import Diff2Latex, CharColorizer
from io import StringIO

# Use core classes directly
colorizer = CharColorizer(style_name="github", ext=".py")
diff_io = StringIO(diff_content)
differ = Diff2Latex.build(diff_io, colorizer=colorizer)
latex_lines = differ.to_latex()
```

#### Available Functions

- `diff2latex.diff_to_latex(content, **kwargs)` - Convert diff string to LaTeX
- `diff2latex.diff_file_to_latex(file_path, **kwargs)` - Convert diff file to LaTeX  
- `diff2latex.create_diff_pdf(content, output_path, **kwargs)` - Create PDF directly
- `diff2latex.DiffProcessor(**kwargs)` - Class-based processor for multiple diffs

#### Available Classes

All core classes are importable for advanced usage:
- `Diff2Latex` - Main diff processing class
- `CharColorizer` - Syntax highlighting
- `ColorMap` - Color mapping utilities
- `CodeBlock`, `Cell`, `Line` - Data models

See `examples.py` for more detailed usage examples.

## Development

### Setting up development environment

```sh
# Clone the repository
git clone https://github.com/divadiahim/diff2latex.git
cd diff2latex

# Run the development setup script
./setup_dev.sh

# Or manually:
pip install -e .
pip install -r requirements.txt
```

### Testing

Run the smoke tests to ensure everything works:

```sh
python test_package.py
```

### Publishing

1. Update the version in `diff2latex/__init__.py`
2. Build and check the package:
   ```sh
   ./publish.sh
   ```
3. Upload to PyPI:
   ```sh
   # Test on TestPyPI first (recommended)
   python -m twine upload --repository testpypi dist/*
   
   # Then upload to PyPI
   python -m twine upload dist/*
   ```

## TODOs

- [ ] Add a horizontal diff style.
- [ ] Add comprehensive unit tests
- [ ] Add GitHub Actions CI/CD
- [ ] Add documentation with examples
