genco_macros/
cursor.rs
use proc_macro2::Span;
use crate::fake::LineColumn;
#[derive(Clone, Copy, Debug)]
pub(crate) struct Cursor {
pub(crate) span: Span,
pub(crate) start: LineColumn,
pub(crate) end: LineColumn,
}
impl Cursor {
pub(crate) fn new(span: Span, start: LineColumn, end: LineColumn) -> Cursor {
Self { span, start, end }
}
pub(crate) fn first_character(self) -> Self {
Cursor {
span: self.span,
start: self.start,
end: LineColumn {
line: self.start.line,
column: self.start.column + 1,
},
}
}
pub(crate) fn last_character(self) -> Self {
Cursor {
span: self.span,
start: LineColumn {
line: self.end.line,
column: self.end.column.saturating_sub(1),
},
end: self.end,
}
}
}