use std::path::PathBuf;
use crate::models::Visibility;
#[derive(Debug, Clone)]
pub struct Constant {
pub name: String,
pub value: String,
pub file: PathBuf,
pub line: u32,
pub column: u32,
pub type_annotation: Option<String>,
pub visibility: Visibility,
pub is_static: bool,
pub is_mut: bool,
}
impl Constant {
pub fn new(name: String, value: String, file: PathBuf, line: u32) -> Self {
Self {
name,
value,
file,
line,
column: 0,
type_annotation: None,
visibility: Visibility::Private,
is_static: false,
is_mut: false,
}
}
pub fn with_visibility(mut self, visibility: Visibility) -> Self {
self.visibility = visibility;
self
}
pub fn as_static(mut self) -> Self {
self.is_static = true;
self
}
pub fn as_mut(mut self) -> Self {
self.is_mut = true;
self
}
pub fn is_public(&self) -> bool {
matches!(self.visibility, Visibility::Public | Visibility::PubCrate)
}
}