about summary refs log tree commit diff
path: root/src/text_diff.rs
diff options
context:
space:
mode:
authorMel <einebeere@gmail.com>2021-09-21 22:43:20 +0200
committerMel <einebeere@gmail.com>2021-09-21 22:43:20 +0200
commit4f954112b8c8cf266a8338cc86166f912c2da88c (patch)
treedee4e22a7b6cf8d49ae582e9104bf406c0bc9b3b /src/text_diff.rs
parentb86138b138565178b916b24d1e30d5786fd9d1c5 (diff)
downloadka-4f954112b8c8cf266a8338cc86166f912c2da88c.tar.zst
ka-4f954112b8c8cf266a8338cc86166f912c2da88c.zip
Byte differ
Diffstat (limited to 'src/text_diff.rs')
-rw-r--r--src/text_diff.rs52
1 files changed, 0 insertions, 52 deletions
diff --git a/src/text_diff.rs b/src/text_diff.rs
deleted file mode 100644
index bab8799..0000000
--- a/src/text_diff.rs
+++ /dev/null
@@ -1,52 +0,0 @@
-use difference::{Changeset, Difference};
-use serde::{Deserialize, Serialize};
-
-#[derive(Serialize, Deserialize, Debug)]
-pub enum TextChange {
-    Inserted { at: usize, new_content: String },
-    Deleted { at: usize, upto: usize },
-}
-
-impl TextChange {
-    pub fn diff(old: &str, new: &str) -> Vec<Self> {
-        let change_set = Changeset::new(old, new, "");
-
-        let mut changes = Vec::new();
-        let mut at: usize = 0;
-
-        for diff in change_set.diffs.iter() {
-            match diff {
-                Difference::Add(new_content) => {
-                    let change = TextChange::Inserted {
-                        at,
-                        new_content: new_content.to_owned(),
-                    };
-                    at += new_content.len();
-                    changes.push(change);
-                }
-                Difference::Rem(removed_content) => {
-                    changes.push(TextChange::Deleted {
-                        at,
-                        upto: removed_content.len(),
-                    });
-                }
-                Difference::Same(same_content) => {
-                    at += same_content.len();
-                }
-            }
-        }
-
-        changes
-    }
-
-    pub fn apply(&self, buffer: &mut String) {
-        match self {
-            TextChange::Deleted { at, upto } => {
-                buffer.replace_range(at..upto, "");
-            }
-            TextChange::Inserted { at, new_content } => {
-                buffer.insert_str(*at, new_content);
-            }
-        }
-    }
-}