use yansi::hyperlink::HyperlinkExt;
use crate::{message::Identifier, severity::Severity, style::Style};
pub fn identifier(text: &Identifier, severity: Option<&Severity>, style: &Style) -> String {
let mut result = String::new();
result.push(style.characters.lbox);
if let Some(url) = text.url() {
result.push_str(&text.as_str().link(url).to_string());
} else {
result.push_str(text.as_str());
}
result.push(style.characters.rbox);
if let Some(severity) = severity {
result = severity.colorize(&result);
}
result
}
#[cfg(test)]
mod tests {
use super::*;
use crate::severity::Severity;
#[test]
fn test_identifier() {
let text = Identifier::Simple("test".to_string());
let style = Style::default();
assert_eq!(identifier(&text, None, &style), "[test]");
assert_eq!(
identifier(&text, Some(&Severity::Error), &style),
"\u{1b}[31m[test]\u{1b}[0m"
);
}
}