xenon_codegen/
attribute.rs1use core::fmt;
2use std::fmt::Formatter;
3
4#[derive(Debug, Clone, Default)]
6pub struct Attribute {
7 pub name: String,
8 pub value: Option<String>,
9}
10impl Attribute {
11 pub fn new(name: &str) -> Attribute {
12 Attribute {
13 name: name.to_string(),
14 value: None,
15 }
16 }
17
18 pub fn is_valid(&self) -> bool {
19 self.name.is_empty()
20 }
21}
22impl std::fmt::Display for Attribute {
23 fn fmt(&self, fmt: &mut Formatter<'_>) -> fmt::Result {
24 match write!(fmt, "#[{}", self.name) {
25 Ok(_) => (),
26 Err(e) => return Err(e),
27 }
28 if self.value.is_some() {
29 match write!(fmt, "({})", self.value.as_ref().unwrap()) {
30 Ok(_) => (),
31 Err(e) => return Err(e),
32 }
33 }
34 match writeln!(fmt, "]") {
35 Ok(_) => (),
36 Err(e) => return Err(e),
37 }
38 Ok(())
39 }
40}