use cairo_lang_filesystem::span::{TextPosition, TextPositionSpan};
use lsp_types::{Position, Range};
pub trait ToLsp {
type Output;
fn to_lsp(&self) -> Self::Output;
}
impl ToLsp for TextPosition {
type Output = Position;
fn to_lsp(&self) -> Self::Output {
Position { line: self.line as u32, character: self.col as u32 }
}
}
impl ToLsp for TextPositionSpan {
type Output = Range;
fn to_lsp(&self) -> Self::Output {
Range { start: self.start.to_lsp(), end: self.end.to_lsp() }
}
}
pub trait ToCairo {
type Output;
fn to_cairo(&self) -> Self::Output;
}
impl ToCairo for Position {
type Output = TextPosition;
fn to_cairo(&self) -> Self::Output {
TextPosition { line: self.line as usize, col: self.character as usize }
}
}
impl ToCairo for Range {
type Output = TextPositionSpan;
fn to_cairo(&self) -> Self::Output {
TextPositionSpan { start: self.start.to_cairo(), end: self.end.to_cairo() }
}
}