Skip to content

Commit b02c1f3

Browse files
authored
Merge pull request #309 from gcanat/fix_change_enum
Simplify Change enum
2 parents 2132d42 + 405281f commit b02c1f3

File tree

3 files changed

+30
-88
lines changed

3 files changed

+30
-88
lines changed

text/diff_util/change.rs

Lines changed: 0 additions & 43 deletions
This file was deleted.

text/diff_util/hunks.rs

Lines changed: 30 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
use crate::diff_util::constants::NO_NEW_LINE_AT_END_OF_FILE;
22

3-
use super::{
4-
change::{Change, ChangeData},
5-
file_data::FileData,
6-
};
3+
use super::file_data::FileData;
4+
5+
#[derive(Clone, Default)]
6+
pub enum Change {
7+
#[default]
8+
None,
9+
Insert,
10+
Delete,
11+
Substitute,
12+
}
713

814
#[derive(Clone)]
915
pub struct Hunk {
1016
pub kind: Change,
11-
pub changes: Vec<Change>,
1217
pub ln2_start: usize,
1318
pub ln1_start: usize,
1419
pub ln2_end: usize,
@@ -19,7 +24,6 @@ impl Default for Hunk {
1924
fn default() -> Self {
2025
Self {
2126
kind: Default::default(),
22-
changes: Default::default(),
2327
ln2_start: usize::MAX,
2428
ln1_start: usize::MAX,
2529
ln2_end: usize::MIN,
@@ -72,15 +76,14 @@ impl Hunk {
7276
pub fn print_default(&mut self, file1: &FileData, file2: &FileData, is_last: bool) {
7377
match self.kind {
7478
Change::None => {}
75-
Change::Unchanged(_) => {}
76-
Change::Insert(_) => {
79+
Change::Insert => {
7780
println!("{}a{}", self.ln1_start, self.f2_range(true));
7881

7982
for i in self.ln2_start..self.ln2_end {
8083
println!("> {}", file2.line(i));
8184
}
8285
}
83-
Change::Delete(_) => {
86+
Change::Delete => {
8487
println!("{}d{}", self.f1_range(true), self.ln2_end);
8588

8689
for i in self.ln1_start..self.ln1_end {
@@ -91,7 +94,7 @@ impl Hunk {
9194
println!("{}", NO_NEW_LINE_AT_END_OF_FILE);
9295
}
9396
}
94-
Change::Substitute(_) => {
97+
Change::Substitute => {
9598
println!("{}c{}", self.f1_range(true), self.f2_range(true));
9699

97100
for i in self.ln1_start..self.ln1_end {
@@ -127,37 +130,22 @@ impl Hunk {
127130

128131
match &self.kind {
129132
Change::None => {}
130-
Change::Unchanged(_) => {
131-
self.changes.sort_by_key(|change| change.get_ln1());
132-
133-
for change in &self.changes {
134-
println!("{:?} \"{}\"", change, file1.line(change.get_ln1() - 1));
133+
Change::Insert => {
134+
for i in self.ln2_start..self.ln2_end {
135+
println!("+ \"{}\"", file2.line(i));
135136
}
136137
}
137-
Change::Insert(_) => {
138-
self.changes.sort_by_key(|change| change.get_ln2());
139-
140-
for change in &self.changes {
141-
println!("{:?} \"{}\"", change, file2.line(change.get_ln2() - 1));
138+
Change::Delete => {
139+
for i in self.ln1_start..self.ln1_end {
140+
println!("- \"{}\"", file1.line(i));
142141
}
143142
}
144-
Change::Delete(_) => {
145-
self.changes.sort_by_key(|change| change.get_ln1());
146-
147-
for change in &self.changes {
148-
println!("{:?} \"{}\"", change, file1.line(change.get_ln1() - 1));
143+
Change::Substitute => {
144+
for i in self.ln1_start..self.ln1_end {
145+
println!("- \"{}\"", file1.line(i));
149146
}
150-
}
151-
Change::Substitute(_) => {
152-
self.changes.sort_by_key(|change| change.get_ln2());
153-
154-
for change in &self.changes {
155-
println!(
156-
"{:?} \"{}\" => \"{}\"",
157-
change,
158-
file1.line(change.get_ln1() - 1),
159-
file2.line(change.get_ln2() - 1)
160-
);
147+
for i in self.ln2_start..self.ln2_end {
148+
println!("+ \"{}\"", file2.line(i));
161149
}
162150
}
163151
}
@@ -166,19 +154,18 @@ impl Hunk {
166154
pub fn print_edit_script(&mut self, file1: &FileData, file2: &FileData, is_last: bool) {
167155
match &self.kind {
168156
Change::None => {}
169-
Change::Unchanged(_) => {}
170-
Change::Insert(_) => {
157+
Change::Insert => {
171158
println!("{}a", self.ln1_end);
172159
for i in self.ln2_start..self.ln2_end {
173160
println!("{}", file2.line(i));
174161
}
175162

176163
println!(".")
177164
}
178-
Change::Delete(_) => {
165+
Change::Delete => {
179166
println!("{}d", self.f1_range(true));
180167
}
181-
Change::Substitute(_) => {
168+
Change::Substitute => {
182169
println!("{}c", self.f1_range(true));
183170
for i in self.ln2_start..self.ln2_end {
184171
println!("{}", file2.line(i));
@@ -302,15 +289,14 @@ impl Hunks {
302289
) {
303290
let kind: Change;
304291
if hunk_start1 == hunk_end1 {
305-
kind = Change::Insert(ChangeData::new(hunk_start1, hunk_start2));
292+
kind = Change::Insert;
306293
} else if hunk_start2 == hunk_end2 {
307-
kind = Change::Delete(ChangeData::new(hunk_start1, hunk_start2));
294+
kind = Change::Delete;
308295
} else {
309-
kind = Change::Substitute(ChangeData::new(hunk_start1, hunk_start2));
296+
kind = Change::Substitute;
310297
}
311298
self.hunks.push(Hunk {
312299
kind,
313-
changes: vec![Change::default()],
314300
ln2_start: hunk_start2,
315301
ln1_start: hunk_start1,
316302
ln2_end: hunk_end2,

text/diff_util/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
pub(crate) mod change;
21
pub(crate) mod common;
32
pub(crate) mod constants;
43
pub(crate) mod diff_exit_status;

0 commit comments

Comments
 (0)