use syn::Item;
use crate::source_file::SourceFile;
pub struct ItemNaming;
impl ItemNaming {
pub fn identifier(item: &Item) -> Option<String> {
match item {
Item::Const(inner) => Some(inner.ident.to_string()),
Item::Enum(inner) => Some(inner.ident.to_string()),
Item::Fn(inner) => Some(inner.sig.ident.to_string()),
Item::Mod(inner) => Some(inner.ident.to_string()),
Item::Static(inner) => Some(inner.ident.to_string()),
Item::Struct(inner) => Some(inner.ident.to_string()),
Item::Trait(inner) => Some(inner.ident.to_string()),
Item::Type(inner) => Some(inner.ident.to_string()),
Item::Union(inner) => Some(inner.ident.to_string()),
_ => None,
}
}
pub fn source_line(file: &SourceFile, line: usize) -> String {
file.lines()
.get(line.saturating_sub(1))
.map(|text| text.trim().to_string())
.unwrap_or_default()
}
}