use core::ops::Range;
use crate::*;
#[derive(Clone, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "encode", derive(serde::Serialize, serde::Deserialize))]
pub struct Text {
pub(crate) inserted_by: ReplicaId,
pub(crate) range: Range<Length>,
}
impl core::fmt::Debug for Text {
fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
write!(f, "{:x}.{:?}", self.inserted_by, self.range)
}
}
impl Text {
#[inline]
pub(crate) fn end(&self) -> Length {
self.range.end
}
#[inline]
pub fn inserted_by(&self) -> ReplicaId {
self.inserted_by
}
#[inline]
pub(crate) fn len(&self) -> Length {
self.range.len()
}
#[inline]
pub(crate) fn new(inserted_by: ReplicaId, range: Range<Length>) -> Self {
Self { inserted_by, range }
}
#[inline]
pub(crate) fn start(&self) -> Length {
self.range.start
}
#[inline]
pub fn temporal_range(&self) -> Range<Length> {
self.range.clone()
}
}