1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
use std::fmt; use crate::range; use crate::range::Range; #[derive(Debug, Copy, Clone, PartialEq)] pub enum Action { Same = 0, Added, Deleted, Changed, } #[derive(Copy, Clone)] pub struct Token { pub range_a: Range, pub range_b: Range, pub action: Action, } pub fn new() -> Token { Token { range_a: range::new(), range_b: range::new(), action: Action::Same, } } pub fn with_ranges(range_a: Range, range_b: Range) -> Token { Token { range_a, range_b, action: Action::Same} } pub fn with_ranges_action(range_a: Range, range_b: Range, action: Action) -> Token { Token { range_a, range_b, action } } impl fmt::Display for Token { fn fmt(&self, f: &mut fmt::Formatter ) -> fmt::Result { write!(f, "[{:<10} - {:<10} : {:?}]", self.range_a, self.range_b, self.action) } } impl Token { pub fn dup(&self) -> Token { Token { range_a: self.range_a, range_b: self.range_b, action: self.action, } } }