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 reverse;
22mod types;
23
24pub use compute::compute_diff;
25pub use display::{count_diff_changes, display_lines_from_hunks, display_lines_from_unified_diff, side_by_side_rows};
26pub use format::{
27 diff_display_line_number_width, format_hunk_header, format_numbered_unified_diff, format_unified_diff,
28 format_unified_hunks,
29};
30pub use intraline::{annotate_word_level_diffs, compute_diff_chunks, word_level_changed_ranges};
31pub use layout::{bounded_display_lines, layout_display_lines};
32pub use reverse::{MAX_REVERSE_FILE_BYTES, ReverseApplyError, UnifiedFile, reverse_apply_hunks, split_unified_files};
33pub use types::*;
34
35#[cfg(feature = "ratatui")]
36pub use adapters::to_ratatui_lines;
37#[cfg(feature = "ansi")]
38pub use adapters::{AnsiDiffPalette, render_ansi_rows};
39
40#[cfg(test)]
41mod tests;