pub struct QualifiedCall {
pub path: String,
pub line: usize,
}
impl QualifiedCall {
pub fn new(path: &str, line: usize) -> Self {
Self {
path: path.to_string(),
line,
}
}
pub fn call(&self) -> String {
let segments = self.segments();
if segments.len() <= 2 {
return segments.last().copied().unwrap_or_default().to_string();
}
segments[segments.len() - 2..].join("::")
}
pub fn import(&self) -> String {
let segments = self.segments();
if segments.len() <= 2 {
return self.path.clone();
}
segments[..segments.len() - 1].join("::")
}
fn segments(&self) -> Vec<&str> {
self.path.split("::").collect()
}
}