teo_parser/traits/
info_provider.rs1use crate::traits::has_availability::HasAvailability;
2use crate::traits::identifiable::Identifiable;
3use crate::traits::named_identifiable::NamedIdentifiable;
4
5pub trait InfoProvider: Identifiable + NamedIdentifiable + HasAvailability {
6
7 fn namespace_skip(&self) -> usize;
8
9 fn namespace_str_path(&self) -> Vec<&str> {
10 self.string_path().iter().rev().skip(self.namespace_skip()).rev().map(AsRef::as_ref).collect()
11 }
12
13 fn namespace_string_path(&self) -> Vec<String> {
14 self.string_path().iter().rev().skip(self.namespace_skip()).rev().map(|s| s.to_owned()).collect()
15 }
16
17 fn namespace_path(&self) -> Vec<usize> {
18 self.path().iter().rev().skip(self.namespace_skip()).rev().map(|u| *u).collect()
19 }
20}