Skip to main content

java_diff_utils_rs/algorithm/
change.rs

1//! Delta representation of sequence modifications.
2
3pub use crate::patch::delta_type::DeltaType;
4
5/// Modified region between an original and target sequence.
6#[derive(Debug, Clone, Copy, PartialEq, Eq)]
7pub struct Change {
8    pub delta_type: DeltaType,
9    pub start_original: usize,
10    pub end_original: usize,
11    pub start_revised: usize,
12    pub end_revised: usize,
13}
14
15impl Change {
16    pub fn new(
17        delta_type: DeltaType,
18        start_original: usize,
19        end_original: usize,
20        start_revised: usize,
21        end_revised: usize,
22    ) -> Self {
23        debug_assert!(start_original <= end_original);
24        debug_assert!(start_revised <= end_revised);
25
26        Self {
27            delta_type,
28            start_original,
29            end_original,
30            start_revised,
31            end_revised,
32        }
33    }
34
35    pub fn original_len(&self) -> usize {
36        self.end_original - self.start_original
37    }
38
39    pub fn revised_len(&self) -> usize {
40        self.end_revised - self.start_revised
41    }
42
43    pub fn is_empty(&self) -> bool {
44        self.start_original == self.end_original && self.start_revised == self.end_revised
45    }
46}