#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TextDeltaEdit {
pub start: usize,
pub deleted_text: String,
pub inserted_text: String,
}
impl TextDeltaEdit {
pub fn deleted_len(&self) -> usize {
self.deleted_text.chars().count()
}
pub fn inserted_len(&self) -> usize {
self.inserted_text.chars().count()
}
pub fn end(&self) -> usize {
self.start.saturating_add(self.deleted_len())
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct TextDelta {
pub before_char_count: usize,
pub after_char_count: usize,
pub edits: Vec<TextDeltaEdit>,
pub undo_group_id: Option<usize>,
}
impl TextDelta {
pub fn is_empty(&self) -> bool {
self.edits.is_empty()
}
}