1#![warn(missing_docs)]
2#![expect(
3 clippy::indexing_slicing,
4 clippy::string_slice,
5 reason = "validated diff indexes and UTF-8 token boundaries are structural invariants"
6)]
7mod adapters;
15mod compute;
16mod display;
17mod format;
18mod intraline;
19mod layout;
20mod parse;
21mod types;
22
23pub use compute::compute_diff;
24pub use display::{count_diff_changes, display_lines_from_hunks, display_lines_from_unified_diff, side_by_side_rows};
25pub use format::{
26 diff_display_line_number_width, format_hunk_header, format_numbered_unified_diff, format_unified_diff,
27 format_unified_hunks,
28};
29pub use intraline::{annotate_word_level_diffs, compute_diff_chunks, word_level_changed_ranges};
30pub use layout::{bounded_display_lines, layout_display_lines};
31pub use types::*;
32
33#[cfg(feature = "ratatui")]
34pub use adapters::to_ratatui_lines;
35#[cfg(feature = "ansi")]
36pub use adapters::{AnsiDiffPalette, render_ansi_rows};
37
38#[cfg(test)]
39mod tests;