present 0.2.3

Interpolate the standard output of arbitrary shell scripts into your markdown files
Documentation
use crate::{common::*, Diff};

pub(crate) trait RopeExt {
  fn apply(&mut self, diff: Diff);
  fn simulate(&self, diff: Diff) -> Rope;
}

impl RopeExt for Rope {
  fn apply(&mut self, diff: Diff) {
    let start = self.byte_to_char(diff.range.start);
    let end = self.byte_to_char(diff.range.end);
    self.remove(start..end);
    self.insert(start, &diff.content);
  }

  fn simulate(&self, diff: Diff) -> Rope {
    let mut clone = self.clone();
    let start = clone.byte_to_char(diff.range.start);
    let end = clone.byte_to_char(diff.range.end);
    clone.remove(start..end);
    clone.insert(start, &diff.content);
    clone
  }
}